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
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user