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

Commit c6e23d99 authored by Matthew Bouyack's avatar Matthew Bouyack Committed by android-build-merger
Browse files

Fixes vsync behavior in power mode transitions.

am: 4de4ee3c

Change-Id: I78e718bc1f9098e0da58257587062c11a8bd7e3a
parents eee8fc1c 4de4ee3c
Loading
Loading
Loading
Loading
+5 −2
Original line number Diff line number Diff line
@@ -2619,7 +2619,8 @@ void SurfaceFlinger::setPowerModeInternal(const sp<DisplayDevice>& hw,
    if (currentMode == HWC_POWER_MODE_OFF) {
        // Turn on the display
        getHwComposer().setPowerMode(type, mode);
        if (type == DisplayDevice::DISPLAY_PRIMARY) {
        if (type == DisplayDevice::DISPLAY_PRIMARY &&
            mode != HWC_POWER_MODE_DOZE_SUSPEND) {
            // FIXME: eventthread only knows about the main display right now
            mEventThread->onScreenAcquired();
            resyncToHardwareVsync(true);
@@ -2651,7 +2652,8 @@ void SurfaceFlinger::setPowerModeInternal(const sp<DisplayDevice>& hw,
        getHwComposer().setPowerMode(type, mode);
        mVisibleRegionsDirty = true;
        // from this point on, SF will stop drawing on this display
    } else if (mode == HWC_POWER_MODE_DOZE) {
    } else if (mode == HWC_POWER_MODE_DOZE ||
               mode == HWC_POWER_MODE_NORMAL) {
        // Update display while dozing
        getHwComposer().setPowerMode(type, mode);
        if (type == DisplayDevice::DISPLAY_PRIMARY) {
@@ -2668,6 +2670,7 @@ void SurfaceFlinger::setPowerModeInternal(const sp<DisplayDevice>& hw,
        }
        getHwComposer().setPowerMode(type, mode);
    } else {
        ALOGE("Attempting to set unknown power mode: %d\n", mode);
        getHwComposer().setPowerMode(type, mode);
    }
}
+5 −2
Original line number Diff line number Diff line
@@ -2535,7 +2535,8 @@ void SurfaceFlinger::setPowerModeInternal(const sp<DisplayDevice>& hw,
    if (currentMode == HWC_POWER_MODE_OFF) {
        // Turn on the display
        getHwComposer().setPowerMode(type, mode);
        if (type == DisplayDevice::DISPLAY_PRIMARY) {
        if (type == DisplayDevice::DISPLAY_PRIMARY &&
            mode != HWC_POWER_MODE_DOZE_SUSPEND) {
            // FIXME: eventthread only knows about the main display right now
            mEventThread->onScreenAcquired();
            resyncToHardwareVsync(true);
@@ -2567,7 +2568,8 @@ void SurfaceFlinger::setPowerModeInternal(const sp<DisplayDevice>& hw,
        getHwComposer().setPowerMode(type, mode);
        mVisibleRegionsDirty = true;
        // from this point on, SF will stop drawing on this display
    } else if (mode == HWC_POWER_MODE_DOZE) {
    } else if (mode == HWC_POWER_MODE_DOZE ||
               mode == HWC_POWER_MODE_NORMAL) {
        // Update display while dozing
        getHwComposer().setPowerMode(type, mode);
        if (type == DisplayDevice::DISPLAY_PRIMARY) {
@@ -2584,6 +2586,7 @@ void SurfaceFlinger::setPowerModeInternal(const sp<DisplayDevice>& hw,
        }
        getHwComposer().setPowerMode(type, mode);
    } else {
        ALOGE("Attempting to set unknown power mode: %d\n", mode);
        getHwComposer().setPowerMode(type, mode);
    }
}