summaryrefslogtreecommitdiff
path: root/libs/gui/BLASTBufferQueue.cpp
diff options
context:
space:
mode:
author Android Build Coastguard Worker <android-build-coastguard-worker@google.com> 2024-06-13 23:18:59 +0000
committer Android Build Coastguard Worker <android-build-coastguard-worker@google.com> 2024-06-13 23:18:59 +0000
commit50e5df029202fb93e089e9bd3be3c9c97e28e69e (patch)
tree60ced5771eacf20105d94865f6b84cca77d31c7c /libs/gui/BLASTBufferQueue.cpp
parent712b9fe85a5e21c337963b020192899715bfb197 (diff)
parent6312599b995865412436fb9033fbdf9efe99bd4f (diff)
Snap for 11967491 from 6312599b995865412436fb9033fbdf9efe99bd4f to 24Q3-release
Change-Id: I96709d9f39e77eb8c5121504ebac9152bede06ab
Diffstat (limited to 'libs/gui/BLASTBufferQueue.cpp')
-rw-r--r--libs/gui/BLASTBufferQueue.cpp24
1 files changed, 12 insertions, 12 deletions
diff --git a/libs/gui/BLASTBufferQueue.cpp b/libs/gui/BLASTBufferQueue.cpp
index f317a2eea0..739c3c2a41 100644
--- a/libs/gui/BLASTBufferQueue.cpp
+++ b/libs/gui/BLASTBufferQueue.cpp
@@ -613,8 +613,19 @@ status_t BLASTBufferQueue::acquireNextBufferLocked(
std::bind(releaseBufferCallbackThunk, wp<BLASTBufferQueue>(this) /* callbackContext */,
std::placeholders::_1, std::placeholders::_2, std::placeholders::_3);
sp<Fence> fence = bufferItem.mFence ? new Fence(bufferItem.mFence->dup()) : Fence::NO_FENCE;
+
+ nsecs_t dequeueTime = -1;
+ {
+ std::lock_guard _lock{mTimestampMutex};
+ auto dequeueTimeIt = mDequeueTimestamps.find(buffer->getId());
+ if (dequeueTimeIt != mDequeueTimestamps.end()) {
+ dequeueTime = dequeueTimeIt->second;
+ mDequeueTimestamps.erase(dequeueTimeIt);
+ }
+ }
+
t->setBuffer(mSurfaceControl, buffer, fence, bufferItem.mFrameNumber, mProducerId,
- releaseBufferCallback);
+ releaseBufferCallback, dequeueTime);
t->setDataspace(mSurfaceControl, static_cast<ui::Dataspace>(bufferItem.mDataSpace));
t->setHdrMetadata(mSurfaceControl, bufferItem.mHdrMetadata);
t->setSurfaceDamageRegion(mSurfaceControl, bufferItem.mSurfaceDamage);
@@ -658,17 +669,6 @@ status_t BLASTBufferQueue::acquireNextBufferLocked(
mPendingFrameTimelines.pop();
}
- {
- std::lock_guard _lock{mTimestampMutex};
- auto dequeueTime = mDequeueTimestamps.find(buffer->getId());
- if (dequeueTime != mDequeueTimestamps.end()) {
- Parcel p;
- p.writeInt64(dequeueTime->second);
- t->setMetadata(mSurfaceControl, gui::METADATA_DEQUEUE_TIME, p);
- mDequeueTimestamps.erase(dequeueTime);
- }
- }
-
mergePendingTransactions(t, bufferItem.mFrameNumber);
if (applyTransaction) {
// All transactions on our apply token are one-way. See comment on mAppliedLastTransaction