[PATCH v1] gstreamer: Use copied camera name

Nicolas Dufresne nicolas at ndufresne.ca
Tue May 14 22:44:21 CEST 2024


Hey,

Le mardi 14 mai 2024 à 18:02 +0000, Barnabás Pőcze a écrit :
> It seems the intent is to use the copied camera name to avoid
> concurrency problems related to `gst_libcamera_src_set_property()`.
> 
> However, the current code makes the copy, but does not actually
> use it. So fix that.
> 
> Fixes: 58feb69f852289 ("gst: libcamerasrc: Implement selection and acquisition")
> Signed-off-by: Barnabás Pőcze <pobrn at protonmail.com>
> ---
>  src/gstreamer/gstlibcamerasrc.cpp | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/src/gstreamer/gstlibcamerasrc.cpp b/src/gstreamer/gstlibcamerasrc.cpp
> index a284110b..9680d809 100644
> --- a/src/gstreamer/gstlibcamerasrc.cpp
> +++ b/src/gstreamer/gstlibcamerasrc.cpp
> @@ -377,10 +377,10 @@ gst_libcamera_src_open(GstLibcameraSrc *self)
>  	}
>  
>  	if (camera_name) {
> -		cam = cm->get(self->camera_name);
> +		cam = cm->get(camera_name);
>  		if (!cam) {
>  			GST_ELEMENT_ERROR(self, RESOURCE, NOT_FOUND,
> -					  ("Could not find a camera named '%s'.", self->camera_name),
> +					  ("Could not find a camera named '%s'.", camera_name),
>  					  ("libcamera::CameraMananger::get() returned nullptr"));

What can I say for my defence here ... oops. The point was that we can't hold
the lock while calling GST_ELEMENT_ERROR(), as it sends a message on the bus,
taking more mutex and possibly causing issues.

Reviewed-by: Nicolas Dufresne <nicolas.dufresne at collabora.com>

>  			return false;
>  		}



More information about the libcamera-devel mailing list