[libcamera-devel] [PATCH v4 5/6] py: Use libcamera's Mutex classes

Tomi Valkeinen tomi.valkeinen at ideasonboard.com
Fri Aug 19 13:16:14 CEST 2022


Use libcamera's Mutex and MutexLocker instead of the std versions to get
thread safety annotations.

Signed-off-by: Tomi Valkeinen <tomi.valkeinen at ideasonboard.com>
Reviewed-by: Laurent Pinchart <laurent.pinchart at ideasonboard.com>
---
 src/py/libcamera/py_camera_manager.cpp | 4 ++--
 src/py/libcamera/py_camera_manager.h   | 7 ++++---
 2 files changed, 6 insertions(+), 5 deletions(-)

diff --git a/src/py/libcamera/py_camera_manager.cpp b/src/py/libcamera/py_camera_manager.cpp
index 8bfb8e57..ea4ae825 100644
--- a/src/py/libcamera/py_camera_manager.cpp
+++ b/src/py/libcamera/py_camera_manager.cpp
@@ -106,14 +106,14 @@ void PyCameraManager::readFd()
 
 void PyCameraManager::pushRequest(Request *req)
 {
-	std::lock_guard guard(completedRequestsMutex_);
+	MutexLocker guard(completedRequestsMutex_);
 	completedRequests_.push_back(req);
 }
 
 std::vector<Request *> PyCameraManager::getCompletedRequests()
 {
 	std::vector<Request *> v;
-	std::lock_guard guard(completedRequestsMutex_);
+	MutexLocker guard(completedRequestsMutex_);
 	swap(v, completedRequests_);
 	return v;
 }
diff --git a/src/py/libcamera/py_camera_manager.h b/src/py/libcamera/py_camera_manager.h
index 710163e8..56bea13d 100644
--- a/src/py/libcamera/py_camera_manager.h
+++ b/src/py/libcamera/py_camera_manager.h
@@ -5,7 +5,7 @@
 
 #pragma once
 
-#include <mutex>
+#include <libcamera/base/mutex.h>
 
 #include <libcamera/libcamera.h>
 
@@ -34,8 +34,9 @@ private:
 	std::unique_ptr<CameraManager> cameraManager_;
 
 	UniqueFD eventFd_;
-	std::mutex completedRequestsMutex_;
-	std::vector<Request *> completedRequests_;
+	libcamera::Mutex completedRequestsMutex_;
+	std::vector<Request *> completedRequests_
+		LIBCAMERA_TSA_GUARDED_BY(completedRequestsMutex_);
 
 	void writeFd();
 	void readFd();
-- 
2.34.1



More information about the libcamera-devel mailing list