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

Commit 744e6e3a authored by Robert Carr's avatar Robert Carr
Browse files

Prevent recents from closing while moving PiP to fullscreen.

If we close recents when beginning the animation, we will
trigger a resume of the previous fullscreen app, which will
attempt to aniamte in at the same time we are animating
the PiP to fullscreen. These conflict causing flicker and
churn.

Bug: 27793381
Change-Id: I520181dadab938bbf62b25891f5ba0e4e9783967
parent 69016e34
Loading
Loading
Loading
Loading
+5 −3
Original line number Diff line number Diff line
@@ -276,9 +276,6 @@ public class PipManager {
    void movePipToFullscreen() {
        mState = STATE_NO_PIP;
        mPipTaskId = TASK_ID_NO_PIP;
        for (int i = mListeners.size() - 1; i >= 0; --i) {
            mListeners.get(i).onMoveToFullscreen();
        }
        resizePinnedStack(mState);
    }

@@ -638,6 +635,11 @@ public class PipManager {
        public void onPinnedStackAnimationEnded() {
            if (DEBUG) Log.d(TAG, "onPinnedStackAnimationEnded()");
            switch (mState) {
                case STATE_NO_PIP:
                    for (int i = mListeners.size() - 1; i >= 0; --i) {
                        mListeners.get(i).onMoveToFullscreen();
                    }
                    break;
                case STATE_PIP_OVERLAY:
                    if (!mPipRecentsOverlayManager.isRecentsShown()) {
                        showPipOverlay();
+6 −2
Original line number Diff line number Diff line
@@ -149,11 +149,15 @@ public class BoundsAnimationController {
        public void onAnimationEnd(Animator animation) {
            if (DEBUG) Slog.d(TAG, "onAnimationEnd: mTarget=" + mTarget
                    + " mMoveToFullScreen=" + mMoveToFullScreen + " mWillReplace=" + mWillReplace);

            finishAnimation();
            if (mMoveToFullScreen && !mWillReplace) {
                mTarget.moveToFullscreen();
            }

            // If we finish the animation before we move the target to fullscreen,
            // recents may close itself and we may try and resume the previous
            // fullscreen app leading to churn and flicker after we then move
            // our target to fullscreen.
            finishAnimation();
        }

        @Override