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

Commit 0c05634a authored by Vinit Nayak's avatar Vinit Nayak
Browse files

Clean up RemoteTargetHandles when RecentsAnimation ends

* When in SplitScreen in overview, rotation causes
surfaces to get released, so we tell RecentsView
to null out references to them.
* Unclear why this wasn't/isn't neceessary for a
single, fullscreen task.

Fixes: 202780874
Test: Can rotate in split screen, no crash
Change-Id: Ifdfa74943945029edec37dfeeb4187616e4a23d8
parent 85da1db1
Loading
Loading
Loading
Loading
+4 −1
Original line number Diff line number Diff line
@@ -1730,7 +1730,10 @@ public abstract class AbsSwipeUpHandler<T extends StatefulActivity<S>,
        endLauncherTransitionController();
        mRecentsView.onSwipeUpAnimationSuccess();
        if (ENABLE_QUICKSTEP_LIVE_TILE.get()) {
            mTaskAnimationManager.setLiveTileCleanUpHandler(mInputConsumerProxy::destroy);
            mTaskAnimationManager.setLiveTileCleanUpHandler(() -> {
                mRecentsView.cleanupRemoteTargets();
                mInputConsumerProxy.destroy();
            });
            mTaskAnimationManager.enableLiveTileRestartListener();
        }

+5 −1
Original line number Diff line number Diff line
@@ -4351,7 +4351,7 @@ public abstract class RecentsView<ACTIVITY_TYPE extends StatefulActivity<STATE_T
    public void finishRecentsAnimation(boolean toRecents, boolean shouldPip,
            Runnable onFinishComplete) {
        // TODO(b/197232424#comment#10) Move this back into onRecentsAnimationComplete(). Maybe?
        mRemoteTargetHandles = null;
        cleanupRemoteTargets();
        if (!toRecents && ENABLE_QUICKSTEP_LIVE_TILE.get()) {
            // Reset the minimized state since we force-toggled the minimized state when entering
            // overview, but never actually finished the recents animation.  This is a catch all for
@@ -4812,6 +4812,10 @@ public abstract class RecentsView<ACTIVITY_TYPE extends StatefulActivity<STATE_T
                && mCurrentGestureEndTarget != GestureState.GestureEndTarget.RECENTS;
    }

    public void cleanupRemoteTargets() {
        mRemoteTargetHandles = null;
    }

    /**
     * Used to register callbacks for when our empty message state changes.
     *