summaryrefslogtreecommitdiff
path: root/services/surfaceflinger/TransactionCompletedThread.cpp
diff options
context:
space:
mode:
author Marissa Wall <marissaw@google.com> 2019-04-16 14:19:55 -0700
committer Marissa Wall <marissaw@google.com> 2019-04-16 14:19:55 -0700
commitb0022cc49371bfc5d9bd10fb8e60c29b1ff4aef6 (patch)
treee55c8cad63eb07ab232d3388d5c763a43dbe1d43 /services/surfaceflinger/TransactionCompletedThread.cpp
parentab54fb71d630fc66f08c5711de55487b0bf29932 (diff)
blast: transaction ordering
This patch fixes two issues. 1) When a pending transactions is not found, don't try to use the iterator. This fixes a crash that happens when we are in a bad state. 2) When a transaction doesn't have any callbacks, don't try to send callbacks. Bug: 130643588 Test: SurfaceFlinger_test Change-Id: I6154c31dbf0b958683324c6b45e1a607691b84e8
Diffstat (limited to 'services/surfaceflinger/TransactionCompletedThread.cpp')
-rw-r--r--services/surfaceflinger/TransactionCompletedThread.cpp6
1 files changed, 3 insertions, 3 deletions
diff --git a/services/surfaceflinger/TransactionCompletedThread.cpp b/services/surfaceflinger/TransactionCompletedThread.cpp
index 34df6068ee..b1bf4e20d3 100644
--- a/services/surfaceflinger/TransactionCompletedThread.cpp
+++ b/services/surfaceflinger/TransactionCompletedThread.cpp
@@ -141,12 +141,12 @@ status_t TransactionCompletedThread::addPresentedCallbackHandles(
} else {
ALOGW("there are more latched callbacks than there were registered callbacks");
}
+ if (listener->second.size() == 0) {
+ mPendingTransactions.erase(listener);
+ }
} else {
ALOGW("cannot find listener in mPendingTransactions");
}
- if (listener->second.size() == 0) {
- mPendingTransactions.erase(listener);
- }
status_t err = addCallbackHandle(handle);
if (err != NO_ERROR) {