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
diff --git a/quickstep/src/com/android/quickstep/AbsSwipeUpHandler.java b/quickstep/src/com/android/quickstep/AbsSwipeUpHandler.java
index 3ab73bb..ab23563 100644
--- a/quickstep/src/com/android/quickstep/AbsSwipeUpHandler.java
+++ b/quickstep/src/com/android/quickstep/AbsSwipeUpHandler.java
@@ -1730,7 +1730,10 @@
endLauncherTransitionController();
mRecentsView.onSwipeUpAnimationSuccess();
if (ENABLE_QUICKSTEP_LIVE_TILE.get()) {
- mTaskAnimationManager.setLiveTileCleanUpHandler(mInputConsumerProxy::destroy);
+ mTaskAnimationManager.setLiveTileCleanUpHandler(() -> {
+ mRecentsView.cleanupRemoteTargets();
+ mInputConsumerProxy.destroy();
+ });
mTaskAnimationManager.enableLiveTileRestartListener();
}
diff --git a/quickstep/src/com/android/quickstep/views/RecentsView.java b/quickstep/src/com/android/quickstep/views/RecentsView.java
index f7a9562..5aa6fc4 100644
--- a/quickstep/src/com/android/quickstep/views/RecentsView.java
+++ b/quickstep/src/com/android/quickstep/views/RecentsView.java
@@ -4351,7 +4351,7 @@
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 @@
&& mCurrentGestureEndTarget != GestureState.GestureEndTarget.RECENTS;
}
+ public void cleanupRemoteTargets() {
+ mRemoteTargetHandles = null;
+ }
+
/**
* Used to register callbacks for when our empty message state changes.
*