From 99490ee0d75e199a9a2e810b283526f88a4c6ba3 Mon Sep 17 00:00:00 2001 From: Jerry Chang Date: Fri, 12 May 2023 12:22:36 +0000 Subject: [PATCH] Fix not clearing split pair record after auto-enter pip Due to the swipe-to-home and entering pip are in separate transitions. The split record was not removed after startAnimation, updates to remove it when identified in handleRequest. Bug: 273410079 Test: repro steps of the bug Change-Id: Iad54a3d87c1d926e4148c937712e45fdc44d6e82 --- .../com/android/wm/shell/splitscreen/StageCoordinator.java | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/StageCoordinator.java b/libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/StageCoordinator.java index 749549d1ca557..1cc77dd024fb9 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/StageCoordinator.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/StageCoordinator.java @@ -23,6 +23,7 @@ import static android.app.ComponentOptions.KEY_PENDING_INTENT_BACKGROUND_ACTIVIT import static android.app.WindowConfiguration.ACTIVITY_TYPE_HOME; import static android.app.WindowConfiguration.ACTIVITY_TYPE_RECENTS; import static android.app.WindowConfiguration.WINDOWING_MODE_FULLSCREEN; +import static android.app.WindowConfiguration.WINDOWING_MODE_MULTI_WINDOW; import static android.content.res.Configuration.SMALLEST_SCREEN_WIDTH_DP_UNDEFINED; import static android.view.Display.DEFAULT_DISPLAY; import static android.view.RemoteAnimationTarget.MODE_OPENING; @@ -2377,6 +2378,10 @@ public class StageCoordinator implements SplitLayout.SplitLayoutHandler, + " so make sure split-screen state is cleaned-up. " + "mainStageCount=%d sideStageCount=%d", mMainStage.getChildCount(), mSideStage.getChildCount()); + if (triggerTask != null) { + mRecentTasks.ifPresent( + recentTasks -> recentTasks.removeSplitPair(triggerTask.taskId)); + } prepareExitSplitScreen(STAGE_TYPE_UNDEFINED, outWCT); } } @@ -2765,7 +2770,7 @@ public class StageCoordinator implements SplitLayout.SplitLayoutHandler, for (TransitionInfo.Change change : info.getChanges()) { final ActivityManager.RunningTaskInfo taskInfo = change.getTaskInfo(); if (taskInfo != null - && taskInfo.getWindowingMode() == WINDOWING_MODE_FULLSCREEN) { + && taskInfo.getWindowingMode() != WINDOWING_MODE_MULTI_WINDOW) { recentTasks.removeSplitPair(taskInfo.taskId); } }