aboutsummaryrefslogtreecommitdiffstats
path: root/meta-multimedia
diff options
context:
space:
mode:
authorKhem Raj <raj.khem@gmail.com>2021-03-28 12:48:42 -0700
committerKhem Raj <raj.khem@gmail.com>2021-03-28 22:23:40 -0700
commitb2bd9cce16e1ed3e5e429b2042c46934d9691b43 (patch)
tree34144b3d2ce8a6a8f7a909c702120ba69b2974d4 /meta-multimedia
parent409a6dc00fdbdc945e213afc65b4aad51d1f63a1 (diff)
downloadmeta-openembedded-b2bd9cce16e1ed3e5e429b2042c46934d9691b43.tar.gz
libcamera: Update the patch to upstreamed one
Signed-off-by: Khem Raj <raj.khem@gmail.com>
Diffstat (limited to 'meta-multimedia')
-rw-r--r--meta-multimedia/recipes-multimedia/libcamera/libcamera/0001-uvcvideo-Use-auto-variable-to-avoid-range-loop-warni.patch101
1 files changed, 90 insertions, 11 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..cec5fc2872 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,27 +1,104 @@
-From 767267ef69c001870d41caf9c60dd7fec89b0a13 Mon Sep 17 00:00:00 2001
+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>
-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
+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" }) {
| | ^~~~
-Therefore making it explicit is better
+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 &)
-Upstream-Status: Submitted [https://lists.libcamera.org/pipermail/libcamera-devel/2021-March/017966.html]
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 031f96e2..ef23ece7 100644
+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)
@@ -29,10 +106,12 @@ index 031f96e2..ef23ece7 100644
/* 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" }) {
++ for (const char *name : { "idVendor", "idProduct" }) {
std::ifstream file(path + "/../" + name);
if (!file.is_open())
--
-2.30.1
+Regards,
+
+Laurent Pinchart