Fix acquire and framenumber mismatch in transaction complete callback
Test: manual test with frame metrics cls
Test: frametimeline tests to follow
Change-Id: Idb51ce8f3f5d58391ab864f41d1b01031e2b0aac
diff --git a/services/surfaceflinger/BufferStateLayer.cpp b/services/surfaceflinger/BufferStateLayer.cpp
index cf87f62..763b453 100644
--- a/services/surfaceflinger/BufferStateLayer.cpp
+++ b/services/surfaceflinger/BufferStateLayer.cpp
@@ -452,6 +452,7 @@
if (willPresent) {
// If this transaction set an acquire fence on this layer, set its acquire time
handle->acquireTime = mCallbackHandleAcquireTime;
+ handle->frameNumber = mCurrentState.frameNumber;
// Notify the transaction completed thread that there is a pending latched callback
// handle
@@ -623,8 +624,9 @@
}
for (auto& handle : mDrawingState.callbackHandles) {
- handle->latchTime = latchTime;
- handle->frameNumber = mDrawingState.frameNumber;
+ if (handle->frameNumber == mDrawingState.frameNumber) {
+ handle->latchTime = latchTime;
+ }
}
const int32_t layerId = getSequence();