Merge "Fixing last CL (uploaded the wrong patch)" into rvc-dev am: 0edfd76f6f

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/12013462

Change-Id: I9278e616c17a56f7489f4be23ef1087b54903fdb
This commit is contained in:
Winson Chung
2020-06-27 00:34:23 +00:00
committed by Automerger Merge Worker
2 changed files with 18 additions and 7 deletions

View File

@@ -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();
animator.removeAllUpdateListeners();
animator.removeAllListeners();
animator.cancel();
// Do notify the listeners that this was canceled
sendOnPipTransitionCancelled(direction);
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

View File

@@ -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