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

Commit 496fd6a6 authored by wilsonshih's avatar wilsonshih Committed by Wei Sheng Shih
Browse files

Only need to dismiss stage if one of the task is closed.

If both stages are closed, it might be starting a new full screen task,
so don't handle it.

Bug: 279117417
Test: no regression on 278060807.
Test: atest WMShellFlickerTests:SwitchBackToSplitFromAnotherApp
Change-Id: I09be7fafff4286493bc1456eb7b22d1d2e13b172
parent 4de0ce30
Loading
Loading
Loading
Loading
+3 −2
Original line number Diff line number Diff line
@@ -2419,12 +2419,13 @@ public class StageCoordinator implements SplitLayout.SplitLayoutHandler,
                    }
                }
            }
            // If the size of dismissStages > 0, the task is closed without prepare pending
            // If the size of dismissStages == 1, one of the task is closed without prepare pending
            // transition, which could happen if all activities were finished after finish top
            // activity in a task, so the trigger task is null when handleRequest.
            // Note if the size of dismissStages == 2, it's starting a new task, so don't handle it.
            final ArraySet<StageTaskListener> dismissStages = record.getShouldDismissedStage();
            if (mMainStage.getChildCount() == 0 || mSideStage.getChildCount() == 0
                    || dismissStages.size() > 0) {
                    || dismissStages.size() == 1) {
                Log.e(TAG, "Somehow removed the last task in a stage outside of a proper "
                        + "transition.");
                final WindowContainerTransaction wct = new WindowContainerTransaction();