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

Commit e6456591 authored by Jorim Jaggi's avatar Jorim Jaggi Committed by android-build-merger
Browse files

Fix regression with docking from recents transition

am: 363ab98f

* commit '363ab98f':
  Fix regression with docking from recents transition

Change-Id: Ifcff80301a002bd43c7c551094be997635987da8
parents 2130ab0d 363ab98f
Loading
Loading
Loading
Loading
+19 −8
Original line number Diff line number Diff line
@@ -39,6 +39,7 @@ import static com.android.internal.R.styleable.WindowAnimation_wallpaperIntraOpe
import static com.android.internal.R.styleable.WindowAnimation_wallpaperIntraOpenExitAnimation;
import static com.android.internal.R.styleable.WindowAnimation_wallpaperOpenEnterAnimation;
import static com.android.internal.R.styleable.WindowAnimation_wallpaperOpenExitAnimation;
import static com.android.server.wm.AppWindowAnimator.PROLONG_ANIMATION_AT_START;
import static com.android.server.wm.WindowManagerDebugConfig.DEBUG_ANIM;
import static com.android.server.wm.WindowManagerDebugConfig.DEBUG_APP_TRANSITIONS;
import static com.android.server.wm.WindowManagerDebugConfig.TAG_WITH_CLASS_NAME;
@@ -228,6 +229,7 @@ public class AppTransition implements Dump {

    private int mLastClipRevealMaxTranslation;
    private boolean mLastHadClipReveal;
    private boolean mProlongedAnimationsEnded;

    AppTransition(Context context, WindowManagerService service) {
        mContext = context;
@@ -371,6 +373,22 @@ public class AppTransition implements Dump {
                topClosingAppAnimator != null ? topClosingAppAnimator.animation : null);
        mService.getDefaultDisplayContentLocked().getDockedDividerController()
                .notifyAppTransitionStarting(openingApps, closingApps);

        // Prolong the start for the transition when docking a task from recents, unless recents
        // ended it already then we don't need to wait.
        if (mNextAppTransition == TRANSIT_DOCK_TASK_FROM_RECENTS && !mProlongedAnimationsEnded) {
            for (int i = openingApps.size() - 1; i >= 0; i--) {
                final AppWindowAnimator appAnimator = openingApps.valueAt(i).mAppAnimator;
                appAnimator.startProlongAnimation(PROLONG_ANIMATION_AT_START);
            }
        }
    }

    /**
     * Let the transitions manager know that the somebody wanted to end the prolonged animations.
     */
    void notifyProlongedAnimationsEnded() {
        mProlongedAnimationsEnded = true;
    }

    void clear() {
@@ -380,6 +398,7 @@ public class AppTransition implements Dump {
        mNextAppTransitionAnimationsSpecsFuture = null;
        mDefaultNextAppTransitionAnimationSpec = null;
        mAnimationFinishedCallback = null;
        mProlongedAnimationsEnded = false;
    }

    void freeze() {
@@ -1914,14 +1933,6 @@ public class AppTransition implements Dump {
                setAppTransition(transit);
            }
        }
        if (transit != TRANSIT_DOCK_TASK_FROM_RECENTS
                && mNextAppTransition == TRANSIT_DOCK_TASK_FROM_RECENTS) {

            // Somebody is trying to start another transition while we are waiting for the docking
            // window to be drawn. Because TRANSIT_DOCK_TASK_FROM_RECENTS starts prolonged
            // animations, we need to override it or our prolonged animations will never be ended.
            setAppTransition(transit);
        }
        boolean prepared = prepare();
        if (isTransitionSet()) {
            mService.mH.removeMessages(H.APP_TRANSITION_TIMEOUT);
+1 −0
Original line number Diff line number Diff line
@@ -3944,6 +3944,7 @@ public class WindowManagerService extends IWindowManager.Stub
                    appToken.mAppAnimator.endProlongedAnimation();
                }
            }
            mAppTransition.notifyProlongedAnimationsEnded();
        }
    }

+0 −4
Original line number Diff line number Diff line
@@ -1251,10 +1251,6 @@ class WindowSurfacePlacer {
            if (mService.mAppTransition.isNextAppTransitionThumbnailUp()) {
                createThumbnailAppAnimator(transit, wtoken, topOpeningLayer, topClosingLayer);
            }
            if (mService.mAppTransition.getAppTransition()
                    == AppTransition.TRANSIT_DOCK_TASK_FROM_RECENTS) {
                appAnimator.startProlongAnimation(PROLONG_ANIMATION_AT_START);
            }
        }
        return topOpeningApp;
    }