Merge "Skip operation on content overlay if task's vanished" into sc-v2-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
8dbc900327
@@ -1377,11 +1377,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 (mPipTransitionState.getTransitionState() == PipTransitionState.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
|
||||
@@ -1394,6 +1403,10 @@ public class PipTaskOrganizer implements ShellTaskOrganizer.TaskListener,
|
||||
}
|
||||
|
||||
private void removeContentOverlay(SurfaceControl surface, Runnable callback) {
|
||||
if (mPipTransitionState.getTransitionState() == PipTransitionState.UNDEFINED) {
|
||||
// Avoid double removal, which is fatal.
|
||||
return;
|
||||
}
|
||||
final SurfaceControl.Transaction tx =
|
||||
mSurfaceControlTransactionFactory.getTransaction();
|
||||
tx.remove(surface);
|
||||
|
||||
Reference in New Issue
Block a user