Loading services/camera/libcameraservice/utils/AutoConditionLock.cpp +7 −3 Original line number Diff line number Diff line Loading @@ -24,14 +24,16 @@ WaitableMutexWrapper::~WaitableMutexWrapper() {} // Locks manager-owned mutex AutoConditionLock::AutoConditionLock(const std::shared_ptr<WaitableMutexWrapper>& manager) : mManager{manager}, mAutoLock{manager->mMutex} {} mManager{manager}, mAutoLock{manager->mMutex}, mAcquired(false) {} // Unlocks manager-owned mutex AutoConditionLock::~AutoConditionLock() { // Unset the condition and wake everyone up before releasing lock if (mAcquired) { mManager->mState = false; mManager->mCondition.broadcast(); } } std::unique_ptr<AutoConditionLock> AutoConditionLock::waitAndAcquire( const std::shared_ptr<WaitableMutexWrapper>& manager, nsecs_t waitTime) { Loading Loading @@ -59,6 +61,7 @@ std::unique_ptr<AutoConditionLock> AutoConditionLock::waitAndAcquire( // Set the condition and return manager->mState = true; scopedLock->mAcquired = true; return scopedLock; } Loading @@ -84,6 +87,7 @@ std::unique_ptr<AutoConditionLock> AutoConditionLock::waitAndAcquire( // Set the condition and return manager->mState = true; scopedLock->mAcquired = true; return scopedLock; } Loading services/camera/libcameraservice/utils/AutoConditionLock.h +1 −0 Original line number Diff line number Diff line Loading @@ -92,6 +92,7 @@ private: std::shared_ptr<WaitableMutexWrapper> mManager; Mutex::Autolock mAutoLock; bool mAcquired; }; }; // namespace android Loading Loading
services/camera/libcameraservice/utils/AutoConditionLock.cpp +7 −3 Original line number Diff line number Diff line Loading @@ -24,14 +24,16 @@ WaitableMutexWrapper::~WaitableMutexWrapper() {} // Locks manager-owned mutex AutoConditionLock::AutoConditionLock(const std::shared_ptr<WaitableMutexWrapper>& manager) : mManager{manager}, mAutoLock{manager->mMutex} {} mManager{manager}, mAutoLock{manager->mMutex}, mAcquired(false) {} // Unlocks manager-owned mutex AutoConditionLock::~AutoConditionLock() { // Unset the condition and wake everyone up before releasing lock if (mAcquired) { mManager->mState = false; mManager->mCondition.broadcast(); } } std::unique_ptr<AutoConditionLock> AutoConditionLock::waitAndAcquire( const std::shared_ptr<WaitableMutexWrapper>& manager, nsecs_t waitTime) { Loading Loading @@ -59,6 +61,7 @@ std::unique_ptr<AutoConditionLock> AutoConditionLock::waitAndAcquire( // Set the condition and return manager->mState = true; scopedLock->mAcquired = true; return scopedLock; } Loading @@ -84,6 +87,7 @@ std::unique_ptr<AutoConditionLock> AutoConditionLock::waitAndAcquire( // Set the condition and return manager->mState = true; scopedLock->mAcquired = true; return scopedLock; } Loading
services/camera/libcameraservice/utils/AutoConditionLock.h +1 −0 Original line number Diff line number Diff line Loading @@ -92,6 +92,7 @@ private: std::shared_ptr<WaitableMutexWrapper> mManager; Mutex::Autolock mAutoLock; bool mAcquired; }; }; // namespace android Loading