diff options
author | Michael Lentine <mlentine@google.com> | 2015-10-13 22:51:12 +0000 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2015-10-13 22:51:12 +0000 |
commit | 50e796326a39cd15af9031a41e3fe30b1f0f35f6 (patch) | |
tree | 52d0dcb7b438dc927cb75c12f4df9a2ac4dde030 /services | |
parent | de612dc1d10d25e017ac911d0e7cca6709bdbb96 (diff) | |
parent | d73854dbfde6e034ae0a6d12c52930c5284a08bb (diff) | |
download | frameworks_base-50e796326a39cd15af9031a41e3fe30b1f0f35f6.zip frameworks_base-50e796326a39cd15af9031a41e3fe30b1f0f35f6.tar.gz frameworks_base-50e796326a39cd15af9031a41e3fe30b1f0f35f6.tar.bz2 |
Merge "Remove ColorFade resouces when screen off." into mnc-dr-dev
Diffstat (limited to 'services')
3 files changed, 39 insertions, 9 deletions
diff --git a/services/core/java/com/android/server/display/ColorFade.java b/services/core/java/com/android/server/display/ColorFade.java index bb4dbc3..835ba17 100644 --- a/services/core/java/com/android/server/display/ColorFade.java +++ b/services/core/java/com/android/server/display/ColorFade.java @@ -74,6 +74,7 @@ final class ColorFade { // Set to true when the animation context has been fully prepared. private boolean mPrepared; + private boolean mCreatedResources; private int mMode; private final DisplayManagerInternal mDisplayManagerInternal; @@ -169,6 +170,7 @@ final class ColorFade { } // Done. + mCreatedResources = true; mPrepared = true; // Dejanking optimization. @@ -313,18 +315,17 @@ final class ColorFade { } /** - * Dismisses the color fade animation surface and cleans up. + * Dismisses the color fade animation resources. * - * To prevent stray photons from leaking out after the color fade has been - * turned off, it is a good idea to defer dismissing the animation until the - * color fade has been turned back on fully. + * This function destroys the resources that are created for the color fade + * animation but does not clean up the surface. */ - public void dismiss() { + public void dismissResources() { if (DEBUG) { - Slog.d(TAG, "dismiss"); + Slog.d(TAG, "dismissResources"); } - if (mPrepared) { + if (mCreatedResources) { attachEglContext(); try { destroyScreenshotTexture(); @@ -334,8 +335,28 @@ final class ColorFade { } finally { detachEglContext(); } - destroySurface(); + // This is being called with no active context so shouldn't be + // needed but is safer to not change for now. GLES20.glFlush(); + mCreatedResources = false; + } + } + + /** + * Dismisses the color fade animation surface and cleans up. + * + * To prevent stray photons from leaking out after the color fade has been + * turned off, it is a good idea to defer dismissing the animation until the + * color fade has been turned back on fully. + */ + public void dismiss() { + if (DEBUG) { + Slog.d(TAG, "dismiss"); + } + + if (mPrepared) { + dismissResources(); + destroySurface(); mPrepared = false; } } diff --git a/services/core/java/com/android/server/display/DisplayPowerController.java b/services/core/java/com/android/server/display/DisplayPowerController.java index 452378f..7b49530 100644 --- a/services/core/java/com/android/server/display/DisplayPowerController.java +++ b/services/core/java/com/android/server/display/DisplayPowerController.java @@ -837,6 +837,7 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call if (mPendingScreenOff && target != Display.STATE_OFF) { setScreenState(Display.STATE_OFF); mPendingScreenOff = false; + mPowerState.dismissColorFadeResources(); } if (target == Display.STATE_ON) { @@ -910,6 +911,7 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call // A black surface is already hiding the contents of the screen. setScreenState(Display.STATE_OFF); mPendingScreenOff = false; + mPowerState.dismissColorFadeResources(); } else if (performScreenOffTransition && mPowerState.prepareColorFade(mContext, mColorFadeFadesConfig ? diff --git a/services/core/java/com/android/server/display/DisplayPowerState.java b/services/core/java/com/android/server/display/DisplayPowerState.java index 2eabd32..9862516 100644 --- a/services/core/java/com/android/server/display/DisplayPowerState.java +++ b/services/core/java/com/android/server/display/DisplayPowerState.java @@ -187,7 +187,7 @@ final class DisplayPowerState { } /** - * Dismisses the electron beam surface. + * Dismisses the color fade surface. */ public void dismissColorFade() { mColorFade.dismiss(); @@ -195,6 +195,13 @@ final class DisplayPowerState { mColorFadeReady = true; } + /** + * Dismisses the color fade resources. + */ + public void dismissColorFadeResources() { + mColorFade.dismissResources(); + } + /** * Sets the level of the electron beam steering current. * |