From b0022cc49371bfc5d9bd10fb8e60c29b1ff4aef6 Mon Sep 17 00:00:00 2001 From: Marissa Wall Date: Tue, 16 Apr 2019 14:19:55 -0700 Subject: 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 --- services/surfaceflinger/TransactionCompletedThread.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'services/surfaceflinger/TransactionCompletedThread.cpp') 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) { -- cgit v1.2.3-59-g8ed1b