diff options
author | Tony Huang <tonyychuang@google.com> | 2022-01-05 03:58:53 +0000 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2022-01-05 03:58:53 +0000 |
commit | 588771a9de0e46925af61716eb6c2b014ab61ec8 (patch) | |
tree | efee407a4f0f4501811daec40a2a5f49c151c968 /libs | |
parent | 07a5dd0cb28cd02cd7befbe9eb3e4affb4ac51e9 (diff) | |
parent | b5fe809adf77bf4431fc92b8549cfacb6e7435d1 (diff) |
Merge "Fix updateRecentTasksSplitPair unexpectly" into sc-v2-dev
Diffstat (limited to 'libs')
-rw-r--r-- | libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/StageCoordinator.java | 9 |
1 files changed, 7 insertions, 2 deletions
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 53681e6b268f..5d1d159e63e6 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 @@ -367,6 +367,8 @@ class StageCoordinator implements SplitLayout.SplitLayoutHandler, float splitRatio, RemoteAnimationAdapter adapter) { // Init divider first to make divider leash for remote animation target. setDividerVisibility(true /* visible */); + // Set false to avoid record new bounds with old task still on top; + mShouldUpdateRecents = false; final WindowContainerTransaction wct = new WindowContainerTransaction(); final WindowContainerTransaction evictWct = new WindowContainerTransaction(); prepareEvictChildTasks(SPLIT_POSITION_TOP_OR_LEFT, evictWct); @@ -393,6 +395,7 @@ class StageCoordinator implements SplitLayout.SplitLayoutHandler, @Override public void onAnimationFinished() throws RemoteException { mIsDividerRemoteAnimating = false; + mShouldUpdateRecents = true; mSyncQueue.queue(evictWct); mSyncQueue.runInSync(t -> applyDividerVisibility(t)); finishedCallback.onAnimationFinished(); @@ -416,6 +419,7 @@ class StageCoordinator implements SplitLayout.SplitLayoutHandler, @Override public void onAnimationCancelled() { mIsDividerRemoteAnimating = false; + mShouldUpdateRecents = true; mSyncQueue.queue(evictWct); mSyncQueue.runInSync(t -> applyDividerVisibility(t)); try { @@ -782,7 +786,9 @@ class StageCoordinator implements SplitLayout.SplitLayoutHandler, mLogger.logSideStageAppChange(getSideStagePosition(), mSideStage.getTopChildTaskUid(), mSplitLayout.isLandscape()); } - updateRecentTasksSplitPair(); + if (present && visible) { + updateRecentTasksSplitPair(); + } for (int i = mListeners.size() - 1; i >= 0; --i) { mListeners.get(i).onTaskStageChanged(taskId, stage, visible); @@ -798,7 +804,6 @@ class StageCoordinator implements SplitLayout.SplitLayoutHandler, if (!mShouldUpdateRecents) { return; } - mRecentTasks.ifPresent(recentTasks -> { Rect topLeftBounds = mSplitLayout.getBounds1(); Rect bottomRightBounds = mSplitLayout.getBounds2(); |