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

Commit 011c133e authored by Stefan Kuhne's avatar Stefan Kuhne Committed by Android (Google) Code Review
Browse files

Merge "Dont create a dummy animation for a transferred animation" into mnc-dev

parents c2ae0090 7dcf08c6
Loading
Loading
Loading
Loading
+8 −6
Original line number Diff line number Diff line
@@ -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;
@@ -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();
+1 −11
Original line number Diff line number Diff line
@@ -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();