44 lines
2.0 KiB
Diff
44 lines
2.0 KiB
Diff
From 575db4c47ba68a6355774abc815f2f4c8de7a996 Mon Sep 17 00:00:00 2001
|
|
From: Pierre-Hugues Husson <phh@phh.me>
|
|
Date: Tue, 23 Mar 2021 19:43:26 +0100
|
|
Subject: [PATCH 45/45] Catch broken mainBuiltInDisplayCutoutRectApproximation
|
|
|
|
Some devices (Redmi Note 9T) have:
|
|
mainBuiltInDisplayCutoutRectApproximation = @android:mainBuiltInDisplayCutout
|
|
Since mainBuiltInDisplayCutout is private, its ID is dynamic and can't
|
|
be relied upon.
|
|
This means that we'll get garbage in mainBuiltInDisplayCutoutRectApproximation
|
|
The SVG Path parser will fail, triggering an exception.
|
|
|
|
Fix it by catching it, and parsing mainBuiltInDisplayCutout instead
|
|
---
|
|
core/java/android/view/DisplayCutout.java | 12 +++++++++---
|
|
1 file changed, 9 insertions(+), 3 deletions(-)
|
|
|
|
diff --git a/core/java/android/view/DisplayCutout.java b/core/java/android/view/DisplayCutout.java
|
|
index b4863f9c6dd0..e1d57e6869aa 100644
|
|
--- a/core/java/android/view/DisplayCutout.java
|
|
+++ b/core/java/android/view/DisplayCutout.java
|
|
@@ -681,9 +681,15 @@ public final class DisplayCutout {
|
|
* @hide
|
|
*/
|
|
public static DisplayCutout fromResourcesRectApproximation(Resources res, int displayWidth, int displayHeight) {
|
|
- return fromSpec(res.getString(R.string.config_mainBuiltInDisplayCutoutRectApproximation),
|
|
- displayWidth, displayHeight, DENSITY_DEVICE_STABLE / (float) DENSITY_DEFAULT,
|
|
- loadWaterfallInset(res));
|
|
+ try {
|
|
+ return fromSpec(res.getString(R.string.config_mainBuiltInDisplayCutoutRectApproximation),
|
|
+ displayWidth, displayHeight, DENSITY_DEVICE_STABLE / (float) DENSITY_DEFAULT,
|
|
+ loadWaterfallInset(res));
|
|
+ } catch(java.lang.IllegalArgumentException e) {
|
|
+ return fromSpec(res.getString(R.string.config_mainBuiltInDisplayCutout),
|
|
+ displayWidth, displayHeight, DENSITY_DEVICE_STABLE / (float) DENSITY_DEFAULT,
|
|
+ loadWaterfallInset(res));
|
|
+ }
|
|
}
|
|
|
|
/**
|
|
--
|
|
2.25.1
|
|
|