summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHirokazu Honda <hiroh@chromium.org>2021-12-01 16:53:45 +0900
committerLaurent Pinchart <laurent.pinchart@ideasonboard.com>2021-12-01 13:46:53 +0200
commit97ab0074ec3097da1923294e4ef4c2f815532c4a (patch)
tree439cad6bd876988f7ebcad60a6da8d70b93f31b2
parent5e0d3a35170f9fc8183507d5c272d19937d31f1c (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.cpp2
-rw-r--r--src/android/camera_stream.h8
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.