Merge "Revert "Fix splitting with wrong apps when entering split with rotation"" into tm-qpr-dev am: 2940697c9c am: d3d69be3ce
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/21692220 Change-Id: Ic007b11a625987c0496e259f2bf87cca13accb7b Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
@@ -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.
|
||||
private boolean mShouldUpdateRecents;
|
||||
private boolean mExitSplitScreenOnHide;
|
||||
private boolean mIsDividerRemoteAnimating;
|
||||
private boolean mIsSplitEntering;
|
||||
private boolean mIsDropEntering;
|
||||
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;
|
||||
mShouldUpdateRecents = false;
|
||||
mIsDividerRemoteAnimating = true;
|
||||
mIsSplitEntering = true;
|
||||
if (mSplitRequest == null) {
|
||||
mSplitRequest = new SplitRequest(mainTaskId,
|
||||
mainPendingIntent != null ? mainPendingIntent.getIntent() : null,
|
||||
@@ -975,7 +975,7 @@ public class StageCoordinator implements SplitLayout.SplitLayoutHandler,
|
||||
}
|
||||
|
||||
private void onRemoteAnimationFinishedOrCancelled(WindowContainerTransaction evictWct) {
|
||||
mIsDividerRemoteAnimating = false;
|
||||
mIsSplitEntering = false;
|
||||
mShouldUpdateRecents = true;
|
||||
mSplitRequest = null;
|
||||
// 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;
|
||||
mIsDividerRemoteAnimating = false;
|
||||
mIsSplitEntering = false;
|
||||
|
||||
mSplitLayout.getInvisibleBounds(mTempRect1);
|
||||
if (childrenToTop == null || childrenToTop.getTopVisibleChildTaskId() == INVALID_TASK_ID) {
|
||||
@@ -1584,7 +1584,7 @@ public class StageCoordinator implements SplitLayout.SplitLayoutHandler,
|
||||
&& !ENABLE_SHELL_TRANSITIONS) {
|
||||
// Clear the divider remote animating flag as the divider will be re-rendered to apply
|
||||
// the new rotation config.
|
||||
mIsDividerRemoteAnimating = false;
|
||||
mIsSplitEntering = false;
|
||||
mSplitLayout.update(null /* t */);
|
||||
onLayoutSizeChanged(mSplitLayout);
|
||||
}
|
||||
@@ -1634,9 +1634,9 @@ public class StageCoordinator implements SplitLayout.SplitLayoutHandler,
|
||||
}
|
||||
|
||||
void onChildTaskAppeared(StageListenerImpl stageListener, int taskId) {
|
||||
// Handle entering split screen while there is a split pair running in the background.
|
||||
if (stageListener == mSideStageListener && !isSplitScreenVisible()
|
||||
&& mSplitRequest == null) {
|
||||
if (stageListener == mSideStageListener && !isSplitScreenVisible() && isSplitActive()
|
||||
&& !mIsSplitEntering) {
|
||||
// Handle entring split case here if split already running background.
|
||||
if (mIsDropEntering) {
|
||||
mSplitLayout.resetDividerPosition();
|
||||
} else {
|
||||
@@ -1728,7 +1728,7 @@ public class StageCoordinator implements SplitLayout.SplitLayoutHandler,
|
||||
mDividerVisible = visible;
|
||||
sendSplitVisibilityChanged();
|
||||
|
||||
if (mIsDividerRemoteAnimating) {
|
||||
if (mIsSplitEntering) {
|
||||
ProtoLog.d(ShellProtoLogGroup.WM_SHELL_SPLIT_SCREEN,
|
||||
" Skip animating divider bar due to it's remote animating.");
|
||||
return;
|
||||
@@ -1748,7 +1748,7 @@ public class StageCoordinator implements SplitLayout.SplitLayoutHandler,
|
||||
" Skip animating divider bar due to divider leash not ready.");
|
||||
return;
|
||||
}
|
||||
if (mIsDividerRemoteAnimating) {
|
||||
if (mIsSplitEntering) {
|
||||
ProtoLog.d(ShellProtoLogGroup.WM_SHELL_SPLIT_SCREEN,
|
||||
" Skip animating divider bar due to it's remote animating.");
|
||||
return;
|
||||
@@ -1816,8 +1816,7 @@ public class StageCoordinator implements SplitLayout.SplitLayoutHandler,
|
||||
mSplitLayout.flingDividerToDismiss(
|
||||
mSideStagePosition != SPLIT_POSITION_BOTTOM_OR_RIGHT,
|
||||
EXIT_REASON_APP_FINISHED);
|
||||
} else if (!isSplitScreenVisible() && mSplitRequest == null) {
|
||||
// Dismiss split screen in the background once any sides of the split become empty.
|
||||
} else if (!isSplitScreenVisible() && !mIsSplitEntering) {
|
||||
exitSplitScreen(null /* childrenToTop */, EXIT_REASON_APP_FINISHED);
|
||||
}
|
||||
} else if (isSideStage && hasChildren && !mMainStage.isActive()) {
|
||||
|
||||
Reference in New Issue
Block a user