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

Commit a4b44114 authored by Winson Chung's avatar Winson Chung
Browse files

Ensure that the pip transaction matrix has only scale & rotation info

Bug: 191672541
Test: Swipe up from an app w/ auto-enter and no source hint rect
Change-Id: I4d8eccd56a31eea922e99ccb4dcbc64ed58e37d4
parent 395c582b
Loading
Loading
Loading
Loading
+6 −3
Original line number Original line Diff line number Diff line
@@ -43,16 +43,18 @@ public class PipSurfaceTransactionHelper {
    public PictureInPictureSurfaceTransaction scale(
    public PictureInPictureSurfaceTransaction scale(
            SurfaceControl.Transaction tx, SurfaceControl leash,
            SurfaceControl.Transaction tx, SurfaceControl leash,
            Rect sourceBounds, Rect destinationBounds) {
            Rect sourceBounds, Rect destinationBounds) {
        float positionX = destinationBounds.left;
        float positionY = destinationBounds.top;
        mTmpSourceRectF.set(sourceBounds);
        mTmpSourceRectF.set(sourceBounds);
        mTmpDestinationRectF.set(destinationBounds);
        mTmpDestinationRectF.set(destinationBounds);
        mTmpDestinationRectF.offsetTo(0, 0);
        mTmpTransform.setRectToRect(mTmpSourceRectF, mTmpDestinationRectF, Matrix.ScaleToFit.FILL);
        mTmpTransform.setRectToRect(mTmpSourceRectF, mTmpDestinationRectF, Matrix.ScaleToFit.FILL);
        final float cornerRadius = getScaledCornerRadius(sourceBounds, destinationBounds);
        final float cornerRadius = getScaledCornerRadius(sourceBounds, destinationBounds);
        tx.setMatrix(leash, mTmpTransform, mTmpFloat9)
        tx.setMatrix(leash, mTmpTransform, mTmpFloat9)
                .setPosition(leash, mTmpDestinationRectF.left, mTmpDestinationRectF.top)
                .setPosition(leash, positionX, positionY)
                .setCornerRadius(leash, cornerRadius);
                .setCornerRadius(leash, cornerRadius);
        return new PictureInPictureSurfaceTransaction(
        return new PictureInPictureSurfaceTransaction(
                mTmpDestinationRectF.left, mTmpDestinationRectF.top,
                positionX, positionY, mTmpFloat9, 0 /* rotation */, cornerRadius, sourceBounds);
                mTmpFloat9, 0 /* rotation */, cornerRadius, sourceBounds);
    }
    }


    public PictureInPictureSurfaceTransaction scale(
    public PictureInPictureSurfaceTransaction scale(
@@ -61,6 +63,7 @@ public class PipSurfaceTransactionHelper {
            float degree, float positionX, float positionY) {
            float degree, float positionX, float positionY) {
        mTmpSourceRectF.set(sourceBounds);
        mTmpSourceRectF.set(sourceBounds);
        mTmpDestinationRectF.set(destinationBounds);
        mTmpDestinationRectF.set(destinationBounds);
        mTmpDestinationRectF.offsetTo(0, 0);
        mTmpTransform.setRectToRect(mTmpSourceRectF, mTmpDestinationRectF, Matrix.ScaleToFit.FILL);
        mTmpTransform.setRectToRect(mTmpSourceRectF, mTmpDestinationRectF, Matrix.ScaleToFit.FILL);
        mTmpTransform.postRotate(degree, 0, 0);
        mTmpTransform.postRotate(degree, 0, 0);
        final float cornerRadius = getScaledCornerRadius(sourceBounds, destinationBounds);
        final float cornerRadius = getScaledCornerRadius(sourceBounds, destinationBounds);