diff options
| -rw-r--r-- | services/core/java/com/android/server/wm/Task.java | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/services/core/java/com/android/server/wm/Task.java b/services/core/java/com/android/server/wm/Task.java index 82d1c04591a6..7af8d8bb5200 100644 --- a/services/core/java/com/android/server/wm/Task.java +++ b/services/core/java/com/android/server/wm/Task.java @@ -7653,17 +7653,23 @@ class Task extends WindowContainer<WindowContainer> { void clearLastRecentsAnimationTransaction() { mLastRecentsAnimationTransaction = null; mLastRecentsAnimationOverlay = null; - // reset also the transform introduced by mLastRecentsAnimationTransaction - getPendingTransaction().setMatrix(mSurfaceControl, Matrix.IDENTITY_MATRIX, new float[9]); + // reset also the crop and transform introduced by mLastRecentsAnimationTransaction + Rect bounds = getBounds(); + getPendingTransaction().setMatrix(mSurfaceControl, Matrix.IDENTITY_MATRIX, new float[9]) + .setWindowCrop(mSurfaceControl, bounds.width(), bounds.height()); } void maybeApplyLastRecentsAnimationTransaction() { if (mLastRecentsAnimationTransaction != null) { + final SurfaceControl.Transaction tx = getPendingTransaction(); if (mLastRecentsAnimationOverlay != null) { - getPendingTransaction().reparent(mLastRecentsAnimationOverlay, mSurfaceControl); + tx.reparent(mLastRecentsAnimationOverlay, mSurfaceControl); } PictureInPictureSurfaceTransaction.apply(mLastRecentsAnimationTransaction, - mSurfaceControl, getPendingTransaction()); + mSurfaceControl, tx); + // If we are transferring the transform from the root task entering PIP, then also show + // the new task immediately + tx.show(mSurfaceControl); mLastRecentsAnimationTransaction = null; mLastRecentsAnimationOverlay = null; } |