diff options
| author | 2023-06-12 21:37:27 +0000 | |
|---|---|---|
| committer | 2023-06-12 21:37:27 +0000 | |
| commit | d2db7f2c016df24dad3b19c119db2e18f2d5e2fb (patch) | |
| tree | 01c1e5bfe396ab0c8a8ae98372ef86c4bc8dd9b4 | |
| parent | 7f63a23a9692234cbd40e2c1b66bed75b876555e (diff) | |
| parent | 31fa82a6a1e0da5cdbaf3322e0a4fbd82a9d0f9c (diff) | |
Merge "Preserve the leash reference in PipTaskOrganizer" into udc-dev am: 36f3373f7d am: 31fa82a6a1
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/23617718
Change-Id: I530f6753b37999fb5c0f91afe45df910dce56684
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
| -rw-r--r-- | libs/WindowManager/Shell/src/com/android/wm/shell/pip/PipTransition.java | 25 |
1 files changed, 9 insertions, 16 deletions
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/PipTransition.java b/libs/WindowManager/Shell/src/com/android/wm/shell/pip/PipTransition.java index fb966c7de925..86b0f33ad54c 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/PipTransition.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/pip/PipTransition.java @@ -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.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); - } + startTransaction.remove(leash); + 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 |