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

Commit 4344553c authored by Ady Abraham's avatar Ady Abraham Committed by Ana Krulec
Browse files

SurfaceFlinger: clamp frame refresh duration to min refresh duration

Some applications may send doubles frames which are scheduled to be
presented very close to each other. In this case to avoid calculating
a very high fps for the layer, clamp the refresh duration to the minimal
value allowed for the layer.

Test: YouTube play "YouTube 60fps Tester" video.
Bug: 139209733
Change-Id: I4bcdfad65b57782ec6e346e8d884bfb6e2abac4d
(cherry picked from commit cdd0f9d8)
Merged-In: I4bcdfad65b57782ec6e346e8d884bfb6e2abac4d
parent ac1aeaff
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -43,7 +43,7 @@ void LayerInfo::setLastPresentTime(nsecs_t lastPresentTime) {
    mLastPresentTime = lastPresentTime;
    // Ignore time diff that are too high - those are stale values
    if (timeDiff > OBSOLETE_TIME_EPSILON_NS.count()) return;
    const nsecs_t refreshDuration = (timeDiff > 0) ? timeDiff : mMinRefreshDuration;
    const nsecs_t refreshDuration = std::max(timeDiff, mMinRefreshDuration);
    const int fps = 1e9f / refreshDuration;
    mRefreshRateHistory.insertRefreshRate(fps);
}