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

Commit 620a4246 authored by Wei Sheng Shih's avatar Wei Sheng Shih Committed by android-build-merger
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
am: 653c81c7

Change-Id: I1f4dac84763cc71147bdda223bbfee3dea2ad82c
parents 3fb65f54 653c81c7
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,