All of lore.kernel.org
 help / color / mirror / Atom feed
* [meta-multimedia][PATCH] libcamera: Update the patch to upstreamed one
@ 2021-03-28 19:49 Khem Raj
  0 siblings, 0 replies; only message in thread
From: Khem Raj @ 2021-03-28 19:49 UTC (permalink / raw)
  To: openembedded-devel; +Cc: Khem Raj

Signed-off-by: Khem Raj <raj.khem@gmail.com>
---
 ...o-variable-to-avoid-range-loop-warni.patch | 155 +++++++++++++-----
 1 file changed, 117 insertions(+), 38 deletions(-)

diff --git a/meta-multimedia/recipes-multimedia/libcamera/libcamera/0001-uvcvideo-Use-auto-variable-to-avoid-range-loop-warni.patch b/meta-multimedia/recipes-multimedia/libcamera/libcamera/0001-uvcvideo-Use-auto-variable-to-avoid-range-loop-warni.patch
index 4ca412c695..86e469bf7e 100644
--- a/meta-multimedia/recipes-multimedia/libcamera/libcamera/0001-uvcvideo-Use-auto-variable-to-avoid-range-loop-warni.patch
+++ b/meta-multimedia/recipes-multimedia/libcamera/libcamera/0001-uvcvideo-Use-auto-variable-to-avoid-range-loop-warni.patch
@@ -1,38 +1,117 @@
-From 767267ef69c001870d41caf9c60dd7fec89b0a13 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Wed, 3 Mar 2021 15:11:46 -0800
-Subject: [PATCH] uvcvideo: Use auto variable to avoid range loop warnings
-
-With c++17 loop range bases are defined where copy is obvious since
-iterator returns a copy and not reference, gcc11 will emit a warning
-about this
-
-uvcvideo.cpp:432:33: error: loop variable 'name' of type 'const string&' {aka 'const std::__cxx11::basic_string<cha
-r>&'} binds to a temporary constructed from type 'const char* const' [-Werror=range-loop-construct]
-|   432 |         for (const std::string &name : { "idVendor", "idProduct" }) {
-|       |                                 ^~~~
-
-Therefore making it explicit is better
-
-Upstream-Status: Submitted [https://lists.libcamera.org/pipermail/libcamera-devel/2021-March/017966.html]
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- src/libcamera/pipeline/uvcvideo/uvcvideo.cpp | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/src/libcamera/pipeline/uvcvideo/uvcvideo.cpp b/src/libcamera/pipeline/uvcvideo/uvcvideo.cpp
-index 031f96e2..ef23ece7 100644
---- a/src/libcamera/pipeline/uvcvideo/uvcvideo.cpp
-+++ b/src/libcamera/pipeline/uvcvideo/uvcvideo.cpp
-@@ -429,7 +429,7 @@ std::string PipelineHandlerUVC::generateId(const UVCCameraData *data)
- 
- 	/* Creata a device ID from the USB devices vendor and product ID. */
- 	std::string deviceId;
--	for (const std::string &name : { "idVendor", "idProduct" }) {
-+	for (const auto name : { "idVendor", "idProduct" }) {
- 		std::ifstream file(path + "/../" + name);
- 
- 		if (!file.is_open())
--- 
-2.30.1
-
+Delivered-To: raj.khem@gmail.com
+Received: by 2002:a05:620a:20d3:0:0:0:0 with SMTP id f19csp2716715qka;
+        Sat, 27 Mar 2021 19:58:30 -0700 (PDT)
+X-Google-Smtp-Source: ABdhPJwyDnjZqZmFqHVShb/5/RoVkJ4Avv5bcnyuo85vIRR2vJDQF+QBZpQpEWHgx5GuEuwLVSC+
+X-Received: by 2002:a05:6512:22d0:: with SMTP id g16mr12125441lfu.650.1616900310724;
+        Sat, 27 Mar 2021 19:58:30 -0700 (PDT)
+ARC-Seal: i=1; a=rsa-sha256; t=1616900310; cv=none;
+        d=google.com; s=arc-20160816;
+        b=bZlu68tossyE2YcGkt0HzIhqTUroWDT/EgJvAiQBgZ6bPzMJ+wjwWp3LzViqOxiRPQ
+         r0cFyme7CJ9YRf2TLmpjGuv2RPQ+EkrtFdlB7i65nhDrwvBoxt78vF2tUoDgVLL1YrU9
+         wKgHPtBjtDcDveOXKQJH2j5HRwiBjCXlPRBhlSxV8kJPBj//dRaKm0MsxfiW/IgyN1tZ
+         FFxfe4Lk1Awm8ZKAklhdKMly3MFA6IbnjwNcN/84a0R/0+PLu9X8XIR6+CnrfqSgWOBx
+         zsV8p3HuVQTpX7Hhnkiz7PYudHsJJ/7KXeXTP6s9NNnZGu9A6U/E6VOob5BSm9DDIA5z
+         4AnA==
+ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816;
+        h=content-transfer-encoding:mime-version:message-id:date:subject:cc
+         :to:from:dkim-signature;
+        bh=fbAn+wsNks5BGTY34H4T90NDFJaNV4nnt9vc9DBFaWQ=;
+        b=mLZNiQR/CdgcVTAc7OQmK0ZYTVpofG/EOqTIi2NYIYFhanWhatYY9Hx2xwxIp6kQ5R
+         n0uXh5tLth6aPYD09z3YcXYasEIszBKwoNUFjRA85lFm3d5/J2S1wC5rBy25QeCDOg57
+         QdzYrTBX2QGRHGQKauEnX5FLDTT+I53sPa87TyvxUKBS+lTAbJig70KfmL7FJIEWT1ZI
+         CZKCErYFlQTGNnwM0CYVXyHv54D2tA25veHQIJN8KK+XObNWuAY3rYpqKoUpOP4vpSPi
+         MXJWAV4L6NZEShWvwJiC4Zdy2xFzXASX27CAKIsX6T5Rub03grVTg6WVt9bChK1x5jeg
+         A2Yw==
+ARC-Authentication-Results: i=1; mx.google.com;
+       dkim=pass (test mode) header.i=@ideasonboard.com header.s=mail header.b=MniKswyT;
+       spf=pass (google.com: domain of laurent.pinchart@ideasonboard.com designates 213.167.242.64 as permitted sender) smtp.mailfrom=laurent.pinchart@ideasonboard.com
+Return-Path: <laurent.pinchart@ideasonboard.com>
+Received: from perceval.ideasonboard.com (perceval.ideasonboard.com. [213.167.242.64])
+        by mx.google.com with ESMTPS id v18si12339470ljj.208.2021.03.27.19.58.30
+        for <raj.khem@gmail.com>
+        (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
+        Sat, 27 Mar 2021 19:58:30 -0700 (PDT)
+Received-SPF: pass (google.com: domain of laurent.pinchart@ideasonboard.com designates 213.167.242.64 as permitted sender) client-ip=213.167.242.64;
+Authentication-Results: mx.google.com;
+       dkim=pass (test mode) header.i=@ideasonboard.com header.s=mail header.b=MniKswyT;
+       spf=pass (google.com: domain of laurent.pinchart@ideasonboard.com designates 213.167.242.64 as permitted sender) smtp.mailfrom=laurent.pinchart@ideasonboard.com
+Received: from pendragon.lan (62-78-145-57.bb.dnainternet.fi [62.78.145.57])
+	by perceval.ideasonboard.com (Postfix) with ESMTPSA id 11F12332;
+	Sun, 28 Mar 2021 04:58:28 +0200 (CEST)
+DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;
+	s=mail; t=1616900309;
+	bh=BwCg4h9N9fJysbMT1Yjbazbp7zTImD9mkWJSjCKzCmg=;
+	h=From:To:Cc:Subject:Date:From;
+	b=MniKswyT+aUtPgeMFeLqW6cRMFsPRN4W1XtVDA6pqI0QTSSx5koEuzSfEybjs6Qbp
+	 ZdQar1r5nBIRCg9uq85YoLKoFeT7WN4PrwnRYPwaYGAFHfV44rDrq4RBe3VOIb+85W
+	 tKn4HEzjlFelrImVbeymBsgpVhITveSVH1MdYRsE=
+From: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
+To: libcamera-devel@lists.libcamera.org
+Cc: Khem Raj <raj.khem@gmail.com>
+Subject: [PATCH v2] libcamera: pipeline: uvcvideo: Avoid reference to temporary object
+Date: Sun, 28 Mar 2021 05:57:41 +0300
+Message-Id: <20210328025741.30246-1-laurent.pinchart@ideasonboard.com>
+X-Mailer: git-send-email 2.28.1
+MIME-Version: 1.0
+Content-Transfer-Encoding: 8bit
+
+From: Khem Raj <raj.khem@gmail.com>
+
+A range-based for loop whose range expression is an array of char
+pointers and range variable declaration is a const reference to a
+std::string creates a temporary string from the char pointer and binds
+the range variable reference to it. This creates a const reference to a
+temporary, which is valid in C++, and extends the lifetime of the
+temporary to the lifetime of the reference.
+
+However, lifetime extension in range-based for loops is considered as a
+sign of a potential issue, as a temporary is created for every
+iteration, which can be costly, and the usage of a reference in the
+range declaration doesn't make it obvious that the code isn't simply
+binding a reference to an existing object. gcc 11, with the
+-Wrange-loop-construct option, flags this:
+
+uvcvideo.cpp:432:33: error: loop variable 'name' of type 'const string&' {aka 'const std::__cxx11::basic_string<cha
+r>&'} binds to a temporary constructed from type 'const char* const' [-Werror=range-loop-construct]
+|   432 |         for (const std::string &name : { "idVendor", "idProduct" }) {
+|       |                                 ^~~~
+
+To please the compiler, make the range variable a const char *. This may
+bring a tiny performance improvement, as the name is only used once, in
+a location where the compiler can use
+
+	operator+(const std::string &, const char *)
+
+instead of
+
+	operator+(const std::string &, const std::string &)
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
+
+Use a const char * type instead of auto, and update the commit message
+accordingly.
+
+Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
+---
+ src/libcamera/pipeline/uvcvideo/uvcvideo.cpp | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/libcamera/pipeline/uvcvideo/uvcvideo.cpp b/src/libcamera/pipeline/uvcvideo/uvcvideo.cpp
+index 031f96e28449..b6c6ade5ebaf 100644
+--- a/src/libcamera/pipeline/uvcvideo/uvcvideo.cpp
++++ b/src/libcamera/pipeline/uvcvideo/uvcvideo.cpp
+@@ -429,7 +429,7 @@ std::string PipelineHandlerUVC::generateId(const UVCCameraData *data)
+ 
+ 	/* Creata a device ID from the USB devices vendor and product ID. */
+ 	std::string deviceId;
+-	for (const std::string &name : { "idVendor", "idProduct" }) {
++	for (const char *name : { "idVendor", "idProduct" }) {
+ 		std::ifstream file(path + "/../" + name);
+ 
+ 		if (!file.is_open())
+-- 
+Regards,
+
+Laurent Pinchart
+
-- 
2.31.1


^ permalink raw reply related	[flat|nested] only message in thread

only message in thread, other threads:[~2021-03-28 19:49 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-03-28 19:49 [meta-multimedia][PATCH] libcamera: Update the patch to upstreamed one Khem Raj

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.