From de97a682f228b52e32411f6abee51ffc1b00ac9e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Barnab=C3=A1s=20P=C5=91cze?= Date: Sat, 12 Jul 2025 16:44:31 +0200 Subject: [PATCH] spa: libcamera: use lock when acquiring `CameraManager` Make `libcamera_manager_acquire()` thread safe by locking a mutex when the `CameraManager` instance is created and started. (cherry picked from commit 5f4f4b5dd31130501ea3ce3198065c0744cf5fa3) --- spa/plugins/libcamera/libcamera-manager.cpp | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/spa/plugins/libcamera/libcamera-manager.cpp b/spa/plugins/libcamera/libcamera-manager.cpp index db2c73d54..648ea1fe5 100644 --- a/spa/plugins/libcamera/libcamera-manager.cpp +++ b/spa/plugins/libcamera/libcamera-manager.cpp @@ -82,10 +82,13 @@ struct impl { } -static std::weak_ptr global_manager; - std::shared_ptr libcamera_manager_acquire(int& res) { + static std::weak_ptr global_manager; + static std::mutex lock; + + std::lock_guard guard(lock); + if (auto manager = global_manager.lock()) return manager;