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

Commit 377838b4 authored by Evan Laird's avatar Evan Laird
Browse files

Reset protection path on rotation

Fixes the issue where camera cutout protection paths were accruing
rotation by not caching the unmodified path.

Fixes: 150531720
Test: manual
Change-Id: I0cece9900e86dc553401200346dc964c562b0ce0
parent 1756b8ec
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -26,7 +26,7 @@ import java.util.concurrent.Executor

import kotlin.math.roundToInt

const val TAG = "CameraOpTransitionController"
const val TAG = "CameraAvailabilityListener"

/**
 * Listens for usage of the Camera and controls the ScreenDecorations transition to show extra
+10 −3
Original line number Diff line number Diff line
@@ -878,9 +878,10 @@ public class ScreenDecorations extends SystemUI implements Tunable,
        private final List<Rect> mBounds = new ArrayList();
        private final Rect mBoundingRect = new Rect();
        private final Path mBoundingPath = new Path();
        // Don't initialize these because they are cached elsewhere and may not exist
        // Don't initialize these yet because they may never exist
        private Rect mProtectionRect;
        private Path mProtectionPath;
        private Path mProtectionPathOrig;
        private Rect mTotalBounds = new Rect();
        // Whether or not to show the cutout protection path
        private boolean mShowProtection = false;
@@ -969,7 +970,11 @@ public class ScreenDecorations extends SystemUI implements Tunable,
        }

        void setProtection(Path protectionPath, Rect pathBounds) {
            mProtectionPath = protectionPath;
            if (mProtectionPathOrig == null) {
                mProtectionPathOrig = new Path();
                mProtectionPath = new Path();
            }
            mProtectionPathOrig.set(protectionPath);
            mProtectionRect = pathBounds;
        }

@@ -1053,7 +1058,9 @@ public class ScreenDecorations extends SystemUI implements Tunable,
            Matrix m = new Matrix();
            transformPhysicalToLogicalCoordinates(mInfo.rotation, dw, dh, m);
            mBoundingPath.transform(m);
            if (mProtectionPath != null) {
            if (mProtectionPathOrig != null) {
                // Reset the protection path so we don't aggregate rotations
                mProtectionPath.set(mProtectionPathOrig);
                mProtectionPath.transform(m);
            }
        }