From 75902ee6211ee9440295b513ada8290abb35c7e4 Mon Sep 17 00:00:00 2001 From: Chavi Weingarten Date: Fri, 15 May 2020 17:48:34 +0000 Subject: [PATCH] Revert "Fix the starting window could not be removed." This reverts commit e5cad56d4e642b4789160a3bcabba92ea82b3f26. Reason for revert: b/156746781 Change-Id: Ib5134cc1ee1382053d193b33769634b5ad11a0bb Bug: 156746781 --- .../com/android/server/wm/ActivityRecord.java | 2 ++ .../com/android/server/wm/WindowState.java | 11 +++------- .../server/wm/WindowStateAnimator.java | 20 ++----------------- 3 files changed, 7 insertions(+), 26 deletions(-) diff --git a/services/core/java/com/android/server/wm/ActivityRecord.java b/services/core/java/com/android/server/wm/ActivityRecord.java index 3920c9d690545..131e449630335 100644 --- a/services/core/java/com/android/server/wm/ActivityRecord.java +++ b/services/core/java/com/android/server/wm/ActivityRecord.java @@ -1929,6 +1929,7 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A mStartingData = null; startingSurface = null; startingWindow = null; + startingDisplayed = false; if (surface == null) { ProtoLog.v(WM_DEBUG_STARTING_WINDOW, "startingWindow was set but startingSurface==null, couldn't " @@ -5452,6 +5453,7 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A if (mLastTransactionSequence != mWmService.mTransactionSequence) { mLastTransactionSequence = mWmService.mTransactionSequence; mNumDrawnWindows = 0; + startingDisplayed = false; // There is the main base application window, even if it is exiting, wait for it mNumInterestingWindows = findMainWindow(false /* includeStartingApp */) != null ? 1 : 0; diff --git a/services/core/java/com/android/server/wm/WindowState.java b/services/core/java/com/android/server/wm/WindowState.java index a948ecef48e77..e925ce5c2dac8 100644 --- a/services/core/java/com/android/server/wm/WindowState.java +++ b/services/core/java/com/android/server/wm/WindowState.java @@ -2191,9 +2191,9 @@ class WindowState extends WindowContainer implements WindowManagerP if (wasVisible) { final int transit = (!startingWindow) ? TRANSIT_EXIT : TRANSIT_PREVIEW_DONE; - final int flags = startingWindow ? 0 /* self */ : PARENTS; + // Try starting an animation. - if (mWinAnimator.applyAnimationLocked(transit, false, flags)) { + if (mWinAnimator.applyAnimationLocked(transit, false)) { mAnimatingExit = true; // mAnimatingExit affects canAffectSystemUiFlags(). Run layout such that @@ -2205,9 +2205,7 @@ class WindowState extends WindowContainer implements WindowManagerP mWmService.mAccessibilityController.onWindowTransitionLocked(this, transit); } } - final boolean isAnimating = startingWindow - ? isAnimating(0) - : isAnimating(TRANSITION | PARENTS) + final boolean isAnimating = isAnimating(TRANSITION | PARENTS) && (mActivityRecord == null || !mActivityRecord.isWaitingForTransitionStart()); final boolean lastWindowIsStartingWindow = startingWindow && mActivityRecord != null && mActivityRecord.isLastWindow(this); @@ -2229,9 +2227,6 @@ class WindowState extends WindowContainer implements WindowManagerP } } - if (startingWindow && mActivityRecord != null) { - mActivityRecord.startingDisplayed = false; - } removeImmediately(); // Removing a visible window will effect the computed orientation // So just update orientation if needed. diff --git a/services/core/java/com/android/server/wm/WindowStateAnimator.java b/services/core/java/com/android/server/wm/WindowStateAnimator.java index e70f3e4ef9b93..c570cf1d949f7 100644 --- a/services/core/java/com/android/server/wm/WindowStateAnimator.java +++ b/services/core/java/com/android/server/wm/WindowStateAnimator.java @@ -1400,25 +1400,9 @@ class WindowStateAnimator { * the switch statement below. * @param isEntrance The animation type the last time this was called. Used to keep from * loading the same animation twice. - * @return {@code true} if an animation has been loaded, includes the parents. - * + * @return true if an animation has been loaded. */ boolean applyAnimationLocked(int transit, boolean isEntrance) { - return applyAnimationLocked(transit, isEntrance, PARENTS); - } - - /** - * Choose the correct animation and set it to the passed WindowState. - * @param transit If AppTransition.TRANSIT_PREVIEW_DONE and the app window has been drawn - * then the animation will be app_starting_exit. Any other value loads the animation from - * the switch statement below. - * @param isEntrance The animation type the last time this was called. Used to keep from - * loading the same animation twice. - * @param flags The combination of bitmask flags to specify targets and condition for - * checking animating status. See {@link WindowContainer.AnimationFlags}. - * @return {@code true} if an animation has been loaded. - */ - boolean applyAnimationLocked(int transit, boolean isEntrance, int flags) { if (mWin.isAnimating() && mAnimationIsEntrance == isEntrance) { // If we are trying to apply an animation, but already running // an animation of the same type, then just leave that one alone. @@ -1488,7 +1472,7 @@ class WindowStateAnimator { mWin.getDisplayContent().adjustForImeIfNeeded(); } - return mWin.isAnimating(flags); + return mWin.isAnimating(PARENTS); } void dumpDebug(ProtoOutputStream proto, long fieldId) {