diff options
| -rw-r--r-- | services/core/Android.bp | 1 | ||||
| -rw-r--r-- | services/core/java/com/android/server/wm/WindowManagerService.java | 17 |
2 files changed, 18 insertions, 0 deletions
diff --git a/services/core/Android.bp b/services/core/Android.bp index 77773edc28ca..9e483f919b47 100644 --- a/services/core/Android.bp +++ b/services/core/Android.bp @@ -130,6 +130,7 @@ java_library_static { "dnsresolver_aidl_interface-V4-java", "netd_event_listener_interface-java", "overlayable_policy_aidl-java", + "SurfaceFlingerProperties", ], } diff --git a/services/core/java/com/android/server/wm/WindowManagerService.java b/services/core/java/com/android/server/wm/WindowManagerService.java index 84d749f148fb..9c0822e63c5a 100644 --- a/services/core/java/com/android/server/wm/WindowManagerService.java +++ b/services/core/java/com/android/server/wm/WindowManagerService.java @@ -195,6 +195,7 @@ import android.provider.DeviceConfig; import android.provider.Settings; import android.service.vr.IVrManager; import android.service.vr.IVrStateCallbacks; +import android.sysprop.SurfaceFlingerProperties; import android.text.format.DateUtils; import android.util.ArrayMap; import android.util.ArraySet; @@ -304,7 +305,9 @@ import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.NoSuchElementException; import java.util.Objects; +import java.util.Optional; import java.util.function.Function; import java.util.function.Supplier; @@ -4686,6 +4689,11 @@ public class WindowManagerService extends IWindowManager.Stub } private static boolean queryWideColorGamutSupport() { + boolean defaultValue = false; + Optional<Boolean> hasWideColorProp = SurfaceFlingerProperties.has_wide_color_display(); + if (hasWideColorProp.isPresent()) { + return hasWideColorProp.get(); + } try { ISurfaceFlingerConfigs surfaceFlinger = ISurfaceFlingerConfigs.getService(); OptionalBool hasWideColor = surfaceFlinger.hasWideColorDisplay(); @@ -4694,11 +4702,18 @@ public class WindowManagerService extends IWindowManager.Stub } } catch (RemoteException e) { // Ignore, we're in big trouble if we can't talk to SurfaceFlinger's config store + } catch (NoSuchElementException e) { + return defaultValue; } return false; } private static boolean queryHdrSupport() { + boolean defaultValue = false; + Optional<Boolean> hasHdrProp = SurfaceFlingerProperties.has_HDR_display(); + if (hasHdrProp.isPresent()) { + return hasHdrProp.get(); + } try { ISurfaceFlingerConfigs surfaceFlinger = ISurfaceFlingerConfigs.getService(); OptionalBool hasHdr = surfaceFlinger.hasHDRDisplay(); @@ -4707,6 +4722,8 @@ public class WindowManagerService extends IWindowManager.Stub } } catch (RemoteException e) { // Ignore, we're in big trouble if we can't talk to SurfaceFlinger's config store + } catch (NoSuchElementException e) { + return defaultValue; } return false; } |