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 2385ec90ab232..c87f0bcb469c8 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 @@ -1207,6 +1207,27 @@ class StageCoordinator implements SplitLayout.SplitLayoutHandler, return out; } + @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, 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 3cd090e3e0144..2d5080eaaa221 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 @@ public class RemoteTransitionCompat implements Parcelable { 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 @@ public class RemoteTransitionCompat implements Parcelable { 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; }