diff options
author | Hirokazu Honda <hiroh@chromium.org> | 2021-12-01 16:53:45 +0900 |
---|---|---|
committer | Laurent Pinchart <laurent.pinchart@ideasonboard.com> | 2021-12-01 13:46:53 +0200 |
commit | 97ab0074ec3097da1923294e4ef4c2f815532c4a (patch) | |
tree | 439cad6bd876988f7ebcad60a6da8d70b93f31b2 | |
parent | 5e0d3a35170f9fc8183507d5c272d19937d31f1c (diff) |
android: camera_stream: Add thread safety annotation
This applies clang thread safety annotation to CameraStream.
Signed-off-by: Hirokazu Honda <hiroh@chromium.org>
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Reviewed-by: Umang Jain <umang.jain@ideasonboard.com>
Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
-rw-r--r-- | src/android/camera_stream.cpp | 2 | ||||
-rw-r--r-- | src/android/camera_stream.h | 8 |
2 files changed, 6 insertions, 4 deletions
diff --git a/src/android/camera_stream.cpp b/src/android/camera_stream.cpp index 2181d094..ae659808 100644 --- a/src/android/camera_stream.cpp +++ b/src/android/camera_stream.cpp @@ -275,7 +275,7 @@ void CameraStream::PostProcessorWorker::run() MutexLocker locker(mutex_); while (1) { - cv_.wait(locker, [&] { + cv_.wait(locker, [&]() LIBCAMERA_TSA_REQUIRES(mutex_) { return state_ != State::Running || !requests_.empty(); }); diff --git a/src/android/camera_stream.h b/src/android/camera_stream.h index e4eb953a..7b1a2980 100644 --- a/src/android/camera_stream.h +++ b/src/android/camera_stream.h @@ -155,8 +155,10 @@ private: libcamera::Mutex mutex_; libcamera::ConditionVariable cv_; - std::queue<Camera3RequestDescriptor::StreamBuffer *> requests_; - State state_ = State::Stopped; + std::queue<Camera3RequestDescriptor::StreamBuffer *> requests_ + LIBCAMERA_TSA_GUARDED_BY(mutex_); + + State state_ LIBCAMERA_TSA_GUARDED_BY(mutex_) = State::Stopped; }; int waitFence(int fence); @@ -168,7 +170,7 @@ private: const unsigned int index_; std::unique_ptr<libcamera::FrameBufferAllocator> allocator_; - std::vector<libcamera::FrameBuffer *> buffers_; + std::vector<libcamera::FrameBuffer *> buffers_ LIBCAMERA_TSA_GUARDED_BY(mutex_); /* * The class has to be MoveConstructible as instances are stored in * an std::vector in CameraDevice. |