Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit df4727e8 authored by Tony Wickham's avatar Tony Wickham
Browse files

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
parent 8d19146b
Loading
Loading
Loading
Loading
+3 −2
Original line number Diff line number Diff line
@@ -267,6 +267,7 @@ public class WindowTransformSwipeHandler<T extends BaseDraggingActivity>
    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 @@ public class WindowTransformSwipeHandler<T extends BaseDraggingActivity>
    }

    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 @@ public class WindowTransformSwipeHandler<T extends BaseDraggingActivity>
            }
            mLauncherTransitionController.getAnimationPlayer().start();
        }
        mHasLauncherTransitionControllerStarted = true;
    }

    /**