libcamera: camera_manager: Apply clang thread safety annotation
This annotates member functions and variables of CameraManager::Private by clang thread safety annotations. Signed-off-by: Hirokazu Honda <hiroh@chromium.org> Signed-off-by: Umang Jain <umang.jain@ideasonboard.com> Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Reviewed-by: Umang Jain <umang.jain@ideasonboard.com>
This commit is contained in:
parent
c39885ed9b
commit
cd9e72944e
1 changed files with 15 additions and 9 deletions
|
@ -42,8 +42,8 @@ public:
|
||||||
|
|
||||||
int start();
|
int start();
|
||||||
void addCamera(std::shared_ptr<Camera> camera,
|
void addCamera(std::shared_ptr<Camera> camera,
|
||||||
const std::vector<dev_t> &devnums);
|
const std::vector<dev_t> &devnums) LIBCAMERA_TSA_EXCLUDES(mutex_);
|
||||||
void removeCamera(Camera *camera);
|
void removeCamera(Camera *camera) LIBCAMERA_TSA_EXCLUDES(mutex_);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* This mutex protects
|
* This mutex protects
|
||||||
|
@ -52,8 +52,8 @@ public:
|
||||||
* - cameras_ and camerasByDevnum_ after initialization
|
* - cameras_ and camerasByDevnum_ after initialization
|
||||||
*/
|
*/
|
||||||
mutable Mutex mutex_;
|
mutable Mutex mutex_;
|
||||||
std::vector<std::shared_ptr<Camera>> cameras_;
|
std::vector<std::shared_ptr<Camera>> cameras_ LIBCAMERA_TSA_GUARDED_BY(mutex_);
|
||||||
std::map<dev_t, std::weak_ptr<Camera>> camerasByDevnum_;
|
std::map<dev_t, std::weak_ptr<Camera>> camerasByDevnum_ LIBCAMERA_TSA_GUARDED_BY(mutex_);
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
void run() override;
|
void run() override;
|
||||||
|
@ -61,11 +61,11 @@ protected:
|
||||||
private:
|
private:
|
||||||
int init();
|
int init();
|
||||||
void createPipelineHandlers();
|
void createPipelineHandlers();
|
||||||
void cleanup();
|
void cleanup() LIBCAMERA_TSA_EXCLUDES(mutex_);
|
||||||
|
|
||||||
ConditionVariable cv_;
|
ConditionVariable cv_;
|
||||||
bool initialized_;
|
bool initialized_ LIBCAMERA_TSA_GUARDED_BY(mutex_);
|
||||||
int status_;
|
int status_ LIBCAMERA_TSA_GUARDED_BY(mutex_);
|
||||||
|
|
||||||
std::unique_ptr<DeviceEnumerator> enumerator_;
|
std::unique_ptr<DeviceEnumerator> enumerator_;
|
||||||
|
|
||||||
|
@ -87,7 +87,9 @@ int CameraManager::Private::start()
|
||||||
|
|
||||||
{
|
{
|
||||||
MutexLocker locker(mutex_);
|
MutexLocker locker(mutex_);
|
||||||
cv_.wait(locker, [&] { return initialized_; });
|
cv_.wait(locker, [&]() LIBCAMERA_TSA_REQUIRES(mutex_) {
|
||||||
|
return initialized_;
|
||||||
|
});
|
||||||
status = status_;
|
status = status_;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -178,7 +180,11 @@ void CameraManager::Private::cleanup()
|
||||||
* process deletion requests from the thread's message queue as the event
|
* process deletion requests from the thread's message queue as the event
|
||||||
* loop is not in action here.
|
* loop is not in action here.
|
||||||
*/
|
*/
|
||||||
cameras_.clear();
|
{
|
||||||
|
MutexLocker locker(mutex_);
|
||||||
|
cameras_.clear();
|
||||||
|
}
|
||||||
|
|
||||||
dispatchMessages(Message::Type::DeferredDelete);
|
dispatchMessages(Message::Type::DeferredDelete);
|
||||||
|
|
||||||
enumerator_.reset(nullptr);
|
enumerator_.reset(nullptr);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue