Fix taskbar jumping when going home

- Set resumed state immediately when finishing recents controller to launcher, otherwise there's a race where we start animating gesture state to 0 before animating resumed state to 1, which causes the jump in the bug

Test: Swipe from app to home 10 times, no jump
Fixes: 203725820
Change-Id: Ie8a1add29902a9961ba4d7861ba5424ab656f1c8
This commit is contained in:
Tony Wickham
2021-12-01 15:08:23 -08:00
parent eb4b2d0147
commit e59a723af3

View File

@@ -195,7 +195,7 @@ import java.util.function.Supplier;
if (hasAnyFlag(changedFlags, FLAG_RESUMED)) {
boolean isResumed = isResumed();
ObjectAnimator anim = mIconAlignmentForResumedState
.animateToValue(getCurrentIconAlignmentRatio(), isResumed ? 1 : 0)
.animateToValue(isResumed ? 1 : 0)
.setDuration(duration);
anim.addListener(new AnimatorListenerAdapter() {
@@ -351,9 +351,16 @@ import java.util.function.Supplier;
private void endGestureStateOverride(boolean finishedToApp) {
mCallbacks.removeListener(this);
// Update the resumed state immediately to ensure a seamless handoff
boolean launcherResumed = !finishedToApp;
mIconAlignmentForResumedState.updateValue(launcherResumed ? 1 : 0);
updateStateForFlag(FLAG_RECENTS_ANIMATION_RUNNING, false);
updateStateForFlag(FLAG_RESUMED, launcherResumed);
applyState();
TaskbarStashController controller = mControllers.taskbarStashController;
controller.updateStateForFlag(FLAG_IN_APP, finishedToApp);
controller.applyState();