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();
+    }
 }