Prevent unnecessary reordering of the home stack
- Just cancel the recents animation in-place when handling the home button
to prevent it from being repositioned to the bottom (which stops home)
and then starting it again (which restarts it)
Bug: 74405472
Test: Press home from an app, ensure launcher stop is only called once
Change-Id: Id41aa2f77c01767cc2c35445458b8f2db81200fc
diff --git a/services/core/java/com/android/server/wm/BoundsAnimationController.java b/services/core/java/com/android/server/wm/BoundsAnimationController.java
index ba67ff6..112d93c 100644
--- a/services/core/java/com/android/server/wm/BoundsAnimationController.java
+++ b/services/core/java/com/android/server/wm/BoundsAnimationController.java
@@ -161,7 +161,10 @@
// Timeout callback to ensure we continue the animation if waiting for resuming or app
// windows drawn fails
- private final Runnable mResumeRunnable = () -> resume();
+ private final Runnable mResumeRunnable = () -> {
+ if (DEBUG) Slog.d(TAG, "pause: timed out waiting for windows drawn");
+ resume();
+ };
BoundsAnimator(BoundsAnimationTarget target, Rect from, Rect to,
@SchedulePipModeChangedState int schedulePipModeChangedState,
@@ -213,7 +216,7 @@
// When starting an animation from fullscreen, pause here and wait for the
// windows-drawn signal before we start the rest of the transition down into PiP.
- if (mMoveFromFullscreen) {
+ if (mMoveFromFullscreen && mTarget.shouldDeferStartOnMoveToFullscreen()) {
pause();
}
} else if (mPrevSchedulePipModeChangedState == SCHEDULE_PIP_MODE_CHANGED_ON_END &&