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

Commit 735f740f authored by Jeff Brown's avatar Jeff Brown
Browse files

Set backlight brightness in correct order.

Disable backlight before turning off the screen.
Enable backlight after turning on the screen.

Bug: 7016215
Change-Id: Idb763f85f7a40e852483c57e0a0d1b27eb943f08
parent 0b62fa23
Loading
Loading
Loading
Loading
+7 −5
Original line number Diff line number Diff line
@@ -239,6 +239,7 @@ final class DisplayPowerState {
    private void apply() {
        if (mDirty != 0) {
            if ((mDirty & DIRTY_SCREEN_ON) != 0 && !mScreenOn) {
                mScreenBrightnessModulator.setBrightness(0, true /*sync*/);
                PowerManagerService.nativeSetScreenState(false);
            }

@@ -246,15 +247,16 @@ final class DisplayPowerState {
                mElectronBeam.draw(mElectronBeamLevel);
            }

            if ((mDirty & (DIRTY_BRIGHTNESS | DIRTY_SCREEN_ON | DIRTY_ELECTRON_BEAM)) != 0) {
                mScreenBrightnessModulator.setBrightness(mScreenOn ?
                        (int)(mScreenBrightness * mElectronBeamLevel) : 0);
            }

            if ((mDirty & DIRTY_SCREEN_ON) != 0 && mScreenOn) {
                PowerManagerService.nativeSetScreenState(true);
            }

            if ((mDirty & (DIRTY_BRIGHTNESS | DIRTY_SCREEN_ON | DIRTY_ELECTRON_BEAM)) != 0
                    && mScreenOn) {
                mScreenBrightnessModulator.setBrightness(
                        (int)(mScreenBrightness * mElectronBeamLevel), false /*sync*/);
            }

            mDirty = 0;

            if (mCleanListener != null) {
+13 −2
Original line number Diff line number Diff line
@@ -49,11 +49,12 @@ final class PhotonicModulator {
    }

    /**
     * Asynchronously sets the backlight brightness.
     * Sets the backlight brightness, synchronously or asynchronously.
     *
     * @param lightValue The new light value, from 0 to 255.
     * @param sync If true, waits for the brightness change to complete before returning.
     */
    public void setBrightness(int lightValue) {
    public void setBrightness(int lightValue, boolean sync) {
        synchronized (mLock) {
            if (lightValue != mPendingLightValue) {
                mPendingLightValue = lightValue;
@@ -63,6 +64,15 @@ final class PhotonicModulator {
                    mExecutor.execute(mTask);
                }
            }
            if (sync) {
                while (mPendingChange) {
                    try {
                        mLock.wait();
                    } catch (InterruptedException ex) {
                        // ignore it
                    }
                }
            }
        }
    }

@@ -76,6 +86,7 @@ final class PhotonicModulator {
                    if (newLightValue == mActualLightValue) {
                        mSuspendBlocker.release();
                        mPendingChange = false;
                        mLock.notifyAll();
                        return;
                    }
                    mActualLightValue = newLightValue;