Merge "Fix back to split pair from overview with shell-transition hang."
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 2385ec9..c87f0bc 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
@@ -1208,6 +1208,27 @@
}
@Override
+ public void onTransitionMerged(@NonNull IBinder transition) {
+ // Once the pending enter transition got merged, make sure to bring divider bar visible and
+ // clear the pending transition from cache to prevent mess-up the following state.
+ if (transition == mSplitTransitions.mPendingEnter) {
+ mSplitLayout.init();
+ setDividerVisibility(true, null /* transaction */);
+ setSplitsVisible(true);
+ mShouldUpdateRecents = true;
+ updateRecentTasksSplitPair();
+
+ if (!mLogger.hasStartedSession()) {
+ mLogger.logEnter(mSplitLayout.getDividerPositionAsFraction(),
+ getMainStagePosition(), mMainStage.getTopChildTaskUid(),
+ getSideStagePosition(), mSideStage.getTopChildTaskUid(),
+ mSplitLayout.isLandscape());
+ }
+ mSplitTransitions.mPendingEnter = null;
+ }
+ }
+
+ @Override
public boolean startAnimation(@NonNull IBinder transition,
@NonNull TransitionInfo info,
@NonNull SurfaceControl.Transaction startTransaction,
diff --git a/packages/SystemUI/shared/src/com/android/systemui/shared/system/RemoteTransitionCompat.java b/packages/SystemUI/shared/src/com/android/systemui/shared/system/RemoteTransitionCompat.java
index 3cd090e..2d5080e 100644
--- a/packages/SystemUI/shared/src/com/android/systemui/shared/system/RemoteTransitionCompat.java
+++ b/packages/SystemUI/shared/src/com/android/systemui/shared/system/RemoteTransitionCompat.java
@@ -246,10 +246,6 @@
if (mPausingTasks.contains(openingTasks.get(i).getContainer())) {
++pauseMatches;
}
- if (openingTasks.get(i).getContainer().equals(mPausingTasks.get(i))) {
- // In this case, we are "returning" to an already running app, so just consume
- // the merge and do nothing.
- }
}
if (pauseMatches > 0) {
if (pauseMatches != mPausingTasks.size()) {
@@ -275,9 +271,9 @@
t.reparent(target.leash.mSurfaceControl, mInfo.getRootLeash());
t.setLayer(target.leash.mSurfaceControl, layer);
t.hide(target.leash.mSurfaceControl);
- t.apply();
targets[i] = target;
}
+ t.apply();
recents.onTasksAppeared(targets);
return true;
}