Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 27475c6e authored by Winson Chung's avatar Winson Chung
Browse files

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
parent f3f485c4
Loading
Loading
Loading
Loading
+10 −4
Original line number Diff line number Diff line
@@ -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;
        }