summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Jerry Chang <chenghsiuchang@google.com> 2023-06-06 01:33:57 +0000
committer Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com> 2023-06-06 01:33:57 +0000
commitd865e91fd8f6cff43034543b43075d8f6990d5df (patch)
tree3785227413ef005a20c79f2f87958fca0f75895c
parent480a0986ead02db0502c1d3f10af46a09e5d8561 (diff)
parent71884552685be4fd4b20016d483905ba96790b6b (diff)
Merge "Consolidate adjacent launch while having a background split pair" into udc-dev am: 7188455268
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/23414036 Change-Id: I19a5bae2e52a69a2b0c0047430f5bfbca3b3124d Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
-rw-r--r--libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/StageCoordinator.java10
1 files changed, 8 insertions, 2 deletions
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 e616965a29ba..4ed4cf1fce2c 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
@@ -1482,6 +1482,10 @@ public class StageCoordinator implements SplitLayout.SplitLayoutHandler,
}
// If running background, we need to reparent current top visible task to main stage.
if (!isSplitScreenVisible()) {
+ // Ensure to evict old splitting tasks because the new split pair might be composed by
+ // one of the splitting tasks, evicting the task when finishing entering transition
+ // won't guarantee to put the task to the indicated new position.
+ mMainStage.evictAllChildren(wct);
mMainStage.reparentTopTask(wct);
prepareSplitLayout(wct);
}
@@ -2311,8 +2315,9 @@ public class StageCoordinator implements SplitLayout.SplitLayoutHandler,
mSplitTransitions.setDismissTransition(transition, dismissTop,
EXIT_REASON_APP_FINISHED);
} else if (!isSplitScreenVisible() && isOpening) {
- // If split running backgroud and trigger task is appearing into split,
- // prepare to enter split screen.
+ // If split is running in the background and the trigger task is appearing into
+ // split, prepare to enter split screen.
+ setSideStagePosition(SPLIT_POSITION_BOTTOM_OR_RIGHT, out);
prepareEnterSplitScreen(out);
mSplitTransitions.setEnterTransition(transition, request.getRemoteTransition(),
TRANSIT_SPLIT_SCREEN_PAIR_OPEN, !mIsDropEntering);
@@ -2338,6 +2343,7 @@ public class StageCoordinator implements SplitLayout.SplitLayoutHandler,
if (isOpening && getStageOfTask(triggerTask) != null) {
// One task is appearing into split, prepare to enter split screen.
out = new WindowContainerTransaction();
+ setSideStagePosition(SPLIT_POSITION_BOTTOM_OR_RIGHT, out);
prepareEnterSplitScreen(out);
mSplitTransitions.setEnterTransition(transition, request.getRemoteTransition(),
TRANSIT_SPLIT_SCREEN_PAIR_OPEN, !mIsDropEntering);