summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndroid Build Coastguard Worker <android-build-coastguard-worker@google.com>2021-11-25 00:09:16 +0000
committerAndroid Build Coastguard Worker <android-build-coastguard-worker@google.com>2021-11-25 00:09:16 +0000
commit84274db7f644dcffc4ea1047605cbc96d4d2d7ea (patch)
treeab177ec1761fe7c84982dc885e5d55f71fca2d05
parentb84185571103adbc95d076f9eb68f3412a664400 (diff)
parent3316c9775acab304c5f790b6fa48a576563b7bcc (diff)
downloadnative-84274db7f644dcffc4ea1047605cbc96d4d2d7ea.tar.gz
Snap for 7944517 from 3316c9775acab304c5f790b6fa48a576563b7bcc to sc-d2-release
Change-Id: I7496103fea007da5b4ebcc0836dc6f66b31ee5d3
-rw-r--r--libs/gui/BLASTBufferQueue.cpp10
1 files changed, 8 insertions, 2 deletions
diff --git a/libs/gui/BLASTBufferQueue.cpp b/libs/gui/BLASTBufferQueue.cpp
index 39dd5d9552..085a11a88e 100644
--- a/libs/gui/BLASTBufferQueue.cpp
+++ b/libs/gui/BLASTBufferQueue.cpp
@@ -529,7 +529,6 @@ void BLASTBufferQueue::acquireNextBufferLocked(
// Ensure BLASTBufferQueue stays alive until we receive the transaction complete callback.
incStrong((void*)transactionCallbackThunk);
- incStrong((void*)transactionCommittedCallbackThunk);
const bool sizeHasChanged = mRequestedSize != mSize;
mSize = mRequestedSize;
@@ -550,7 +549,7 @@ void BLASTBufferQueue::acquireNextBufferLocked(
t->setAcquireFence(mSurfaceControl,
bufferItem.mFence ? new Fence(bufferItem.mFence->dup()) : Fence::NO_FENCE);
t->addTransactionCompletedCallback(transactionCallbackThunk, static_cast<void*>(this));
- t->addTransactionCommittedCallback(transactionCommittedCallbackThunk, static_cast<void*>(this));
+
mSurfaceControlsWithPendingCallback.push(mSurfaceControl);
if (updateDestinationFrame) {
@@ -673,6 +672,13 @@ void BLASTBufferQueue::onFrameAvailable(const BufferItem& item) {
if (nextTransactionSet) {
acquireNextBufferLocked(std::move(mNextTransaction));
+
+ // Only need a commit callback when syncing to ensure the buffer that's synced has been sent
+ // to SF
+ incStrong((void*)transactionCommittedCallbackThunk);
+ mNextTransaction->addTransactionCommittedCallback(transactionCommittedCallbackThunk,
+ static_cast<void*>(this));
+
mNextTransaction = nullptr;
mWaitForTransactionCallback = true;
} else if (!mWaitForTransactionCallback) {