Merge "Revert "Fix splitting with wrong apps when entering split with rotation"" into tm-qpr-dev am: 2940697c9c am: d3d69be3ce am: 11de366ccc

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

Change-Id: Ib3f43e243e8f8ef8dab35d37a3e833c292ab225f
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
Jerry Chang
2023-03-02 08:09:18 +00:00
committed by Automerger Merge Worker

View File

@@ -205,7 +205,7 @@ public class StageCoordinator implements SplitLayout.SplitLayoutHandler,
// and exit, since exit itself can trigger a number of changes that update the stages. // and exit, since exit itself can trigger a number of changes that update the stages.
private boolean mShouldUpdateRecents; private boolean mShouldUpdateRecents;
private boolean mExitSplitScreenOnHide; private boolean mExitSplitScreenOnHide;
private boolean mIsDividerRemoteAnimating; private boolean mIsSplitEntering;
private boolean mIsDropEntering; private boolean mIsDropEntering;
private boolean mIsExiting; private boolean mIsExiting;
@@ -882,7 +882,7 @@ public class StageCoordinator implements SplitLayout.SplitLayoutHandler,
// Set false to avoid record new bounds with old task still on top; // Set false to avoid record new bounds with old task still on top;
mShouldUpdateRecents = false; mShouldUpdateRecents = false;
mIsDividerRemoteAnimating = true; mIsSplitEntering = true;
if (mSplitRequest == null) { if (mSplitRequest == null) {
mSplitRequest = new SplitRequest(mainTaskId, mSplitRequest = new SplitRequest(mainTaskId,
mainPendingIntent != null ? mainPendingIntent.getIntent() : null, mainPendingIntent != null ? mainPendingIntent.getIntent() : null,
@@ -975,7 +975,7 @@ public class StageCoordinator implements SplitLayout.SplitLayoutHandler,
} }
private void onRemoteAnimationFinishedOrCancelled(WindowContainerTransaction evictWct) { private void onRemoteAnimationFinishedOrCancelled(WindowContainerTransaction evictWct) {
mIsDividerRemoteAnimating = false; mIsSplitEntering = false;
mShouldUpdateRecents = true; mShouldUpdateRecents = true;
mSplitRequest = null; mSplitRequest = null;
// If any stage has no child after animation finished, it means that split will display // If any stage has no child after animation finished, it means that split will display
@@ -1241,7 +1241,7 @@ public class StageCoordinator implements SplitLayout.SplitLayoutHandler,
} }
}); });
mShouldUpdateRecents = false; mShouldUpdateRecents = false;
mIsDividerRemoteAnimating = false; mIsSplitEntering = false;
mSplitLayout.getInvisibleBounds(mTempRect1); mSplitLayout.getInvisibleBounds(mTempRect1);
if (childrenToTop == null || childrenToTop.getTopVisibleChildTaskId() == INVALID_TASK_ID) { if (childrenToTop == null || childrenToTop.getTopVisibleChildTaskId() == INVALID_TASK_ID) {
@@ -1584,7 +1584,7 @@ public class StageCoordinator implements SplitLayout.SplitLayoutHandler,
&& !ENABLE_SHELL_TRANSITIONS) { && !ENABLE_SHELL_TRANSITIONS) {
// Clear the divider remote animating flag as the divider will be re-rendered to apply // Clear the divider remote animating flag as the divider will be re-rendered to apply
// the new rotation config. // the new rotation config.
mIsDividerRemoteAnimating = false; mIsSplitEntering = false;
mSplitLayout.update(null /* t */); mSplitLayout.update(null /* t */);
onLayoutSizeChanged(mSplitLayout); onLayoutSizeChanged(mSplitLayout);
} }
@@ -1634,9 +1634,9 @@ public class StageCoordinator implements SplitLayout.SplitLayoutHandler,
} }
void onChildTaskAppeared(StageListenerImpl stageListener, int taskId) { void onChildTaskAppeared(StageListenerImpl stageListener, int taskId) {
// Handle entering split screen while there is a split pair running in the background. if (stageListener == mSideStageListener && !isSplitScreenVisible() && isSplitActive()
if (stageListener == mSideStageListener && !isSplitScreenVisible() && !mIsSplitEntering) {
&& mSplitRequest == null) { // Handle entring split case here if split already running background.
if (mIsDropEntering) { if (mIsDropEntering) {
mSplitLayout.resetDividerPosition(); mSplitLayout.resetDividerPosition();
} else { } else {
@@ -1728,7 +1728,7 @@ public class StageCoordinator implements SplitLayout.SplitLayoutHandler,
mDividerVisible = visible; mDividerVisible = visible;
sendSplitVisibilityChanged(); sendSplitVisibilityChanged();
if (mIsDividerRemoteAnimating) { if (mIsSplitEntering) {
ProtoLog.d(ShellProtoLogGroup.WM_SHELL_SPLIT_SCREEN, ProtoLog.d(ShellProtoLogGroup.WM_SHELL_SPLIT_SCREEN,
" Skip animating divider bar due to it's remote animating."); " Skip animating divider bar due to it's remote animating.");
return; return;
@@ -1748,7 +1748,7 @@ public class StageCoordinator implements SplitLayout.SplitLayoutHandler,
" Skip animating divider bar due to divider leash not ready."); " Skip animating divider bar due to divider leash not ready.");
return; return;
} }
if (mIsDividerRemoteAnimating) { if (mIsSplitEntering) {
ProtoLog.d(ShellProtoLogGroup.WM_SHELL_SPLIT_SCREEN, ProtoLog.d(ShellProtoLogGroup.WM_SHELL_SPLIT_SCREEN,
" Skip animating divider bar due to it's remote animating."); " Skip animating divider bar due to it's remote animating.");
return; return;
@@ -1816,8 +1816,7 @@ public class StageCoordinator implements SplitLayout.SplitLayoutHandler,
mSplitLayout.flingDividerToDismiss( mSplitLayout.flingDividerToDismiss(
mSideStagePosition != SPLIT_POSITION_BOTTOM_OR_RIGHT, mSideStagePosition != SPLIT_POSITION_BOTTOM_OR_RIGHT,
EXIT_REASON_APP_FINISHED); EXIT_REASON_APP_FINISHED);
} else if (!isSplitScreenVisible() && mSplitRequest == null) { } else if (!isSplitScreenVisible() && !mIsSplitEntering) {
// Dismiss split screen in the background once any sides of the split become empty.
exitSplitScreen(null /* childrenToTop */, EXIT_REASON_APP_FINISHED); exitSplitScreen(null /* childrenToTop */, EXIT_REASON_APP_FINISHED);
} }
} else if (isSideStage && hasChildren && !mMainStage.isActive()) { } else if (isSideStage && hasChildren && !mMainStage.isActive()) {