Merge "Defer display ready until brightness ramp completes." into klp-modular-dev

This commit is contained in:
Jeff Brown
2014-05-21 05:09:15 +00:00
committed by Android (Google) Code Review
2 changed files with 35 additions and 0 deletions

View File

@@ -544,6 +544,7 @@ final class DisplayPowerController {
mScreenBrightnessRampAnimator = new RampAnimator<DisplayPowerState>(
mPowerState, DisplayPowerState.SCREEN_BRIGHTNESS);
mScreenBrightnessRampAnimator.setListener(mRampAnimatorListener);
// Initialize screen state for battery stats.
try {
@@ -570,6 +571,13 @@ final class DisplayPowerController {
}
};
private final RampAnimator.Listener mRampAnimatorListener = new RampAnimator.Listener() {
@Override
public void onAnimationEnd() {
sendUpdatePowerState();
}
};
private void updatePowerState() {
// Update the power state request.
final boolean mustNotify;
@@ -753,6 +761,7 @@ final class DisplayPowerController {
&& !mScreenOnWasBlocked
&& !mElectronBeamOnAnimator.isStarted()
&& !mElectronBeamOffAnimator.isStarted()
&& !mScreenBrightnessRampAnimator.isAnimating()
&& mPowerState.waitUntilClean(mCleanListener)) {
synchronized (mLock) {
if (!mPendingRequestChangedLocked) {
@@ -1290,6 +1299,9 @@ final class DisplayPowerController {
pw.println(" mLastScreenAutoBrightnessGamma=" + mLastScreenAutoBrightnessGamma);
pw.println(" mTwilight.getCurrentState()=" + mTwilight.getCurrentState());
pw.println(" mScreenBrightnessRampAnimator.isAnimating()=" +
mScreenBrightnessRampAnimator.isAnimating());
if (mElectronBeamOnAnimator != null) {
pw.println(" mElectronBeamOnAnimator.isStarted()=" +
mElectronBeamOnAnimator.isStarted());

View File

@@ -39,6 +39,8 @@ final class RampAnimator<T> {
private boolean mFirstTime = true;
private Listener mListener;
public RampAnimator(T object, IntProperty<T> property) {
mObject = object;
mProperty = property;
@@ -92,6 +94,20 @@ final class RampAnimator<T> {
return changed;
}
/**
* Returns true if the animation is running.
*/
public boolean isAnimating() {
return mAnimating;
}
/**
* Sets a listener to watch for animation events.
*/
public void setListener(Listener listener) {
mListener = listener;
}
private void postCallback() {
mChoreographer.postCallback(Choreographer.CALLBACK_ANIMATION, mCallback, null);
}
@@ -131,7 +147,14 @@ final class RampAnimator<T> {
postCallback();
} else {
mAnimating = false;
if (mListener != null) {
mListener.onAnimationEnd();
}
}
}
};
public interface Listener {
void onAnimationEnd();
}
}