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

Commit a7d7f78c authored by Winson Chung's avatar Winson Chung
Browse files

Defer cleaning up screenshot until after we actually switch to screenshot

- In the case where we get a screenshot on cancel, we should wait to
  finish the recents animation until the view gets a chance to update

Bug: 185643608
Test: Swipe up to overview in 2 button, hit home
Change-Id: I2ac3567006f6fa7e6f473499f6862e5e408dfc3d
parent f91abaa6
Loading
Loading
Loading
Loading
+3 −3
Original line number Diff line number Diff line
@@ -383,10 +383,10 @@ public abstract class AbsSwipeUpHandler<T extends StatefulActivity<S>,
        // Set up a entire animation lifecycle callback to notify the current recents view when
        // the animation is canceled
        mGestureState.runOnceAtState(STATE_RECENTS_ANIMATION_CANCELED, () -> {
                ThumbnailData snapshot = mGestureState.getRecentsAnimationCanceledSnapshot();
                ThumbnailData snapshot = mGestureState.consumeRecentsAnimationCanceledSnapshot();
                if (snapshot != null) {
                    RecentsModel.INSTANCE.get(mContext).onTaskSnapshotChanged(
                            mRecentsView.getRunningTaskId(), snapshot);
                    mRecentsView.switchToScreenshot(snapshot,
                            () -> mRecentsAnimationController.cleanupScreenshot());
                    mRecentsView.onRecentsAnimationComplete();
                }
            });
+7 −4
Original line number Diff line number Diff line
@@ -376,11 +376,14 @@ public class GestureState implements RecentsAnimationCallbacks.RecentsAnimationL
    }

    /**
     * Returns the canceled animation thumbnail data. This call only returns a value while
     * STATE_RECENTS_ANIMATION_CANCELED state is being set.
     * Returns and clears the canceled animation thumbnail data. This call only returns a value
     * while STATE_RECENTS_ANIMATION_CANCELED state is being set, and the caller is responsible for
     * calling {@link RecentsAnimationController#cleanupScreenshot()}.
     */
    ThumbnailData getRecentsAnimationCanceledSnapshot() {
        return mRecentsAnimationCanceledSnapshot;
    ThumbnailData consumeRecentsAnimationCanceledSnapshot() {
        ThumbnailData data = mRecentsAnimationCanceledSnapshot;
        mRecentsAnimationCanceledSnapshot = null;
        return data;
    }

    void setSwipeUpStartTimeMs(long uptimeMs) {