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

Commit 43d4e6a7 authored by Tim Murray's avatar Tim Murray Committed by android-build-merger
Browse files

Disable SCHED_FIFO when turning off the display. am: f9d4e44f am: d406094f

am: 53b2a9f8

Change-Id: I46a698104605c50d595023118346a656b31fb29a
parents bc6a2c9d 53b2a9f8
Loading
Loading
Loading
Loading
+13 −0
Original line number Diff line number Diff line
@@ -2689,6 +2689,7 @@ 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) {
            // FIXME: eventthread only knows about the main display right now
@@ -2699,7 +2700,19 @@ void SurfaceFlinger::setPowerModeInternal(const sp<DisplayDevice>& hw,
        mVisibleRegionsDirty = true;
        mHasPoweredOff = true;
        repaintEverything();

        struct sched_param param = {0};
        param.sched_priority = 1;
        if (sched_setscheduler(0, SCHED_FIFO, &param) != 0) {
            ALOGW("Couldn't set SCHED_FIFO on display on");
        }
    } else if (mode == HWC_POWER_MODE_OFF) {
        // Turn off the display
        struct sched_param param = {0};
        if (sched_setscheduler(0, SCHED_OTHER, &param) != 0) {
            ALOGW("Couldn't set SCHED_OTHER on display off");
        }

        if (type == DisplayDevice::DISPLAY_PRIMARY) {
            disableHardwareVsync(true); // also cancels any in-progress resync

+13 −0
Original line number Diff line number Diff line
@@ -2606,6 +2606,7 @@ 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) {
            // FIXME: eventthread only knows about the main display right now
@@ -2616,7 +2617,19 @@ void SurfaceFlinger::setPowerModeInternal(const sp<DisplayDevice>& hw,
        mVisibleRegionsDirty = true;
        mHasPoweredOff = true;
        repaintEverything();

        struct sched_param param = {0};
        param.sched_priority = 1;
        if (sched_setscheduler(0, SCHED_FIFO, &param) != 0) {
            ALOGW("Couldn't set SCHED_FIFO on display on");
        }
    } else if (mode == HWC_POWER_MODE_OFF) {
        // Turn off the display
        struct sched_param param = {0};
        if (sched_setscheduler(0, SCHED_OTHER, &param) != 0) {
            ALOGW("Couldn't set SCHED_OTHER on display off");
        }

        if (type == DisplayDevice::DISPLAY_PRIMARY) {
            disableHardwareVsync(true); // also cancels any in-progress resync