Merge "Skip operation on content overlay if task's vanished" into sc-dev am: 5cac66cb4e

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

Change-Id: Ib7ec12471d9aab62828471967baab803ea9c0b04
This commit is contained in:
TreeHugger Robot
2021-07-22 23:33:40 +00:00
committed by Automerger Merge Worker

View File

@@ -1384,11 +1384,20 @@ public class PipTaskOrganizer implements ShellTaskOrganizer.TaskListener,
final ValueAnimator animator = ValueAnimator.ofFloat(1.0f, 0.0f);
animator.setDuration(mCrossFadeAnimationDuration);
animator.addUpdateListener(animation -> {
final float alpha = (float) animation.getAnimatedValue();
final SurfaceControl.Transaction transaction =
mSurfaceControlTransactionFactory.getTransaction();
transaction.setAlpha(surface, alpha);
transaction.apply();
if (mState == State.UNDEFINED) {
// Could happen if onTaskVanished happens during the animation since we may have
// set a start delay on this animation.
Log.d(TAG, "Task vanished, skip fadeOutAndRemoveOverlay");
animation.removeAllListeners();
animation.removeAllUpdateListeners();
animation.cancel();
} else {
final float alpha = (float) animation.getAnimatedValue();
final SurfaceControl.Transaction transaction =
mSurfaceControlTransactionFactory.getTransaction();
transaction.setAlpha(surface, alpha);
transaction.apply();
}
});
animator.addListener(new AnimatorListenerAdapter() {
@Override
@@ -1401,6 +1410,10 @@ public class PipTaskOrganizer implements ShellTaskOrganizer.TaskListener,
}
private void removeContentOverlay(SurfaceControl surface, Runnable callback) {
if (mState == State.UNDEFINED) {
// Avoid double removal, which is fatal.
return;
}
final SurfaceControl.Transaction tx =
mSurfaceControlTransactionFactory.getTransaction();
tx.remove(surface);