From dfca3ecce2a0c045aa943fc4dfd6d2d33d43a1e0 Mon Sep 17 00:00:00 2001 From: Valerie Hau Date: Tue, 17 Dec 2019 08:50:33 -0800 Subject: Fix callback drop callbacks can be registered on any thread at any time. Do not clear mCompletedTransactions unless there are no associated stats Bug: 146345307, 141706317 Test: build, boot, libsurfaceflinger_unittest, SurfaceFlinger_test Change-Id: I659604c6be578417ebac7baf125510cddfbfd794 --- services/surfaceflinger/TransactionCompletedThread.cpp | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/services/surfaceflinger/TransactionCompletedThread.cpp b/services/surfaceflinger/TransactionCompletedThread.cpp index c15355d338..1e0719159e 100644 --- a/services/surfaceflinger/TransactionCompletedThread.cpp +++ b/services/surfaceflinger/TransactionCompletedThread.cpp @@ -320,8 +320,16 @@ void TransactionCompletedThread::threadMain() { interface_cast(listenerStats.listener) ->onTransactionCompleted(listenerStats); listener->unlinkToDeath(mDeathRecipient); + if (transactionStatsDeque.empty()) { + completedTransactionsItr = + mCompletedTransactions.erase(completedTransactionsItr); + } else { + completedTransactionsItr++; + } + } else { + completedTransactionsItr = + mCompletedTransactions.erase(completedTransactionsItr); } - completedTransactionsItr = mCompletedTransactions.erase(completedTransactionsItr); } else { completedTransactionsItr++; } -- cgit v1.2.3-59-g8ed1b