diff options
author | Jeff Brown <jeffbrown@google.com> | 2014-05-20 22:02:46 -0700 |
---|---|---|
committer | Jeff Brown <jeffbrown@google.com> | 2014-05-20 22:02:46 -0700 |
commit | 4255869ac00e700395832ee73b2294603d4b6ece (patch) | |
tree | 7ecd9c102d3a3d65ca404b4ec811005908754077 /services/core/java | |
parent | 6d8fd27e51d799cf7418b14092b5e806d9792812 (diff) | |
download | frameworks_base-4255869ac00e700395832ee73b2294603d4b6ece.zip frameworks_base-4255869ac00e700395832ee73b2294603d4b6ece.tar.gz frameworks_base-4255869ac00e700395832ee73b2294603d4b6ece.tar.bz2 |
Defer display ready until brightness ramp completes.
Bug: 14494096
Change-Id: I6da6fffbbce2c7058170e5c6139eae4cb5a06d88
Diffstat (limited to 'services/core/java')
-rw-r--r-- | services/core/java/com/android/server/display/DisplayPowerController.java | 12 | ||||
-rw-r--r-- | services/core/java/com/android/server/display/RampAnimator.java | 23 |
2 files changed, 35 insertions, 0 deletions
diff --git a/services/core/java/com/android/server/display/DisplayPowerController.java b/services/core/java/com/android/server/display/DisplayPowerController.java index 279a9cc..47406a1 100644 --- a/services/core/java/com/android/server/display/DisplayPowerController.java +++ b/services/core/java/com/android/server/display/DisplayPowerController.java @@ -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()); diff --git a/services/core/java/com/android/server/display/RampAnimator.java b/services/core/java/com/android/server/display/RampAnimator.java index 6688d6a..ad1e857 100644 --- a/services/core/java/com/android/server/display/RampAnimator.java +++ b/services/core/java/com/android/server/display/RampAnimator.java @@ -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(); + } } |