Merge "Fix unexpectedly dismiss split by dragging the same app to the same side" into tm-qpr-dev am: 187565c286

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/20648327

Change-Id: If276ebadb2562b534c477d4f12268bfb0b6fb2aa
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
Jerry Chang
2022-12-07 09:29:39 +00:00
committed by Automerger Merge Worker

View File

@@ -456,8 +456,6 @@ public class StageCoordinator implements SplitLayout.SplitLayoutHandler,
void startIntentLegacy(PendingIntent intent, Intent fillInIntent, @SplitPosition int position, void startIntentLegacy(PendingIntent intent, Intent fillInIntent, @SplitPosition int position,
@Nullable Bundle options) { @Nullable Bundle options) {
final boolean isEnteringSplit = !isSplitActive(); final boolean isEnteringSplit = !isSplitActive();
final WindowContainerTransaction evictWct = new WindowContainerTransaction();
prepareEvictChildTasks(position, evictWct);
LegacyTransitions.ILegacyTransition transition = new LegacyTransitions.ILegacyTransition() { LegacyTransitions.ILegacyTransition transition = new LegacyTransitions.ILegacyTransition() {
@Override @Override
@@ -465,22 +463,21 @@ public class StageCoordinator implements SplitLayout.SplitLayoutHandler,
RemoteAnimationTarget[] wallpapers, RemoteAnimationTarget[] nonApps, RemoteAnimationTarget[] wallpapers, RemoteAnimationTarget[] nonApps,
IRemoteAnimationFinishedCallback finishedCallback, IRemoteAnimationFinishedCallback finishedCallback,
SurfaceControl.Transaction t) { SurfaceControl.Transaction t) {
if (isEnteringSplit) { boolean openingToSide = false;
boolean openingToSide = false; if (apps != null) {
if (apps != null) { for (int i = 0; i < apps.length; ++i) {
for (int i = 0; i < apps.length; ++i) { if (apps[i].mode == MODE_OPENING
if (apps[i].mode == MODE_OPENING && mSideStage.containsTask(apps[i].taskId)) {
&& mSideStage.containsTask(apps[i].taskId)) { openingToSide = true;
openingToSide = true; break;
break;
}
} }
} }
if (!openingToSide) { }
mMainExecutor.execute(() -> exitSplitScreen(
mSideStage.getChildCount() == 0 ? mMainStage : mSideStage, if (isEnteringSplit && !openingToSide) {
EXIT_REASON_UNKNOWN)); mMainExecutor.execute(() -> exitSplitScreen(
} mSideStage.getChildCount() == 0 ? mMainStage : mSideStage,
EXIT_REASON_UNKNOWN));
} }
if (apps != null) { if (apps != null) {
@@ -500,7 +497,12 @@ public class StageCoordinator implements SplitLayout.SplitLayoutHandler,
} }
} }
mSyncQueue.queue(evictWct);
if (!isEnteringSplit && openingToSide) {
final WindowContainerTransaction evictWct = new WindowContainerTransaction();
prepareEvictNonOpeningChildTasks(position, apps, evictWct);
mSyncQueue.queue(evictWct);
}
} }
}; };