summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJacopo Mondi <jacopo@jmondi.org>2021-05-10 09:46:10 +0200
committerJacopo Mondi <jacopo@jmondi.org>2021-06-14 12:26:27 +0200
commitebf8b5e7e064228897aeb18206d9bb93a5ff7e42 (patch)
treed24a9b4f25235b692f435c98d3e1fa95d953d4b3
parent1f38e4c73f5d39b366f75b774e76490850031532 (diff)
android: Replace scoped_lock<> with libcamera::MutexLocker
The CameraDevice class uses std::scoped_lock<> to guard access to the class' descriptors_ member. std::scoped_lock<> provides a set of features that guarantees safety when locking multiple mutexes in a critical section, while for single locks happening in a scoped block it does not provides benefits compared to the simplest std::unique_lock<> which libcamera provides the MutexLocker type for. Replace usage of std::scoped_lock<> with libcamera::MutexLocker to make the implementation consistent with the rest of the code base. Signed-off-by: Jacopo Mondi <jacopo@jmondi.org> Reviewed-by: Niklas Söderlund <niklas.soderlund@ragnatech.se> Reviewed-by: Hirokazu Honda <hiroh@chromium.org> Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
-rw-r--r--src/android/camera_device.cpp5
1 files changed, 3 insertions, 2 deletions
diff --git a/src/android/camera_device.cpp b/src/android/camera_device.cpp
index 2c23366c..3346811b 100644
--- a/src/android/camera_device.cpp
+++ b/src/android/camera_device.cpp
@@ -25,6 +25,7 @@
#include "libcamera/internal/formats.h"
#include "libcamera/internal/log.h"
+#include "libcamera/internal/thread.h"
#include "libcamera/internal/utils.h"
#include "system/graphics.h"
@@ -2003,7 +2004,7 @@ int CameraDevice::processCaptureRequest(camera3_capture_request_t *camera3Reques
worker_.queueRequest(descriptor.request_.get());
{
- std::scoped_lock<std::mutex> lock(mutex_);
+ MutexLocker lock(mutex_);
descriptors_[descriptor.request_->cookie()] = std::move(descriptor);
}
@@ -2014,7 +2015,7 @@ void CameraDevice::requestComplete(Request *request)
{
decltype(descriptors_)::node_type node;
{
- std::scoped_lock<std::mutex> lock(mutex_);
+ MutexLocker lock(mutex_);
auto it = descriptors_.find(request->cookie());
if (it == descriptors_.end()) {
/*