[{"id":37555,"web_url":"https://patchwork.libcamera.org/comment/37555/","msgid":"<aWTBAp9yDodHdJH1@zed>","date":"2026-01-12T09:39:12","subject":"Re: [PATCH v4 01/22] libcamera: controls: Strings are arrays","submitter":{"id":143,"url":"https://patchwork.libcamera.org/api/people/143/","name":"Jacopo Mondi","email":"jacopo.mondi@ideasonboard.com"},"content":"Hi Barnabas,\n\nOn Tue, Jan 06, 2026 at 05:57:33PM +0100, Barnabás Pőcze wrote:\n> `ControlId::isArray()` and `ControlValue::isArray()` disagree\n> in the case of strings. Fix it by setting the static size of a\n> string to `libcamera::dynamic_extent` to denote a dynamically\n> sized array-like value.\n>\n> One unfortunate side effect of this change is that if there were\n> string controls (there are none at the moment), then `cam` would\n> display them with an extra `Size: n` annotation.\n>\n> Closes: https://gitlab.freedesktop.org/camera/libcamera/-/issues/255\n> Signed-off-by: Barnabás Pőcze <barnabas.pocze@ideasonboard.com>\n> Reviewed-by: Jacopo Mondi <jacopo.mondi@ideasonboard.com>\n> Reviewed-by: Isaac Scott <isaac.scott@ideasonboard.com>\n> Reviewed-by: Paul Elder <paul.elder@ideasonboard.com>\n\nUnfortunately, I think this is still controversial (I don't think we\nreached a conclusion, did we ?)\n\nIs this necessary for this series ? Can it be broken out to avoid\ndelaying the whole series on this discussion item ?\n\nThanks\n  j\n\n> ---\n>  include/libcamera/controls.h | 2 +-\n>  1 file changed, 1 insertion(+), 1 deletion(-)\n>\n> diff --git a/include/libcamera/controls.h b/include/libcamera/controls.h\n> index 44ff49647..e35dd7376 100644\n> --- a/include/libcamera/controls.h\n> +++ b/include/libcamera/controls.h\n> @@ -98,7 +98,7 @@ struct control_type<float> {\n>  template<>\n>  struct control_type<std::string_view> {\n>  \tstatic constexpr ControlType value = ControlTypeString;\n> -\tstatic constexpr std::size_t size = 0;\n> +\tstatic constexpr std::size_t size = libcamera::dynamic_extent;\n>  };\n>\n>  template<>\n> --\n> 2.52.0\n>","headers":{"Return-Path":"<libcamera-devel-bounces@lists.libcamera.org>","X-Original-To":"parsemail@patchwork.libcamera.org","Delivered-To":"parsemail@patchwork.libcamera.org","Received":["from lancelot.ideasonboard.com (lancelot.ideasonboard.com\n\t[92.243.16.209])\n\tby patchwork.libcamera.org (Postfix) with ESMTPS id AA052BE08B\n\tfor <parsemail@patchwork.libcamera.org>;\n\tMon, 12 Jan 2026 09:39:19 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id A3D5F61FC1;\n\tMon, 12 Jan 2026 10:39:18 +0100 (CET)","from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[213.167.242.64])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 97CCD61F9F\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tMon, 12 Jan 2026 10:39:16 +0100 (CET)","from ideasonboard.com (net-93-65-100-155.cust.vodafonedsl.it\n\t[93.65.100.155])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id 170A62E0;\n\tMon, 12 Jan 2026 10:38:51 +0100 (CET)"],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (1024-bit key;\n\tunprotected) header.d=ideasonboard.com header.i=@ideasonboard.com\n\theader.b=\"qYKLFvFa\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1768210731;\n\tbh=aGIsz/z+VaIKlaWWvMRiPTo5rOl2x2BquXG/bA8Ja94=;\n\th=Date:From:To:Cc:Subject:References:In-Reply-To:From;\n\tb=qYKLFvFaBCsxD3EFnNf2OW4qO4rHRdCW6Gv86AmE86YeaYqPJX49DRCbHSXg9wgLr\n\ti164YTCnQV/Z7BlIFvGkFRIvf+BTYl29+gzS06yLXUXOCe3HHnfsVh9WhNikpSlkZC\n\tqDE2787zTF2onVwO+bzsijtOQWX5qDf7K9x2fH/g=","Date":"Mon, 12 Jan 2026 10:39:12 +0100","From":"Jacopo Mondi <jacopo.mondi@ideasonboard.com>","To":"=?utf-8?q?Barnab=C3=A1s_P=C5=91cze?= <barnabas.pocze@ideasonboard.com>","Cc":"libcamera-devel@lists.libcamera.org, \n\tJacopo Mondi <jacopo.mondi@ideasonboard.com>,\n\tIsaac Scott <isaac.scott@ideasonboard.com>, \n\tPaul Elder <paul.elder@ideasonboard.com>","Subject":"Re: [PATCH v4 01/22] libcamera: controls: Strings are arrays","Message-ID":"<aWTBAp9yDodHdJH1@zed>","References":"<20260106165754.1759831-1-barnabas.pocze@ideasonboard.com>\n\t<20260106165754.1759831-2-barnabas.pocze@ideasonboard.com>","MIME-Version":"1.0","Content-Type":"text/plain; charset=utf-8","Content-Disposition":"inline","Content-Transfer-Encoding":"8bit","In-Reply-To":"<20260106165754.1759831-2-barnabas.pocze@ideasonboard.com>","X-BeenThere":"libcamera-devel@lists.libcamera.org","X-Mailman-Version":"2.1.29","Precedence":"list","List-Id":"<libcamera-devel.lists.libcamera.org>","List-Unsubscribe":"<https://lists.libcamera.org/options/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=unsubscribe>","List-Archive":"<https://lists.libcamera.org/pipermail/libcamera-devel/>","List-Post":"<mailto:libcamera-devel@lists.libcamera.org>","List-Help":"<mailto:libcamera-devel-request@lists.libcamera.org?subject=help>","List-Subscribe":"<https://lists.libcamera.org/listinfo/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=subscribe>","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}}]