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

Commit 653c81c7 authored by Android Build Merger (Role)'s avatar Android Build Merger (Role) Committed by Android (Google) Code Review
Browse files

Merge "Merge "Fix pinned stack destination been overwrite by obsolete...

Merge "Merge "Fix pinned stack destination been overwrite by obsolete animator." into qt-dev am: 9ffed9ed" into qt-dev-plus-aosp
parents bb171c74 76b22703
Loading
Loading
Loading
Loading
+12 −0
Original line number Diff line number Diff line
@@ -435,6 +435,18 @@ public class BoundsAnimationController {
                moveFromFullscreen, moveToFullscreen, animationType);
    }

    /**
     * Cancel existing animation if the destination was modified.
     */
    void cancel(final BoundsAnimationTarget target) {
        final BoundsAnimator existing = mRunningAnimations.get(target);
        if (existing != null) {
            // Cancel animation. Since its already started, send animation end to client.
            if (DEBUG) Slog.d(TAG, "cancel: mTarget= " + target);
            existing.cancelAndCallAnimationEnd();
        }
    }

    @VisibleForTesting
    BoundsAnimator animateBoundsImpl(final BoundsAnimationTarget target, Rect from, Rect to,
            int animationDuration, @SchedulePipModeChangedState int schedulePipModeChangedState,
+11 −2
Original line number Diff line number Diff line
@@ -388,7 +388,9 @@ public class TaskStack extends WindowContainer<Task> implements
     * @return true if bounds were updated to some non-empty value.
     */
    boolean calculatePinnedBoundsForConfigChange(Rect inOutBounds) {
        boolean animating = false;
        if ((mBoundsAnimatingRequested || mBoundsAnimating) && !mBoundsAnimationTarget.isEmpty()) {
            animating = true;
            getFinalAnimationBounds(mTmpRect2);
        } else {
            mTmpRect2.set(inOutBounds);
@@ -398,6 +400,13 @@ public class TaskStack extends WindowContainer<Task> implements
        if (updated) {
            inOutBounds.set(mTmpRect3);

            // The final boundary is updated while there is an existing boundary animation. Let's
            // cancel this animation to prevent the obsolete animation overwritten updated bounds.
            if (animating && !inOutBounds.equals(mBoundsAnimationTarget)) {
                final DisplayContent displayContent = getDisplayContent();
                displayContent.mBoundsAnimationController.getHandler().post(() ->
                        displayContent.mBoundsAnimationController.cancel(this));
            }
            // Once we've set the bounds based on the rotation of the old bounds in the new
            // orientation, clear the animation target bounds since they are obsolete, and
            // cancel any currently running animations
@@ -1585,7 +1594,6 @@ public class TaskStack extends WindowContainer<Task> implements

            mBoundsAnimatingRequested = false;
            mBoundsAnimating = true;
            mCancelCurrentBoundsAnimation = false;
            mAnimationType = animationType;

            // If we are changing UI mode, as in the PiP to fullscreen
@@ -1645,7 +1653,7 @@ public class TaskStack extends WindowContainer<Task> implements
                        mBoundsAnimationTarget, false /* forceUpdate */);
            }

            if (finalStackSize != null) {
            if (finalStackSize != null && !mCancelCurrentBoundsAnimation) {
                setPinnedStackSize(finalStackSize, null);
            } else {
                // We have been canceled, so the final stack size is null, still run the
@@ -1758,6 +1766,7 @@ public class TaskStack extends WindowContainer<Task> implements
        }

        final @BoundsAnimationController.AnimationType int animationType = intendedAnimationType;
        mCancelCurrentBoundsAnimation = false;
        displayContent.mBoundsAnimationController.getHandler().post(() -> {
            displayContent.mBoundsAnimationController.animateBounds(this, fromBounds,
                    finalToBounds, animationDuration, finalSchedulePipModeChangedState,