0
0
mirror of https://github.com/ponces/treble_aosp.git synced 2025-04-21 23:49:06 +00:00
Files
treble_aosp/patches/trebledroid/platform_frameworks_base/0021-Catch-broken-mainBuiltInDisplayCutoutRectApproximati.patch
2025-04-12 10:17:26 +00:00

55 lines
2.7 KiB
Diff

From 9124db3deebeba44cbb6feb2417f21d30c371012 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 21/56] 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
Change-Id: I03b6e78bac2cc38f3a623c8add801405ad6ba7ba
---
core/java/android/view/DisplayCutout.java | 21 +++++++++++++++------
1 file changed, 15 insertions(+), 6 deletions(-)
diff --git a/core/java/android/view/DisplayCutout.java b/core/java/android/view/DisplayCutout.java
index c4becea462d5..a24586ed4da1 100644
--- a/core/java/android/view/DisplayCutout.java
+++ b/core/java/android/view/DisplayCutout.java
@@ -1188,12 +1188,21 @@ public final class DisplayCutout {
public static DisplayCutout fromResourcesRectApproximation(Resources res,
String displayUniqueId, int physicalDisplayWidth, int physicalDisplayHeight,
int displayWidth, int displayHeight) {
- return pathAndDisplayCutoutFromSpec(getDisplayCutoutPath(res, displayUniqueId),
- getDisplayCutoutApproximationRect(res, displayUniqueId), physicalDisplayWidth,
- physicalDisplayHeight, displayWidth, displayHeight,
- DENSITY_DEVICE_STABLE / (float) DENSITY_DEFAULT,
- getWaterfallInsets(res, displayUniqueId),
- getDisplayCutoutSideOverrides(res, displayUniqueId)).second;
+ try {
+ return pathAndDisplayCutoutFromSpec(getDisplayCutoutPath(res, displayUniqueId),
+ getDisplayCutoutApproximationRect(res, displayUniqueId), physicalDisplayWidth,
+ physicalDisplayHeight, displayWidth, displayHeight,
+ DENSITY_DEVICE_STABLE / (float) DENSITY_DEFAULT,
+ getWaterfallInsets(res, displayUniqueId),
+ getDisplayCutoutSideOverrides(res, displayUniqueId)).second;
+ } catch(Throwable t) {
+ return pathAndDisplayCutoutFromSpec(getDisplayCutoutPath(res, displayUniqueId),
+ null, physicalDisplayWidth,
+ physicalDisplayHeight, displayWidth, displayHeight,
+ DENSITY_DEVICE_STABLE / (float) DENSITY_DEFAULT,
+ getWaterfallInsets(res, displayUniqueId),
+ getDisplayCutoutSideOverrides(res, displayUniqueId)).second;
+ }
}
/**
--
2.43.0