diff options
Diffstat (limited to 'libs/gui/SurfaceComposerClient.cpp')
| -rw-r--r-- | libs/gui/SurfaceComposerClient.cpp | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/libs/gui/SurfaceComposerClient.cpp b/libs/gui/SurfaceComposerClient.cpp index 7a63af0ed3..4ce5e4fe59 100644 --- a/libs/gui/SurfaceComposerClient.cpp +++ b/libs/gui/SurfaceComposerClient.cpp @@ -447,6 +447,27 @@ void TransactionCompletedListener::onTransactionCompleted(ListenerStats listener } } +void TransactionCompletedListener::onTransactionQueueStalled() { + std::unordered_map<void*, std::function<void()>> callbackCopy; + { + std::scoped_lock<std::mutex> lock(mMutex); + callbackCopy = mQueueStallListeners; + } + for (auto const& it : callbackCopy) { + it.second(); + } +} + +void TransactionCompletedListener::addQueueStallListener(std::function<void()> stallListener, + void* id) { + std::scoped_lock<std::mutex> lock(mMutex); + mQueueStallListeners[id] = stallListener; +} +void TransactionCompletedListener::removeQueueStallListener(void *id) { + std::scoped_lock<std::mutex> lock(mMutex); + mQueueStallListeners.erase(id); +} + void TransactionCompletedListener::onReleaseBuffer(ReleaseCallbackId callbackId, sp<Fence> releaseFence, uint32_t currentMaxAcquiredBufferCount) { |