Fix flicker to OVERVIEW state during quick switch
Here's what was happening:
- When animating to a new task, the launcher controller ends first (when
quick switching it likely ends immediately since we're already scaled up).
- Then we get onApplyWindowInsets(), which re-builds the launcher controller.
- Finally, the window animation ends, invalidating the handler and ending
the new controller, which sets the state to OVERVIEW.
To fix this, never create a new controller if it has ever been started.
Bug: 133508173
Change-Id: Ibd0e18e488353df73159ffbdd9a3b335bed57d98
diff --git a/quickstep/recents_ui_overrides/src/com/android/quickstep/WindowTransformSwipeHandler.java b/quickstep/recents_ui_overrides/src/com/android/quickstep/WindowTransformSwipeHandler.java
index 87b7326..45f34e7 100644
--- a/quickstep/recents_ui_overrides/src/com/android/quickstep/WindowTransformSwipeHandler.java
+++ b/quickstep/recents_ui_overrides/src/com/android/quickstep/WindowTransformSwipeHandler.java
@@ -267,6 +267,7 @@
private MultiStateCallback mStateCallback;
// Used to control launcher components throughout the swipe gesture.
private AnimatorPlaybackController mLauncherTransitionController;
+ private boolean mHasLauncherTransitionControllerStarted;
private T mActivity;
private RecentsView mRecentsView;
@@ -647,8 +648,7 @@
}
private void buildAnimationController() {
- if (mGestureEndTarget == HOME || (mLauncherTransitionController != null
- && mLauncherTransitionController.getAnimationPlayer().isStarted())) {
+ if (mGestureEndTarget == HOME || mHasLauncherTransitionControllerStarted) {
// We don't want a new mLauncherTransitionController if mGestureEndTarget == HOME (it
// has its own animation) or if we're already animating the current controller.
return;
@@ -1122,6 +1122,7 @@
}
mLauncherTransitionController.getAnimationPlayer().start();
}
+ mHasLauncherTransitionControllerStarted = true;
}
/**