summaryrefslogtreecommitdiffstats
path: root/services
diff options
context:
space:
mode:
authorMichael Lentine <mlentine@google.com>2015-10-13 22:51:12 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2015-10-13 22:51:12 +0000
commit50e796326a39cd15af9031a41e3fe30b1f0f35f6 (patch)
tree52d0dcb7b438dc927cb75c12f4df9a2ac4dde030 /services
parentde612dc1d10d25e017ac911d0e7cca6709bdbb96 (diff)
parentd73854dbfde6e034ae0a6d12c52930c5284a08bb (diff)
downloadframeworks_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')
-rw-r--r--services/core/java/com/android/server/display/ColorFade.java37
-rw-r--r--services/core/java/com/android/server/display/DisplayPowerController.java2
-rw-r--r--services/core/java/com/android/server/display/DisplayPowerState.java9
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.
*