Merge "Remove ColorFade resouces when screen off." into mnc-dr-dev

This commit is contained in:
Michael Lentine
2015-10-13 22:51:12 +00:00
committed by Android (Google) Code Review
3 changed files with 41 additions and 11 deletions

View File

@@ -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.
@@ -312,6 +314,34 @@ final class ColorFade {
vtx.put(7, y);
}
/**
* Dismisses the color fade animation resources.
*
* This function destroys the resources that are created for the color fade
* animation but does not clean up the surface.
*/
public void dismissResources() {
if (DEBUG) {
Slog.d(TAG, "dismissResources");
}
if (mCreatedResources) {
attachEglContext();
try {
destroyScreenshotTexture();
destroyGLShaders();
destroyGLBuffers();
destroyEglSurface();
} finally {
detachEglContext();
}
// 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.
*
@@ -325,17 +355,8 @@ final class ColorFade {
}
if (mPrepared) {
attachEglContext();
try {
destroyScreenshotTexture();
destroyGLShaders();
destroyGLBuffers();
destroyEglSurface();
} finally {
detachEglContext();
}
dismissResources();
destroySurface();
GLES20.glFlush();
mPrepared = false;
}
}

View File

@@ -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 ?

View File

@@ -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.
*