[libcamera-devel] [PATCH v3 08/17] py: Use libcamera's Mutex classes

Jacopo Mondi jacopo at jmondi.org
Thu Aug 18 16:26:39 CEST 2022


Hi Tomi,

On Fri, Jul 01, 2022 at 11:45:12AM +0300, Tomi Valkeinen wrote:
> 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>

I think this should be squashed as well!

> ---
>  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 3d422c9e..5600f661 100644
> --- a/src/py/libcamera/py_camera_manager.cpp
> +++ b/src/py/libcamera/py_camera_manager.cpp
> @@ -104,14 +104,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