diff --git a/services/core/java/com/android/server/wm/WindowManagerService.java b/services/core/java/com/android/server/wm/WindowManagerService.java index 025153706922e..7df5744cdf15c 100644 --- a/services/core/java/com/android/server/wm/WindowManagerService.java +++ b/services/core/java/com/android/server/wm/WindowManagerService.java @@ -8105,11 +8105,10 @@ public class WindowManagerService extends IWindowManager.Stub // This could prevent if there is no container animation, we still have to apply the // pending transaction and exit waiting. mAnimator.mNotifyWhenNoAnimation = true; - WindowContainer animatingContainer = null; - while (mAnimator.isAnimationScheduled() || timeoutRemaining > 0) { - animatingContainer = mRoot.getAnimatingContainer(TRANSITION | CHILDREN, - ANIMATION_TYPE_ALL); - if (animatingContainer == null) { + while (timeoutRemaining > 0) { + boolean isAnimating = mAnimator.isAnimationScheduled() + || mRoot.isAnimating(TRANSITION | CHILDREN, ANIMATION_TYPE_ALL); + if (!isAnimating) { break; } long startTime = System.currentTimeMillis(); @@ -8121,6 +8120,9 @@ public class WindowManagerService extends IWindowManager.Stub } mAnimator.mNotifyWhenNoAnimation = false; + WindowContainer animatingContainer; + animatingContainer = mRoot.getAnimatingContainer(TRANSITION | CHILDREN, + ANIMATION_TYPE_ALL); if (mAnimator.isAnimationScheduled() || animatingContainer != null) { Slog.w(TAG, "Timed out waiting for animations to complete," + " animatingContainer=" + animatingContainer