Fix regressions with reparenting task

- Make the new task immediately visible, and reset the crop on the
  original task transferred from the leash

Fixes: 190550846
Test: Open ApiDemos, autoenter from a task with multiple activities

Change-Id: I2527cee68448dc8f1be7634051547c29c596c63a
This commit is contained in:
Winson Chung
2021-06-08 22:51:36 -07:00
parent f3f485c453
commit 27475c6e0c

View File

@@ -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;
}