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

Commit f982ee7b authored by Winson Chung's avatar Winson Chung
Browse files

Fixing last CL (uploaded the wrong patch)

Bug: 159397143
Test: Enter pip in portrait, hold the phone in landscape physically and
      launch apps + go home repeatedly
Change-Id: I8e0f0529b37e6f925fb43e5fb957209fc8b29649
parent 72b04b7d
Loading
Loading
Loading
Loading
+14 −7
Original line number Diff line number Diff line
@@ -228,7 +228,6 @@ public class PipTaskOrganizer extends TaskOrganizer implements
        PipAnimationController.PipTransitionAnimator animator =
                mPipAnimationController.getCurrentAnimator();
        if (animator != null && animator.isRunning()) {
            System.out.println("RUNNING ANIM: anim=" + animator.getDestinationBounds() + " last=" + getLastReportedBounds());
            return new Rect(animator.getDestinationBounds());
        }
        return getLastReportedBounds();
@@ -238,6 +237,10 @@ public class PipTaskOrganizer extends TaskOrganizer implements
        return mInPip;
    }

    public boolean isDeferringEnterPipAnimation() {
        return mInPip && mShouldDeferEnteringPip;
    }

    /**
     * Registers {@link PipTransitionCallback} to receive transition callbacks.
     */
@@ -533,12 +536,16 @@ public class PipTaskOrganizer extends TaskOrganizer implements
                // If we are rotating while there is a current animation, immediately cancel the
                // animation (remove the listeners so we don't trigger the normal finish resize
                // call that should only happen on the update thread)
                int direction = animator.getTransitionDirection();
                int direction = TRANSITION_DIRECTION_NONE;
                if (animator != null) {
                    direction = animator.getTransitionDirection();
                    animator.removeAllUpdateListeners();
                    animator.removeAllListeners();
                    animator.cancel();
                    // Do notify the listeners that this was canceled
                    sendOnPipTransitionCancelled(direction);
                    sendOnPipTransitionFinished(direction);
                }
                mLastReportedBounds.set(destinationBoundsOut);

                // Create a reset surface transaction for the new bounds and update the window
+4 −0
Original line number Diff line number Diff line
@@ -95,6 +95,10 @@ public class PipManager implements BasePipManager, PipTaskOrganizer.PipTransitio
     */
    private final DisplayChangeController.OnDisplayChangingListener mRotationController = (
            int displayId, int fromRotation, int toRotation, WindowContainerTransaction t) -> {
        if (!mPipTaskOrganizer.isInPip() || mPipTaskOrganizer.isDeferringEnterPipAnimation()) {
            // Skip if we aren't in PIP or haven't actually entered PIP yet
            return;
        }
        // If there is an animation running (ie. from a shelf offset), then ensure that we calculate
        // the bounds for the next orientation using the destination bounds of the animation
        // TODO: Techincally this should account for movement animation bounds as well