am 77669abb: am 9beccf9f: Merge "Defer display ready until brightness ramp completes." into klp-modular-dev
* commit '77669abb8300b672700418216939b9253dc98bee':
Defer display ready until brightness ramp completes.
diff --git a/services/core/java/com/android/server/display/DisplayPowerController.java b/services/core/java/com/android/server/display/DisplayPowerController.java
index bc264fa..a98c340 100644
--- a/services/core/java/com/android/server/display/DisplayPowerController.java
+++ b/services/core/java/com/android/server/display/DisplayPowerController.java
@@ -390,6 +390,7 @@
mScreenBrightnessRampAnimator = new RampAnimator<DisplayPowerState>(
mPowerState, DisplayPowerState.SCREEN_BRIGHTNESS);
+ mScreenBrightnessRampAnimator.setListener(mRampAnimatorListener);
// Initialize screen state for battery stats.
try {
@@ -416,6 +417,13 @@
}
};
+ private final RampAnimator.Listener mRampAnimatorListener = new RampAnimator.Listener() {
+ @Override
+ public void onAnimationEnd() {
+ sendUpdatePowerState();
+ }
+ };
+
private void updatePowerState() {
// Update the power state request.
final boolean mustNotify;
@@ -602,6 +610,7 @@
&& !mScreenOnWasBlocked
&& !mElectronBeamOnAnimator.isStarted()
&& !mElectronBeamOffAnimator.isStarted()
+ && !mScreenBrightnessRampAnimator.isAnimating()
&& mPowerState.waitUntilClean(mCleanListener)) {
synchronized (mLock) {
if (!mPendingRequestChangedLocked) {
@@ -843,6 +852,9 @@
pw.println(" mScreenOffBecauseOfProximity=" + mScreenOffBecauseOfProximity);
pw.println(" mUsingScreenAutoBrightness=" + mUsingScreenAutoBrightness);
+ 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 @@
private boolean mFirstTime = true;
+ private Listener mListener;
+
public RampAnimator(T object, IntProperty<T> property) {
mObject = object;
mProperty = property;
@@ -92,6 +94,20 @@
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 @@
postCallback();
} else {
mAnimating = false;
+ if (mListener != null) {
+ mListener.onAnimationEnd();
+ }
}
}
};
+
+ public interface Listener {
+ void onAnimationEnd();
+ }
}