Merge "Preserve the leash reference in PipTaskOrganizer" into udc-dev

This commit is contained in:
Ikram Gabiyev
2023-06-12 20:15:07 +00:00
committed by Android (Google) Code Review

View File

@@ -1018,24 +1018,17 @@ public class PipTransition extends PipTransitionController {
private void resetPrevPip(@NonNull TransitionInfo.Change prevPipTaskChange,
@NonNull SurfaceControl.Transaction startTransaction) {
final SurfaceControl leash = prevPipTaskChange.getLeash();
final Rect bounds = prevPipTaskChange.getEndAbsBounds();
final Point offset = prevPipTaskChange.getEndRelOffset();
bounds.offset(-offset.x, -offset.y);
startTransaction.remove(leash);
startTransaction.setWindowCrop(leash, null);
startTransaction.setMatrix(leash, 1, 0, 0, 1);
startTransaction.setCornerRadius(leash, 0);
startTransaction.setPosition(leash, bounds.left, bounds.top);
if (mHasFadeOut && prevPipTaskChange.getTaskInfo().isVisible()) {
if (mPipAnimationController.getCurrentAnimator() != null) {
mPipAnimationController.getCurrentAnimator().cancel();
}
startTransaction.setAlpha(leash, 1);
}
mHasFadeOut = false;
mCurrentPipTaskToken = null;
mPipOrganizer.onExitPipFinished(prevPipTaskChange.getTaskInfo());
// clean-up the state in PipTaskOrganizer if the PipTaskOrganizer#onTaskAppeared() hasn't
// been called yet with its leash reference now pointing to a new SurfaceControl not
// matching the leash of the pip we are removing.
if (mPipOrganizer.getSurfaceControl() == leash) {
mPipOrganizer.onExitPipFinished(prevPipTaskChange.getTaskInfo());
}
}
@Override