summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHans de Goede <hdegoede@redhat.com>2024-08-18 17:43:24 +0200
committerLaurent Pinchart <laurent.pinchart@ideasonboard.com>2024-08-25 03:06:06 +0300
commita3fb0b3d0aec6477c205e7300dd19e54fee20d54 (patch)
treec98baf3d59f4617bf47799511147b117606e3742
parentfc7250f0b330b9b716206872caa26b4b1a1e83c8 (diff)
libcamera: pipeline_handler: Fix unlocking media devices too early
PipelineHandler::acquire() only locks the media devices when the first camera is acquired. If a second camera of a pipeline is acquired only useCount_ is increased and nothing else is done. When releasing cameras PipelineHandler::release() should only unlock the media devices when the last camera is released. But the old code unlocked on every release(). Fix PipelineHandler::release() to only release the media devices when the last camera is released. Signed-off-by: Hans de Goede <hdegoede@redhat.com> Reviewed-by: Harvey Yang <chenghaoyang@chromium.org> Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
-rw-r--r--src/libcamera/pipeline_handler.cpp3
1 files changed, 2 insertions, 1 deletions
diff --git a/src/libcamera/pipeline_handler.cpp b/src/libcamera/pipeline_handler.cpp
index 5a6de685..a20cd27d 100644
--- a/src/libcamera/pipeline_handler.cpp
+++ b/src/libcamera/pipeline_handler.cpp
@@ -205,7 +205,8 @@ void PipelineHandler::release(Camera *camera)
ASSERT(useCount_);
- unlockMediaDevices();
+ if (useCount_ == 1)
+ unlockMediaDevices();
releaseDevice(camera);