OSDN Git Service

Prevent setting negative alpha for dim animations.
authorchaviw <chaviw@google.com>
Fri, 9 Feb 2018 22:36:10 +0000 (14:36 -0800)
committerchaviw <chaviw@google.com>
Fri, 9 Feb 2018 23:23:45 +0000 (15:23 -0800)
When apply in the dim animation is called, the currentPlayTime value can
be greater than the total duration. If that's the case, the alpha
value would be set to a negative value. Instead, if the currentPlayTime is
greater than duration, just set the final alpha value.

Change-Id: I77b7c512cc8832c2a31e20d49c14550da2cff7cd
Fixes: 73152600
Test: No more flashing dim

services/core/java/com/android/server/wm/SurfaceAnimationRunner.java

index 1b2f954..98fcb0b 100644 (file)
@@ -169,7 +169,12 @@ class SurfaceAnimationRunner {
         anim.addUpdateListener(animation -> {
             synchronized (mCancelLock) {
                 if (!a.mCancelled) {
-                    applyTransformation(a, mFrameTransaction, anim.getCurrentPlayTime());
+                    final long duration = anim.getDuration();
+                    long currentPlayTime = anim.getCurrentPlayTime();
+                    if (currentPlayTime > duration) {
+                        currentPlayTime = duration;
+                    }
+                    applyTransformation(a, mFrameTransaction, currentPlayTime);
                 }
             }