[PATCH] pipeline_handler: Fix unlocking media devices too early when there are multiple cameras
Cheng-Hao Yang
chenghaoyang at chromium.org
Mon Aug 19 15:51:10 CEST 2024
Hi Hans,
On Sun, Aug 18, 2024 at 5:43 PM Hans de Goede <hdegoede at redhat.com> wrote:
> 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.
>
>
Yes, it makes sense to me that we should avoid other processes accessing
the media devices until the current process releases all acquires/usages.
Thanks for the fix!
Reviewed-by: Harvey Yang <chenghaoyang at chromium.org>
BR,
Harvey
Signed-off-by: Hans de Goede <hdegoede at redhat.com>
> ---
> src/libcamera/pipeline_handler.cpp | 3 ++-
> 1 file changed, 2 insertions(+), 1 deletion(-)
>
> 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);
>
> --
> 2.46.0
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.libcamera.org/pipermail/libcamera-devel/attachments/20240819/edc3ab8f/attachment.htm>
More information about the libcamera-devel
mailing list