Loading services/core/java/com/android/server/display/DisplayPowerController.java +12 −0 Original line number Original line Diff line number Diff line Loading @@ -544,6 +544,7 @@ final class DisplayPowerController { mScreenBrightnessRampAnimator = new RampAnimator<DisplayPowerState>( mScreenBrightnessRampAnimator = new RampAnimator<DisplayPowerState>( mPowerState, DisplayPowerState.SCREEN_BRIGHTNESS); mPowerState, DisplayPowerState.SCREEN_BRIGHTNESS); mScreenBrightnessRampAnimator.setListener(mRampAnimatorListener); // Initialize screen state for battery stats. // Initialize screen state for battery stats. try { try { Loading @@ -570,6 +571,13 @@ final class DisplayPowerController { } } }; }; private final RampAnimator.Listener mRampAnimatorListener = new RampAnimator.Listener() { @Override public void onAnimationEnd() { sendUpdatePowerState(); } }; private void updatePowerState() { private void updatePowerState() { // Update the power state request. // Update the power state request. final boolean mustNotify; final boolean mustNotify; Loading Loading @@ -753,6 +761,7 @@ final class DisplayPowerController { && !mScreenOnWasBlocked && !mScreenOnWasBlocked && !mElectronBeamOnAnimator.isStarted() && !mElectronBeamOnAnimator.isStarted() && !mElectronBeamOffAnimator.isStarted() && !mElectronBeamOffAnimator.isStarted() && !mScreenBrightnessRampAnimator.isAnimating() && mPowerState.waitUntilClean(mCleanListener)) { && mPowerState.waitUntilClean(mCleanListener)) { synchronized (mLock) { synchronized (mLock) { if (!mPendingRequestChangedLocked) { if (!mPendingRequestChangedLocked) { Loading Loading @@ -1290,6 +1299,9 @@ final class DisplayPowerController { pw.println(" mLastScreenAutoBrightnessGamma=" + mLastScreenAutoBrightnessGamma); pw.println(" mLastScreenAutoBrightnessGamma=" + mLastScreenAutoBrightnessGamma); pw.println(" mTwilight.getCurrentState()=" + mTwilight.getCurrentState()); pw.println(" mTwilight.getCurrentState()=" + mTwilight.getCurrentState()); pw.println(" mScreenBrightnessRampAnimator.isAnimating()=" + mScreenBrightnessRampAnimator.isAnimating()); if (mElectronBeamOnAnimator != null) { if (mElectronBeamOnAnimator != null) { pw.println(" mElectronBeamOnAnimator.isStarted()=" + pw.println(" mElectronBeamOnAnimator.isStarted()=" + mElectronBeamOnAnimator.isStarted()); mElectronBeamOnAnimator.isStarted()); Loading services/core/java/com/android/server/display/RampAnimator.java +23 −0 Original line number Original line Diff line number Diff line Loading @@ -39,6 +39,8 @@ final class RampAnimator<T> { private boolean mFirstTime = true; private boolean mFirstTime = true; private Listener mListener; public RampAnimator(T object, IntProperty<T> property) { public RampAnimator(T object, IntProperty<T> property) { mObject = object; mObject = object; mProperty = property; mProperty = property; Loading Loading @@ -92,6 +94,20 @@ final class RampAnimator<T> { return changed; 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() { private void postCallback() { mChoreographer.postCallback(Choreographer.CALLBACK_ANIMATION, mCallback, null); mChoreographer.postCallback(Choreographer.CALLBACK_ANIMATION, mCallback, null); } } Loading Loading @@ -131,7 +147,14 @@ final class RampAnimator<T> { postCallback(); postCallback(); } else { } else { mAnimating = false; mAnimating = false; if (mListener != null) { mListener.onAnimationEnd(); } } } } } }; }; public interface Listener { void onAnimationEnd(); } } } Loading
services/core/java/com/android/server/display/DisplayPowerController.java +12 −0 Original line number Original line Diff line number Diff line Loading @@ -544,6 +544,7 @@ final class DisplayPowerController { mScreenBrightnessRampAnimator = new RampAnimator<DisplayPowerState>( mScreenBrightnessRampAnimator = new RampAnimator<DisplayPowerState>( mPowerState, DisplayPowerState.SCREEN_BRIGHTNESS); mPowerState, DisplayPowerState.SCREEN_BRIGHTNESS); mScreenBrightnessRampAnimator.setListener(mRampAnimatorListener); // Initialize screen state for battery stats. // Initialize screen state for battery stats. try { try { Loading @@ -570,6 +571,13 @@ final class DisplayPowerController { } } }; }; private final RampAnimator.Listener mRampAnimatorListener = new RampAnimator.Listener() { @Override public void onAnimationEnd() { sendUpdatePowerState(); } }; private void updatePowerState() { private void updatePowerState() { // Update the power state request. // Update the power state request. final boolean mustNotify; final boolean mustNotify; Loading Loading @@ -753,6 +761,7 @@ final class DisplayPowerController { && !mScreenOnWasBlocked && !mScreenOnWasBlocked && !mElectronBeamOnAnimator.isStarted() && !mElectronBeamOnAnimator.isStarted() && !mElectronBeamOffAnimator.isStarted() && !mElectronBeamOffAnimator.isStarted() && !mScreenBrightnessRampAnimator.isAnimating() && mPowerState.waitUntilClean(mCleanListener)) { && mPowerState.waitUntilClean(mCleanListener)) { synchronized (mLock) { synchronized (mLock) { if (!mPendingRequestChangedLocked) { if (!mPendingRequestChangedLocked) { Loading Loading @@ -1290,6 +1299,9 @@ final class DisplayPowerController { pw.println(" mLastScreenAutoBrightnessGamma=" + mLastScreenAutoBrightnessGamma); pw.println(" mLastScreenAutoBrightnessGamma=" + mLastScreenAutoBrightnessGamma); pw.println(" mTwilight.getCurrentState()=" + mTwilight.getCurrentState()); pw.println(" mTwilight.getCurrentState()=" + mTwilight.getCurrentState()); pw.println(" mScreenBrightnessRampAnimator.isAnimating()=" + mScreenBrightnessRampAnimator.isAnimating()); if (mElectronBeamOnAnimator != null) { if (mElectronBeamOnAnimator != null) { pw.println(" mElectronBeamOnAnimator.isStarted()=" + pw.println(" mElectronBeamOnAnimator.isStarted()=" + mElectronBeamOnAnimator.isStarted()); mElectronBeamOnAnimator.isStarted()); Loading
services/core/java/com/android/server/display/RampAnimator.java +23 −0 Original line number Original line Diff line number Diff line Loading @@ -39,6 +39,8 @@ final class RampAnimator<T> { private boolean mFirstTime = true; private boolean mFirstTime = true; private Listener mListener; public RampAnimator(T object, IntProperty<T> property) { public RampAnimator(T object, IntProperty<T> property) { mObject = object; mObject = object; mProperty = property; mProperty = property; Loading Loading @@ -92,6 +94,20 @@ final class RampAnimator<T> { return changed; 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() { private void postCallback() { mChoreographer.postCallback(Choreographer.CALLBACK_ANIMATION, mCallback, null); mChoreographer.postCallback(Choreographer.CALLBACK_ANIMATION, mCallback, null); } } Loading Loading @@ -131,7 +147,14 @@ final class RampAnimator<T> { postCallback(); postCallback(); } else { } else { mAnimating = false; mAnimating = false; if (mListener != null) { mListener.onAnimationEnd(); } } } } } }; }; public interface Listener { void onAnimationEnd(); } } }