summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBarnabás Pőcze <pobrn@protonmail.com>2024-11-26 18:03:05 +0000
committerLaurent Pinchart <laurent.pinchart@ideasonboard.com>2024-11-27 16:18:45 +0200
commit4e557e544bce6da8c00c73de2dfe76403bbf8c00 (patch)
tree15ae2cca61f7fd4a7a206bf85809d1baf14e16bc
parent5d4b7e4b5b2901e87158de10d5ad2726c0b17c50 (diff)
libcamera: Don't copy `StreamConfiguration` when iterating
A copy is made in the range-based for loop, and thus all modifications done in the for loop body are lost, and not actually applied to the object in the container. Fix that by taking a reference in the range-based for loop. Fixes: 4217c9f1aa863c ("libcamera: camera: Zero streams before validate()") Fixes: 613d5402673eb9 ("pipeline: raspberrypi: Fix handling of colour spaces") Signed-off-by: Barnabás Pőcze <pobrn@protonmail.com> Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Reviewed-by: Naushir Patuck <naush@raspberrypi.com> Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
-rw-r--r--src/libcamera/camera.cpp4
-rw-r--r--src/libcamera/pipeline/rpi/common/pipeline_base.cpp4
2 files changed, 4 insertions, 4 deletions
diff --git a/src/libcamera/camera.cpp b/src/libcamera/camera.cpp
index 7507e9dd..4c865a46 100644
--- a/src/libcamera/camera.cpp
+++ b/src/libcamera/camera.cpp
@@ -1178,8 +1178,8 @@ int Camera::configure(CameraConfiguration *config)
if (ret < 0)
return ret;
- for (auto it : *config)
- it.setStream(nullptr);
+ for (auto &cfg : *config)
+ cfg.setStream(nullptr);
if (config->validate() != CameraConfiguration::Valid) {
LOG(Camera, Error)
diff --git a/src/libcamera/pipeline/rpi/common/pipeline_base.cpp b/src/libcamera/pipeline/rpi/common/pipeline_base.cpp
index 9e2d9d23..6f278b29 100644
--- a/src/libcamera/pipeline/rpi/common/pipeline_base.cpp
+++ b/src/libcamera/pipeline/rpi/common/pipeline_base.cpp
@@ -105,7 +105,7 @@ CameraConfiguration::Status RPiCameraConfiguration::validateColorSpaces([[maybe_
Status status = Valid;
yuvColorSpace_.reset();
- for (auto cfg : config_) {
+ for (auto &cfg : config_) {
/* First fix up raw streams to have the "raw" colour space. */
if (PipelineHandlerBase::isRaw(cfg.pixelFormat)) {
/* If there was no value here, that doesn't count as "adjusted". */
@@ -130,7 +130,7 @@ CameraConfiguration::Status RPiCameraConfiguration::validateColorSpaces([[maybe_
rgbColorSpace_->range = ColorSpace::Range::Full;
/* Go through the streams again and force everyone to the same colour space. */
- for (auto cfg : config_) {
+ for (auto &cfg : config_) {
if (cfg.colorSpace == ColorSpace::Raw)
continue;