[libcamera-devel] [RFC PATCH] libcamera: base: Make message.h and mutex.h private

Umang Jain umang.jain at ideasonboard.com
Wed Aug 10 08:44:31 CEST 2022


Hi Laurent,

Thank you for the patch.

On 8/8/22 20:49, Laurent Pinchart via libcamera-devel wrote:
> The message.h and mutex.h headers are not used in the libcamera public
> API. Make them private to avoid there usage in applications, and to
> prevent having to maintain them with a stable ABI.
>
> As mutex.h is used by libcamerasrc, the GStreamer element must switch
> from the libcamera_public to the libcamera_private dependency.


Should the gstreamer element be moving away from using those headers as 
well?

If it's a question on locks (I see Mutex and MutexLocker) being used, 
replacing with GLib equivalent can be a way forwards to drop those (now 
private) headers?

In that case, this patch can introduce a \todo in gstreamer element.

Anyways,

Reviewed-by: Umang Jain <umang.jain at ideasonboard.com>

>
> Signed-off-by: Laurent Pinchart <laurent.pinchart at ideasonboard.com>
> ---
>   include/libcamera/base/message.h | 2 ++
>   include/libcamera/base/mutex.h   | 2 ++
>   src/gstreamer/meson.build        | 2 +-
>   3 files changed, 5 insertions(+), 1 deletion(-)
>
> diff --git a/include/libcamera/base/message.h b/include/libcamera/base/message.h
> index 65572c7470e9..b939af6f79bb 100644
> --- a/include/libcamera/base/message.h
> +++ b/include/libcamera/base/message.h
> @@ -9,6 +9,8 @@
>   
>   #include <atomic>
>   
> +#include <libcamera/base/private.h>
> +
>   #include <libcamera/base/bound_method.h>
>   
>   namespace libcamera {
> diff --git a/include/libcamera/base/mutex.h b/include/libcamera/base/mutex.h
> index 2d23e49e4546..52441c55287a 100644
> --- a/include/libcamera/base/mutex.h
> +++ b/include/libcamera/base/mutex.h
> @@ -10,6 +10,8 @@
>   #include <condition_variable>
>   #include <mutex>
>   
> +#include <libcamera/base/private.h>
> +
>   #include <libcamera/base/thread_annotations.h>
>   
>   namespace libcamera {
> diff --git a/src/gstreamer/meson.build b/src/gstreamer/meson.build
> index 77c79140eb37..eda246d7ffc8 100644
> --- a/src/gstreamer/meson.build
> +++ b/src/gstreamer/meson.build
> @@ -42,7 +42,7 @@ endif
>   libcamera_gst = shared_library('gstlibcamera',
>       libcamera_gst_sources,
>       cpp_args : libcamera_gst_cpp_args,
> -    dependencies : [libcamera_public, gstvideo_dep, gstallocator_dep],
> +    dependencies : [libcamera_private, gstvideo_dep, gstallocator_dep],
>       install: true,
>       install_dir : '@0@/gstreamer-1.0'.format(get_option('libdir')),
>   )


More information about the libcamera-devel mailing list