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

Commit 81ca00ff authored by Ady Abraham's avatar Ady Abraham
Browse files

SurfaceFlinger: DispSync: negative offsets when model is unlocked

When getting a HWVsync timestamp in DispSync, we correct the last event
time to reflect the actual HWVsync time by setting it based on HWVsync.
This logic needs to account for both positive and negative offsets.

Bug: 135631964
Test: sanity
Change-Id: I77a1e13d739e558d6cdf43c298e6fcee49d517b5
parent 769ab6f9
Loading
Loading
Loading
Loading
+6 −2
Original line number Original line Diff line number Diff line
@@ -92,8 +92,12 @@ public:
        mPeriod = period;
        mPeriod = period;
        if (!mModelLocked && referenceTimeChanged) {
        if (!mModelLocked && referenceTimeChanged) {
            for (auto& eventListener : mEventListeners) {
            for (auto& eventListener : mEventListeners) {
                eventListener.mLastEventTime =
                eventListener.mLastEventTime = mReferenceTime + mPhase + eventListener.mPhase;
                        mReferenceTime - mPeriod + mPhase + eventListener.mPhase;
                // If mLastEventTime is after mReferenceTime (can happen when positive phase offsets
                // are used) we treat it as like it happened in previous period.
                if (eventListener.mLastEventTime > mReferenceTime) {
                    eventListener.mLastEventTime -= mPeriod;
                }
            }
            }
        }
        }
        if (mTraceDetailedInfo) {
        if (mTraceDetailedInfo) {