Loading services/core/java/com/android/server/wm/WindowManagerService.java +8 −6 Original line number Diff line number Diff line Loading @@ -2734,15 +2734,12 @@ public class WindowManagerService extends IWindowManager.Stub } } final AppWindowToken appToken = win.mAppToken; // Prevent an immediate window exit only for a real animation, ignoring e.g. // dummy animations. final boolean inAnimation = win.mWinAnimator.isWindowAnimatingNow(); // The starting window is the last window in this app token and it isn't animating. // Allow it to be removed now as there is no additional window or animation that will // trigger its removal. final boolean lastWinStartingNotAnimating = startingWindow && appToken!= null && appToken.allAppWindows.size() == 1 && !inAnimation; if (!lastWinStartingNotAnimating && (win.mExiting || inAnimation)) { && appToken.allAppWindows.size() == 1 && !win.mWinAnimator.isAnimating(); if (!lastWinStartingNotAnimating && (win.mExiting || win.mWinAnimator.isAnimating())) { // The exit animation is running... wait for it! win.mExiting = true; win.mRemoveOnExit = true; Loading Loading @@ -4675,7 +4672,12 @@ public class WindowManagerService extends IWindowManager.Stub // If we are preparing an app transition, then delay changing // the visibility of this token until we execute that transition. if (okToDisplay() && mAppTransition.isTransitionSet()) { if (!wtoken.startingDisplayed || mSkipAppTransitionAnimation) { // A dummy animation is a placeholder animation which informs others that an // animation is going on (in this case an application transition). If the animation // was transferred from another application/animator, no dummy animator should be // created since an animation is already in progress. if (!wtoken.mAppAnimator.usingTransferredAnimation && (!wtoken.startingDisplayed || mSkipAppTransitionAnimation)) { if (DEBUG_APP_TRANSITIONS) Slog.v( TAG, "Setting dummy animation on: " + wtoken); wtoken.mAppAnimator.setDummyAnimation(); Loading services/core/java/com/android/server/wm/WindowStateAnimator.java +1 −11 Original line number Diff line number Diff line Loading @@ -251,21 +251,11 @@ class WindowStateAnimator { && mAppAnimator.animation == AppWindowAnimator.sDummyAnimation; } /** Is this window currently set to animate or currently animating? * NOTE: The method will return true for cases where the window isn't currently animating, but * is set to animate. i.e. if the window animation is currently set to a dummy placeholder * animation. Use {@link #isWindowAnimatingNow} to know if the window is currently running a * real animation. */ /** Is this window currently set to animate or currently animating? */ boolean isWindowAnimating() { return mAnimation != null; } /** Is the window performing a real animation and not a dummy which is only waiting for an * an animation to start? */ boolean isWindowAnimatingNow() { return isWindowAnimating() && !isDummyAnimation(); } void cancelExitAnimationForNextAnimationLocked() { if (mAnimation != null) { mAnimation.cancel(); Loading Loading
services/core/java/com/android/server/wm/WindowManagerService.java +8 −6 Original line number Diff line number Diff line Loading @@ -2734,15 +2734,12 @@ public class WindowManagerService extends IWindowManager.Stub } } final AppWindowToken appToken = win.mAppToken; // Prevent an immediate window exit only for a real animation, ignoring e.g. // dummy animations. final boolean inAnimation = win.mWinAnimator.isWindowAnimatingNow(); // The starting window is the last window in this app token and it isn't animating. // Allow it to be removed now as there is no additional window or animation that will // trigger its removal. final boolean lastWinStartingNotAnimating = startingWindow && appToken!= null && appToken.allAppWindows.size() == 1 && !inAnimation; if (!lastWinStartingNotAnimating && (win.mExiting || inAnimation)) { && appToken.allAppWindows.size() == 1 && !win.mWinAnimator.isAnimating(); if (!lastWinStartingNotAnimating && (win.mExiting || win.mWinAnimator.isAnimating())) { // The exit animation is running... wait for it! win.mExiting = true; win.mRemoveOnExit = true; Loading Loading @@ -4675,7 +4672,12 @@ public class WindowManagerService extends IWindowManager.Stub // If we are preparing an app transition, then delay changing // the visibility of this token until we execute that transition. if (okToDisplay() && mAppTransition.isTransitionSet()) { if (!wtoken.startingDisplayed || mSkipAppTransitionAnimation) { // A dummy animation is a placeholder animation which informs others that an // animation is going on (in this case an application transition). If the animation // was transferred from another application/animator, no dummy animator should be // created since an animation is already in progress. if (!wtoken.mAppAnimator.usingTransferredAnimation && (!wtoken.startingDisplayed || mSkipAppTransitionAnimation)) { if (DEBUG_APP_TRANSITIONS) Slog.v( TAG, "Setting dummy animation on: " + wtoken); wtoken.mAppAnimator.setDummyAnimation(); Loading
services/core/java/com/android/server/wm/WindowStateAnimator.java +1 −11 Original line number Diff line number Diff line Loading @@ -251,21 +251,11 @@ class WindowStateAnimator { && mAppAnimator.animation == AppWindowAnimator.sDummyAnimation; } /** Is this window currently set to animate or currently animating? * NOTE: The method will return true for cases where the window isn't currently animating, but * is set to animate. i.e. if the window animation is currently set to a dummy placeholder * animation. Use {@link #isWindowAnimatingNow} to know if the window is currently running a * real animation. */ /** Is this window currently set to animate or currently animating? */ boolean isWindowAnimating() { return mAnimation != null; } /** Is the window performing a real animation and not a dummy which is only waiting for an * an animation to start? */ boolean isWindowAnimatingNow() { return isWindowAnimating() && !isDummyAnimation(); } void cancelExitAnimationForNextAnimationLocked() { if (mAnimation != null) { mAnimation.cancel(); Loading