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
diff --git a/services/surfaceflinger/TransactionCompletedThread.cpp b/services/surfaceflinger/TransactionCompletedThread.cpp
index 34df606..b1bf4e2 100644
--- a/services/surfaceflinger/TransactionCompletedThread.cpp
+++ b/services/surfaceflinger/TransactionCompletedThread.cpp
@@ -141,12 +141,12 @@
} 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) {