Fix dequeus outside of frame drawing
Bug: 62213889 Test: Repro steps in bug Change-Id: I8fc407b280ba82c669fc2bb03750cab139adb965
This commit is contained in:
@@ -436,8 +436,15 @@ void CanvasContext::draw() {
|
||||
swap.vsyncTime = mRenderThread.timeLord().latestVsync();
|
||||
if (mNativeSurface.get()) {
|
||||
int durationUs;
|
||||
mNativeSurface->query(NATIVE_WINDOW_LAST_DEQUEUE_DURATION, &durationUs);
|
||||
swap.dequeueDuration = us2ns(durationUs);
|
||||
nsecs_t dequeueStart = mNativeSurface->getLastDequeueStartTime();
|
||||
if (dequeueStart < mCurrentFrameInfo->get(FrameInfoIndex::Vsync)) {
|
||||
// Ignoring dequeue duration as it happened prior to vsync
|
||||
// and thus is not part of the frame.
|
||||
swap.dequeueDuration = 0;
|
||||
} else {
|
||||
mNativeSurface->query(NATIVE_WINDOW_LAST_DEQUEUE_DURATION, &durationUs);
|
||||
swap.dequeueDuration = us2ns(durationUs);
|
||||
}
|
||||
mNativeSurface->query(NATIVE_WINDOW_LAST_QUEUE_DURATION, &durationUs);
|
||||
swap.queueDuration = us2ns(durationUs);
|
||||
} else {
|
||||
|
||||
Reference in New Issue
Block a user