diff options
| author | 2019-03-26 15:38:50 -0700 | |
|---|---|---|
| committer | 2019-03-29 09:42:52 -0700 | |
| commit | d600d57da59244af8f94145558debe7f1acad998 (patch) | |
| tree | bd5b0683125e7cfa4d276235269f4bab9b357fb1 /libs/gui/SurfaceComposerClient.cpp | |
| parent | eccfc576b3f90c2ee818de7c10eea6fdbbe2d166 (diff) | |
blast: in order no-op transaction callbacks
Transactions callbacks were being sent as soon as they were ready
instead of in order. To fix this, keep a deque of Transaction
callbacks and do not send a callback until all the callbacks
before it have been sent.
Bug: 128519264
Test: Transaction_test
Change-Id: Ia363b3aca85bc1cd71d0fd915de79b44f786e09f
Diffstat (limited to 'libs/gui/SurfaceComposerClient.cpp')
| -rw-r--r-- | libs/gui/SurfaceComposerClient.cpp | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/libs/gui/SurfaceComposerClient.cpp b/libs/gui/SurfaceComposerClient.cpp index c627898ce2..83cf40c8e9 100644 --- a/libs/gui/SurfaceComposerClient.cpp +++ b/libs/gui/SurfaceComposerClient.cpp @@ -203,15 +203,15 @@ void TransactionCompletedListener::onTransactionCompleted(ListenerStats listener * that could possibly exist for the callbacks. */ std::unordered_map<sp<IBinder>, sp<SurfaceControl>, IBinderHash> surfaceControls; - for (const auto& [callbackIds, transactionStats] : listenerStats.transactionStats) { - for (auto callbackId : callbackIds) { + for (const auto& transactionStats : listenerStats.transactionStats) { + for (auto callbackId : transactionStats.callbackIds) { auto& [callbackFunction, callbackSurfaceControls] = mCallbacks[callbackId]; surfaceControls.insert(callbackSurfaceControls.begin(), callbackSurfaceControls.end()); } } - for (const auto& [callbackIds, transactionStats] : listenerStats.transactionStats) { - for (auto callbackId : callbackIds) { + for (const auto& transactionStats : listenerStats.transactionStats) { + for (auto callbackId : transactionStats.callbackIds) { auto& [callbackFunction, callbackSurfaceControls] = mCallbacks[callbackId]; if (!callbackFunction) { ALOGE("cannot call null callback function, skipping"); |