Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 32414eea authored by John Reck's avatar John Reck
Browse files

Fix dequeus outside of frame drawing

Bug: 62213889
Test: Repro steps in bug
Change-Id: I8fc407b280ba82c669fc2bb03750cab139adb965
parent f220d95f
Loading
Loading
Loading
Loading
+9 −2
Original line number Diff line number Diff line
@@ -436,8 +436,15 @@ void CanvasContext::draw() {
        swap.vsyncTime = mRenderThread.timeLord().latestVsync();
        if (mNativeSurface.get()) {
            int 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 {