summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author TreeHugger Robot <treehugger-gerrit@google.com> 2018-09-05 18:42:25 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2018-09-05 18:42:25 +0000
commit8ef645daa212a29c7e084c0f00d68d7957f3eb1f (patch)
treef8237581ea819f5ee647228e557af0caac8c82cd
parent98bb3f5c37e861e81756163a6ac0a343266ebce0 (diff)
parentf739badb46fd92a556931b02ceb751a102d9dbac (diff)
Merge "Configuration#isScreenHdr should depend on hasHdrDisplay"
-rw-r--r--services/core/java/com/android/server/wm/DisplayContent.java2
-rw-r--r--services/core/java/com/android/server/wm/WindowManagerService.java21
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)) {