Loading libs/gui/ConsumerBase.cpp +3 −3 Original line number Diff line number Diff line Loading @@ -106,7 +106,7 @@ void ConsumerBase::onFrameAvailable(const BufferItem& item) { sp<FrameAvailableListener> listener; { // scope for the lock Mutex::Autolock lock(mMutex); Mutex::Autolock lock(mFrameAvailableMutex); listener = mFrameAvailableListener.promote(); } Loading @@ -121,7 +121,7 @@ void ConsumerBase::onFrameReplaced(const BufferItem &item) { sp<FrameAvailableListener> listener; { Mutex::Autolock lock(mMutex); Mutex::Autolock lock(mFrameAvailableMutex); listener = mFrameAvailableListener.promote(); } Loading Loading @@ -185,7 +185,7 @@ bool ConsumerBase::isAbandoned() { void ConsumerBase::setFrameAvailableListener( const wp<FrameAvailableListener>& listener) { CB_LOGV("setFrameAvailableListener"); Mutex::Autolock lock(mMutex); Mutex::Autolock lock(mFrameAvailableMutex); mFrameAvailableListener = listener; } Loading libs/gui/include/gui/ConsumerBase.h +3 −1 Original line number Diff line number Diff line Loading @@ -241,7 +241,9 @@ protected: // mFrameAvailableListener is the listener object that will be called when a // new frame becomes available. If it is not NULL it will be called from // queueBuffer. // queueBuffer. The listener object is protected by mFrameAvailableMutex // (not mMutex). Mutex mFrameAvailableMutex; wp<FrameAvailableListener> mFrameAvailableListener; // The ConsumerBase has-a BufferQueue and is responsible for creating this object Loading services/surfaceflinger/SurfaceFlingerConsumer.cpp +6 −1 Original line number Diff line number Diff line Loading @@ -240,10 +240,15 @@ void SurfaceFlingerConsumer::setContentsChangedListener( } void SurfaceFlingerConsumer::onSidebandStreamChanged() { FrameAvailableListener* unsafeFrameAvailableListener = nullptr; { Mutex::Autolock lock(mFrameAvailableMutex); unsafeFrameAvailableListener = mFrameAvailableListener.unsafe_get(); } sp<ContentsChangedListener> listener; { // scope for the lock Mutex::Autolock lock(mMutex); ALOG_ASSERT(mFrameAvailableListener.unsafe_get() == mContentsChangedListener.unsafe_get()); ALOG_ASSERT(unsafeFrameAvailableListener == mContentsChangedListener.unsafe_get()); listener = mContentsChangedListener.promote(); } Loading Loading
libs/gui/ConsumerBase.cpp +3 −3 Original line number Diff line number Diff line Loading @@ -106,7 +106,7 @@ void ConsumerBase::onFrameAvailable(const BufferItem& item) { sp<FrameAvailableListener> listener; { // scope for the lock Mutex::Autolock lock(mMutex); Mutex::Autolock lock(mFrameAvailableMutex); listener = mFrameAvailableListener.promote(); } Loading @@ -121,7 +121,7 @@ void ConsumerBase::onFrameReplaced(const BufferItem &item) { sp<FrameAvailableListener> listener; { Mutex::Autolock lock(mMutex); Mutex::Autolock lock(mFrameAvailableMutex); listener = mFrameAvailableListener.promote(); } Loading Loading @@ -185,7 +185,7 @@ bool ConsumerBase::isAbandoned() { void ConsumerBase::setFrameAvailableListener( const wp<FrameAvailableListener>& listener) { CB_LOGV("setFrameAvailableListener"); Mutex::Autolock lock(mMutex); Mutex::Autolock lock(mFrameAvailableMutex); mFrameAvailableListener = listener; } Loading
libs/gui/include/gui/ConsumerBase.h +3 −1 Original line number Diff line number Diff line Loading @@ -241,7 +241,9 @@ protected: // mFrameAvailableListener is the listener object that will be called when a // new frame becomes available. If it is not NULL it will be called from // queueBuffer. // queueBuffer. The listener object is protected by mFrameAvailableMutex // (not mMutex). Mutex mFrameAvailableMutex; wp<FrameAvailableListener> mFrameAvailableListener; // The ConsumerBase has-a BufferQueue and is responsible for creating this object Loading
services/surfaceflinger/SurfaceFlingerConsumer.cpp +6 −1 Original line number Diff line number Diff line Loading @@ -240,10 +240,15 @@ void SurfaceFlingerConsumer::setContentsChangedListener( } void SurfaceFlingerConsumer::onSidebandStreamChanged() { FrameAvailableListener* unsafeFrameAvailableListener = nullptr; { Mutex::Autolock lock(mFrameAvailableMutex); unsafeFrameAvailableListener = mFrameAvailableListener.unsafe_get(); } sp<ContentsChangedListener> listener; { // scope for the lock Mutex::Autolock lock(mMutex); ALOG_ASSERT(mFrameAvailableListener.unsafe_get() == mContentsChangedListener.unsafe_get()); ALOG_ASSERT(unsafeFrameAvailableListener == mContentsChangedListener.unsafe_get()); listener = mContentsChangedListener.promote(); } Loading