@@ -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();
});
@@ -15,6 +15,7 @@
#include <libcamera/base/mutex.h>
#include <libcamera/base/thread.h>
+#include <libcamera/base/thread_annotations.h>
#include <libcamera/camera.h>
#include <libcamera/framebuffer.h>
@@ -155,8 +156,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 +171,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.