diff options
| author | 2018-09-05 18:42:25 +0000 | |
|---|---|---|
| committer | 2018-09-05 18:42:25 +0000 | |
| commit | 8ef645daa212a29c7e084c0f00d68d7957f3eb1f (patch) | |
| tree | f8237581ea819f5ee647228e557af0caac8c82cd | |
| parent | 98bb3f5c37e861e81756163a6ac0a343266ebce0 (diff) | |
| parent | f739badb46fd92a556931b02ceb751a102d9dbac (diff) | |
Merge "Configuration#isScreenHdr should depend on hasHdrDisplay"
| -rw-r--r-- | services/core/java/com/android/server/wm/DisplayContent.java | 2 | ||||
| -rw-r--r-- | services/core/java/com/android/server/wm/WindowManagerService.java | 21 |
2 files changed, 21 insertions, 2 deletions
diff --git a/services/core/java/com/android/server/wm/DisplayContent.java b/services/core/java/com/android/server/wm/DisplayContent.java index 32fa9bf97930..9490ae2a894a 100644 --- a/services/core/java/com/android/server/wm/DisplayContent.java +++ b/services/core/java/com/android/server/wm/DisplayContent.java @@ -1426,7 +1426,7 @@ class DisplayContent extends WindowContainer<DisplayContent.DisplayChildWindowCo config.densityDpi = displayInfo.logicalDensityDpi; config.colorMode = - (displayInfo.isHdr() + ((displayInfo.isHdr() && mService.hasHdrSupport()) ? Configuration.COLOR_MODE_HDR_YES : Configuration.COLOR_MODE_HDR_NO) | (displayInfo.isWideColorGamut() && mService.hasWideColorGamutSupport() diff --git a/services/core/java/com/android/server/wm/WindowManagerService.java b/services/core/java/com/android/server/wm/WindowManagerService.java index e80a47eef2d5..2a381aca8a2a 100644 --- a/services/core/java/com/android/server/wm/WindowManagerService.java +++ b/services/core/java/com/android/server/wm/WindowManagerService.java @@ -734,8 +734,9 @@ public class WindowManagerService extends IWindowManager.Stub final DisplayManagerInternal mDisplayManagerInternal; final DisplayManager mDisplayManager; - // Indicates whether this device supports wide color gamut rendering + // Indicates whether this device supports wide color gamut / HDR rendering private boolean mHasWideColorGamutSupport; + private boolean mHasHdrSupport; // Who is holding the screen on. private Session mHoldingScreenOn; @@ -4504,6 +4505,7 @@ public class WindowManagerService extends IWindowManager.Stub mPolicy.systemReady(); mTaskSnapshotController.systemReady(); mHasWideColorGamutSupport = queryWideColorGamutSupport(); + mHasHdrSupport = queryHdrSupport(); } private static boolean queryWideColorGamutSupport() { @@ -4519,6 +4521,19 @@ public class WindowManagerService extends IWindowManager.Stub return false; } + private static boolean queryHdrSupport() { + try { + ISurfaceFlingerConfigs surfaceFlinger = ISurfaceFlingerConfigs.getService(); + OptionalBool hasHdr = surfaceFlinger.hasHDRDisplay(); + if (hasHdr != null) { + return hasHdr.value; + } + } catch (RemoteException e) { + // Ignore, we're in big trouble if we can't talk to SurfaceFlinger's config store + } + return false; + } + // ------------------------------------------------------------- // Async Handler // ------------------------------------------------------------- @@ -7499,6 +7514,10 @@ public class WindowManagerService extends IWindowManager.Stub SystemProperties.getInt("persist.sys.sf.native_mode", 0) != 1; } + boolean hasHdrSupport() { + return mHasHdrSupport && hasWideColorGamutSupport(); + } + void updateNonSystemOverlayWindowsVisibilityIfNeeded(WindowState win, boolean surfaceShown) { if (!win.hideNonSystemOverlayWindowsWhenVisible() && !mHidingNonSystemOverlayWindows.contains(win)) { |