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

Commit 0a3c4d6f authored by Dan Stoza's avatar Dan Stoza
Browse files

DispSync: Don't resync if HW vsync is unavailable

Don't attempt to resync to hardware vsync if it's not available (if
the display is blanked), which should prevent unusual sequences of
commands (enable vsync, then unblank) to hardware composer.

Bug: 28177844
Change-Id: I9d6046fb0a346830e98829fd250642f0809d7e31
parent 6328134d
Loading
Loading
Loading
Loading
+3 −2
Original line number Diff line number Diff line
@@ -800,7 +800,8 @@ void SurfaceFlinger::resyncToHardwareVsync(bool makeAvailable) {
    if (makeAvailable) {
        mHWVsyncAvailable = true;
    } else if (!mHWVsyncAvailable) {
        ALOGE("resyncToHardwareVsync called when HW vsync unavailable");
        // Hardware vsync is not currently available, so abort the resync
        // attempt for now
        return;
    }

@@ -834,7 +835,7 @@ void SurfaceFlinger::disableHardwareVsync(bool makeUnavailable) {
void SurfaceFlinger::resyncWithRateLimit() {
    static constexpr nsecs_t kIgnoreDelay = ms2ns(500);
    if (systemTime() - mLastSwapTime > kIgnoreDelay) {
        resyncToHardwareVsync(true);
        resyncToHardwareVsync(false);
    }
}

+3 −2
Original line number Diff line number Diff line
@@ -820,7 +820,8 @@ void SurfaceFlinger::resyncToHardwareVsync(bool makeAvailable) {
    if (makeAvailable) {
        mHWVsyncAvailable = true;
    } else if (!mHWVsyncAvailable) {
        ALOGE("resyncToHardwareVsync called when HW vsync unavailable");
        // Hardware vsync is not currently available, so abort the resync
        // attempt for now
        return;
    }

@@ -854,7 +855,7 @@ void SurfaceFlinger::disableHardwareVsync(bool makeUnavailable) {
void SurfaceFlinger::resyncWithRateLimit() {
    static constexpr nsecs_t kIgnoreDelay = ms2ns(500);
    if (systemTime() - mLastSwapTime > kIgnoreDelay) {
        resyncToHardwareVsync(true);
        resyncToHardwareVsync(false);
    }
}