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

Commit 13c589b6 authored by Jeff Brown's avatar Jeff Brown
Browse files

Animate brightness with electron beam.

Also added an internal flag to control whether the electron beam
on animation is used.  It's on for now but we might want to
turn if off if we can't get the HAL to provide the
necessary screen on synchronization on all devices.

Change-Id: Iaa3cfa0fd61de10174e68351e4db890eff2d2918
parent cc48c144
Loading
Loading
Loading
Loading
+18 −7
Original line number Original line Diff line number Diff line
@@ -70,6 +70,12 @@ final class DisplayPowerController {
    private static final boolean DEBUG_PRETEND_PROXIMITY_SENSOR_ABSENT = false;
    private static final boolean DEBUG_PRETEND_PROXIMITY_SENSOR_ABSENT = false;
    private static final boolean DEBUG_PRETEND_LIGHT_SENSOR_ABSENT = false;
    private static final boolean DEBUG_PRETEND_LIGHT_SENSOR_ABSENT = false;


    // If true, uses the electron beam on animation.
    // We might want to turn this off if we cannot get a guarantee that the screen
    // actually turns on and starts showing new content after the call to set the
    // screen state returns.
    private static final boolean USE_ELECTRON_BEAM_ON_ANIMATION = true;

    private static final int ELECTRON_BEAM_ON_ANIMATION_DURATION_MILLIS = 300;
    private static final int ELECTRON_BEAM_ON_ANIMATION_DURATION_MILLIS = 300;
    private static final int ELECTRON_BEAM_OFF_ANIMATION_DURATION_MILLIS = 600;
    private static final int ELECTRON_BEAM_OFF_ANIMATION_DURATION_MILLIS = 600;


@@ -550,6 +556,7 @@ final class DisplayPowerController {
                // on animation immediately then the results are pretty ugly.
                // on animation immediately then the results are pretty ugly.
                if (!mElectronBeamOffAnimator.isStarted()) {
                if (!mElectronBeamOffAnimator.isStarted()) {
                    setScreenOn(true);
                    setScreenOn(true);
                    if (USE_ELECTRON_BEAM_ON_ANIMATION) {
                        if (!mElectronBeamOnAnimator.isStarted()) {
                        if (!mElectronBeamOnAnimator.isStarted()) {
                            if (mPowerState.getElectronBeamLevel() == 1.0f) {
                            if (mPowerState.getElectronBeamLevel() == 1.0f) {
                                mPowerState.dismissElectronBeam();
                                mPowerState.dismissElectronBeam();
@@ -559,6 +566,10 @@ final class DisplayPowerController {
                                mElectronBeamOnAnimator.end();
                                mElectronBeamOnAnimator.end();
                            }
                            }
                        }
                        }
                    } else {
                        mPowerState.setElectronBeamLevel(1.0f);
                        mPowerState.dismissElectronBeam();
                    }
                }
                }
            } else {
            } else {
                // Want screen off.
                // Want screen off.
+3 −2
Original line number Original line Diff line number Diff line
@@ -242,8 +242,9 @@ final class DisplayPowerState {
                mElectronBeam.draw(mElectronBeamLevel);
                mElectronBeam.draw(mElectronBeamLevel);
            }
            }


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


            if ((mDirty & DIRTY_SCREEN_ON) != 0 && mScreenOn) {
            if ((mDirty & DIRTY_SCREEN_ON) != 0 && mScreenOn) {