Merge "Avoid double end on PipTransitionAnimator" into udc-dev

This commit is contained in:
Hongwei Wang
2023-05-17 22:25:22 +00:00
committed by Android (Google) Code Review

View File

@@ -328,6 +328,8 @@ public class PipAnimationController {
private PipSurfaceTransactionHelper mSurfaceTransactionHelper; private PipSurfaceTransactionHelper mSurfaceTransactionHelper;
private @TransitionDirection int mTransitionDirection; private @TransitionDirection int mTransitionDirection;
protected PipContentOverlay mContentOverlay; protected PipContentOverlay mContentOverlay;
// Flag to avoid double-end
private boolean mHasRequestedEnd;
private PipTransitionAnimator(TaskInfo taskInfo, SurfaceControl leash, private PipTransitionAnimator(TaskInfo taskInfo, SurfaceControl leash,
@AnimationType int animationType, @AnimationType int animationType,
@@ -357,6 +359,7 @@ public class PipAnimationController {
@Override @Override
public void onAnimationUpdate(ValueAnimator animation) { public void onAnimationUpdate(ValueAnimator animation) {
if (mHasRequestedEnd) return;
applySurfaceControlTransaction(mLeash, applySurfaceControlTransaction(mLeash,
mSurfaceControlTransactionFactory.getTransaction(), mSurfaceControlTransactionFactory.getTransaction(),
animation.getAnimatedFraction()); animation.getAnimatedFraction());
@@ -364,6 +367,8 @@ public class PipAnimationController {
@Override @Override
public void onAnimationEnd(Animator animation) { public void onAnimationEnd(Animator animation) {
if (mHasRequestedEnd) return;
mHasRequestedEnd = true;
mCurrentValue = mEndValue; mCurrentValue = mEndValue;
final SurfaceControl.Transaction tx = final SurfaceControl.Transaction tx =
mSurfaceControlTransactionFactory.getTransaction(); mSurfaceControlTransactionFactory.getTransaction();