diff --git a/services/core/java/com/android/server/wm/SurfaceAnimationRunner.java b/services/core/java/com/android/server/wm/SurfaceAnimationRunner.java index 1b2f9542df11d..98fcb0be935c8 100644 --- a/services/core/java/com/android/server/wm/SurfaceAnimationRunner.java +++ b/services/core/java/com/android/server/wm/SurfaceAnimationRunner.java @@ -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); } }