From fb669d9ca7db18c98b665ed639bc5057a118720a Mon Sep 17 00:00:00 2001 From: wilsonshih Date: Fri, 24 Dec 2021 10:32:15 +0800 Subject: [PATCH] Fixes starting window being occluded when enable shell transition - Fix starting window layer so the layer won't become lower when Shell is applying finish transaction. - Fix cannot remove starting window because there were set mAnimatingExit to true while the window is in transition without apply exit animation. Bug: 211045248 Bug: 211844337 Test: enable shell transition, run OpenAppColdTest Change-Id: Ie05b356048ea2db907704911736f0f93e49eb2e8 --- .../java/com/android/server/wm/WindowManagerService.java | 6 ++---- services/core/java/com/android/server/wm/WindowState.java | 2 +- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/services/core/java/com/android/server/wm/WindowManagerService.java b/services/core/java/com/android/server/wm/WindowManagerService.java index fc1fd92c5ba3a..7be128b53f8cf 100644 --- a/services/core/java/com/android/server/wm/WindowManagerService.java +++ b/services/core/java/com/android/server/wm/WindowManagerService.java @@ -2548,10 +2548,8 @@ public class WindowManagerService extends IWindowManager.Stub if (win.mAttrs.type == TYPE_APPLICATION_STARTING) { transit = WindowManagerPolicy.TRANSIT_PREVIEW_DONE; } - if (win.inTransition()) { - focusMayChange = true; - win.mAnimatingExit = true; - } else if (win.isWinVisibleLw() && winAnimator.applyAnimationLocked(transit, false)) { + + if (win.isWinVisibleLw() && winAnimator.applyAnimationLocked(transit, false)) { focusMayChange = true; win.mAnimatingExit = true; } else if (win.mDisplayContent.okToAnimate() && win.isAnimating(TRANSITION | PARENTS, diff --git a/services/core/java/com/android/server/wm/WindowState.java b/services/core/java/com/android/server/wm/WindowState.java index f6729c552cc31..e8f2e9e710905 100644 --- a/services/core/java/com/android/server/wm/WindowState.java +++ b/services/core/java/com/android/server/wm/WindowState.java @@ -5427,7 +5427,7 @@ class WindowState extends WindowContainer implements WindowManagerP @Override void assignLayer(Transaction t, int layer) { - if (isStartingWindowAssociatedToTask()) { + if (mStartingData != null) { // The starting window should cover the task. t.setLayer(mSurfaceControl, Integer.MAX_VALUE); return;