Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit dc8fa46b authored by Jerry Chang's avatar Jerry Chang Committed by Automerger Merge Worker
Browse files

Merge "Revert "Fix splitting with wrong apps when entering split with...

Merge "Revert "Fix splitting with wrong apps when entering split with rotation"" into tm-qpr-dev am: 2940697c am: d3d69be3 am: 11de366c

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



Change-Id: Ib3f43e243e8f8ef8dab35d37a3e833c292ab225f
Signed-off-by: default avatarAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
parents 8b3cb4cf 11de366c
Loading
Loading
Loading
Loading
+11 −12
Original line number Diff line number Diff line
@@ -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()) {