[libcamera-devel,v4,5/6] py: Use libcamera's Mutex classes
diff mbox series

Message ID 20220819111615.39814-6-tomi.valkeinen@ideasonboard.com
State Accepted
Commit de7f1aa591881e112b67ec4f6507a6079b226089
Headers show
Series
  • Python bindings: PyCameraManager and non-blocking eventfd
Related show

Commit Message

Tomi Valkeinen Aug. 19, 2022, 11:16 a.m. UTC
Use libcamera's Mutex and MutexLocker instead of the std versions to get
thread safety annotations.

Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ideasonboard.com>
Reviewed-by: Laurent Pinchart <laurent.pinchart@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(-)

Patch
diff mbox series

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();