Loading services/java/com/android/server/power/DisplayPowerController.java +8 −10 Original line number Diff line number Diff line Loading @@ -206,11 +206,9 @@ final class DisplayPowerController { // May be 0 if no warm-up is required. private int mLightSensorWarmUpTimeConfig; // True if we should animate the backlight when turning the screen on or off, which // tends to be efficient for LCD displays but not for OLED displays. // False if we should play the electron beam animation instead, which is better for // OLED displays. private boolean mElectronBeamAnimatesBacklightConfig; // True if we should fade the screen while turning it off, false if we should play // a stylish electron beam animation instead. private boolean mElectronBeamFadesConfig; // The pending power request. // Initially null until the first call to requestPowerState. Loading Loading @@ -396,7 +394,7 @@ final class DisplayPowerController { mScreenBrightnessRangeMinimum = clampAbsoluteBrightness(screenBrightnessMinimum); mScreenBrightnessRangeMaximum = PowerManager.BRIGHTNESS_ON; mElectronBeamAnimatesBacklightConfig = resources.getBoolean( mElectronBeamFadesConfig = resources.getBoolean( com.android.internal.R.bool.config_animateScreenLights); if (!DEBUG_PRETEND_PROXIMITY_SENSOR_ABSENT) { Loading Loading @@ -682,8 +680,8 @@ final class DisplayPowerController { if (mPowerState.getElectronBeamLevel() == 1.0f) { mPowerState.dismissElectronBeam(); } else if (mPowerState.prepareElectronBeam( mElectronBeamAnimatesBacklightConfig ? ElectronBeam.MODE_BLANK : mElectronBeamFadesConfig ? ElectronBeam.MODE_FADE : ElectronBeam.MODE_WARM_UP)) { mElectronBeamOnAnimator.start(); } else { Loading @@ -704,8 +702,8 @@ final class DisplayPowerController { if (mPowerState.getElectronBeamLevel() == 0.0f) { setScreenOn(false); } else if (mPowerState.prepareElectronBeam( mElectronBeamAnimatesBacklightConfig ? ElectronBeam.MODE_BLANK : mElectronBeamFadesConfig ? ElectronBeam.MODE_FADE : ElectronBeam.MODE_COOL_DOWN) && mPowerState.isScreenOn()) { mElectronBeamOffAnimator.start(); Loading services/java/com/android/server/power/ElectronBeam.java +20 −5 Original line number Diff line number Diff line Loading @@ -80,6 +80,7 @@ final class ElectronBeam { private EGLContext mEglContext; private EGLSurface mEglSurface; private boolean mSurfaceVisible; private float mSurfaceAlpha; // Texture names. We only use one texture, which contains the screenshot. private final int[] mTexNames = new int[1]; Loading @@ -90,9 +91,20 @@ final class ElectronBeam { private final FloatBuffer mVertexBuffer = createNativeFloatBuffer(8); private final FloatBuffer mTexCoordBuffer = createNativeFloatBuffer(8); /** * Animates an electron beam warming up. */ public static final int MODE_WARM_UP = 0; /** * Animates an electron beam shutting off. */ public static final int MODE_COOL_DOWN = 1; public static final int MODE_BLANK = 2; /** * Animates a simple dim layer to fade the contents of the screen in or out progressively. */ public static final int MODE_FADE = 2; public ElectronBeam(Display display) { mDisplay = display; Loading Loading @@ -138,7 +150,7 @@ final class ElectronBeam { private boolean tryPrepare() { if (createSurface()) { if (mMode == MODE_BLANK) { if (mMode == MODE_FADE) { return true; } return createEglContext() Loading Loading @@ -182,7 +194,7 @@ final class ElectronBeam { return false; } if (mMode == MODE_BLANK) { if (mMode == MODE_FADE) { return showSurface(1.0f - level); } Loading Loading @@ -504,7 +516,7 @@ final class ElectronBeam { if (mSurface == null) { try { int flags; if (mMode == MODE_BLANK) { if (mMode == MODE_FADE) { flags = Surface.FX_SURFACE_DIM | Surface.HIDDEN; } else { flags = Surface.OPAQUE | Surface.HIDDEN; Loading Loading @@ -579,11 +591,12 @@ final class ElectronBeam { } mSurface = null; mSurfaceVisible = false; mSurfaceAlpha = 0f; } } private boolean showSurface(float alpha) { if (!mSurfaceVisible) { if (!mSurfaceVisible || mSurfaceAlpha != alpha) { Surface.openTransaction(); try { mSurface.setLayer(ELECTRON_BEAM_LAYER); Loading @@ -593,6 +606,7 @@ final class ElectronBeam { Surface.closeTransaction(); } mSurfaceVisible = true; mSurfaceAlpha = alpha; } return true; } Loading Loading @@ -683,5 +697,6 @@ final class ElectronBeam { pw.println(" mDisplayWidth=" + mDisplayWidth); pw.println(" mDisplayHeight=" + mDisplayHeight); pw.println(" mSurfaceVisible=" + mSurfaceVisible); pw.println(" mSurfaceAlpha=" + mSurfaceAlpha); } } Loading
services/java/com/android/server/power/DisplayPowerController.java +8 −10 Original line number Diff line number Diff line Loading @@ -206,11 +206,9 @@ final class DisplayPowerController { // May be 0 if no warm-up is required. private int mLightSensorWarmUpTimeConfig; // True if we should animate the backlight when turning the screen on or off, which // tends to be efficient for LCD displays but not for OLED displays. // False if we should play the electron beam animation instead, which is better for // OLED displays. private boolean mElectronBeamAnimatesBacklightConfig; // True if we should fade the screen while turning it off, false if we should play // a stylish electron beam animation instead. private boolean mElectronBeamFadesConfig; // The pending power request. // Initially null until the first call to requestPowerState. Loading Loading @@ -396,7 +394,7 @@ final class DisplayPowerController { mScreenBrightnessRangeMinimum = clampAbsoluteBrightness(screenBrightnessMinimum); mScreenBrightnessRangeMaximum = PowerManager.BRIGHTNESS_ON; mElectronBeamAnimatesBacklightConfig = resources.getBoolean( mElectronBeamFadesConfig = resources.getBoolean( com.android.internal.R.bool.config_animateScreenLights); if (!DEBUG_PRETEND_PROXIMITY_SENSOR_ABSENT) { Loading Loading @@ -682,8 +680,8 @@ final class DisplayPowerController { if (mPowerState.getElectronBeamLevel() == 1.0f) { mPowerState.dismissElectronBeam(); } else if (mPowerState.prepareElectronBeam( mElectronBeamAnimatesBacklightConfig ? ElectronBeam.MODE_BLANK : mElectronBeamFadesConfig ? ElectronBeam.MODE_FADE : ElectronBeam.MODE_WARM_UP)) { mElectronBeamOnAnimator.start(); } else { Loading @@ -704,8 +702,8 @@ final class DisplayPowerController { if (mPowerState.getElectronBeamLevel() == 0.0f) { setScreenOn(false); } else if (mPowerState.prepareElectronBeam( mElectronBeamAnimatesBacklightConfig ? ElectronBeam.MODE_BLANK : mElectronBeamFadesConfig ? ElectronBeam.MODE_FADE : ElectronBeam.MODE_COOL_DOWN) && mPowerState.isScreenOn()) { mElectronBeamOffAnimator.start(); Loading
services/java/com/android/server/power/ElectronBeam.java +20 −5 Original line number Diff line number Diff line Loading @@ -80,6 +80,7 @@ final class ElectronBeam { private EGLContext mEglContext; private EGLSurface mEglSurface; private boolean mSurfaceVisible; private float mSurfaceAlpha; // Texture names. We only use one texture, which contains the screenshot. private final int[] mTexNames = new int[1]; Loading @@ -90,9 +91,20 @@ final class ElectronBeam { private final FloatBuffer mVertexBuffer = createNativeFloatBuffer(8); private final FloatBuffer mTexCoordBuffer = createNativeFloatBuffer(8); /** * Animates an electron beam warming up. */ public static final int MODE_WARM_UP = 0; /** * Animates an electron beam shutting off. */ public static final int MODE_COOL_DOWN = 1; public static final int MODE_BLANK = 2; /** * Animates a simple dim layer to fade the contents of the screen in or out progressively. */ public static final int MODE_FADE = 2; public ElectronBeam(Display display) { mDisplay = display; Loading Loading @@ -138,7 +150,7 @@ final class ElectronBeam { private boolean tryPrepare() { if (createSurface()) { if (mMode == MODE_BLANK) { if (mMode == MODE_FADE) { return true; } return createEglContext() Loading Loading @@ -182,7 +194,7 @@ final class ElectronBeam { return false; } if (mMode == MODE_BLANK) { if (mMode == MODE_FADE) { return showSurface(1.0f - level); } Loading Loading @@ -504,7 +516,7 @@ final class ElectronBeam { if (mSurface == null) { try { int flags; if (mMode == MODE_BLANK) { if (mMode == MODE_FADE) { flags = Surface.FX_SURFACE_DIM | Surface.HIDDEN; } else { flags = Surface.OPAQUE | Surface.HIDDEN; Loading Loading @@ -579,11 +591,12 @@ final class ElectronBeam { } mSurface = null; mSurfaceVisible = false; mSurfaceAlpha = 0f; } } private boolean showSurface(float alpha) { if (!mSurfaceVisible) { if (!mSurfaceVisible || mSurfaceAlpha != alpha) { Surface.openTransaction(); try { mSurface.setLayer(ELECTRON_BEAM_LAYER); Loading @@ -593,6 +606,7 @@ final class ElectronBeam { Surface.closeTransaction(); } mSurfaceVisible = true; mSurfaceAlpha = alpha; } return true; } Loading Loading @@ -683,5 +697,6 @@ final class ElectronBeam { pw.println(" mDisplayWidth=" + mDisplayWidth); pw.println(" mDisplayHeight=" + mDisplayHeight); pw.println(" mSurfaceVisible=" + mSurfaceVisible); pw.println(" mSurfaceAlpha=" + mSurfaceAlpha); } }