summaryrefslogtreecommitdiff
path: root/core/java/android/view/Display.java
diff options
context:
space:
mode:
Diffstat (limited to 'core/java/android/view/Display.java')
-rw-r--r--core/java/android/view/Display.java37
1 files changed, 35 insertions, 2 deletions
diff --git a/core/java/android/view/Display.java b/core/java/android/view/Display.java
index d484f4d47e99..1e2271abee90 100644
--- a/core/java/android/view/Display.java
+++ b/core/java/android/view/Display.java
@@ -44,6 +44,7 @@ import android.os.Parcel;
import android.os.Parcelable;
import android.os.Process;
import android.os.SystemClock;
+import android.util.ArraySet;
import android.util.DisplayMetrics;
import android.util.Log;
@@ -1066,7 +1067,31 @@ public final class Display {
public HdrCapabilities getHdrCapabilities() {
synchronized (mLock) {
updateDisplayInfoLocked();
- return mDisplayInfo.hdrCapabilities;
+ if (mDisplayInfo.userDisabledHdrTypes.length == 0) {
+ return mDisplayInfo.hdrCapabilities;
+ }
+ ArraySet<Integer> enabledTypesSet = new ArraySet<>();
+ for (int supportedType : mDisplayInfo.hdrCapabilities.getSupportedHdrTypes()) {
+ boolean typeDisabled = false;
+ for (int userDisabledType : mDisplayInfo.userDisabledHdrTypes) {
+ if (supportedType == userDisabledType) {
+ typeDisabled = true;
+ break;
+ }
+ }
+ if (!typeDisabled) {
+ enabledTypesSet.add(supportedType);
+ }
+ }
+ int[] enabledTypes = new int[enabledTypesSet.size()];
+ int index = 0;
+ for (int enabledType : enabledTypesSet) {
+ enabledTypes[index++] = enabledType;
+ }
+ return new HdrCapabilities(enabledTypes,
+ mDisplayInfo.hdrCapabilities.mMaxLuminance,
+ mDisplayInfo.hdrCapabilities.mMaxAverageLuminance,
+ mDisplayInfo.hdrCapabilities.mMinLuminance);
}
}
@@ -1079,7 +1104,7 @@ public final class Display {
public boolean isHdr() {
synchronized (mLock) {
updateDisplayInfoLocked();
- return mDisplayInfo.isHdr();
+ return !(getHdrCapabilities().getSupportedHdrTypes().length == 0);
}
}
@@ -1855,6 +1880,14 @@ public final class Display {
public static final int HDR_TYPE_HDR10_PLUS = 4;
/** @hide */
+ public static final int[] HDR_TYPES = {
+ HDR_TYPE_DOLBY_VISION,
+ HDR_TYPE_HDR10,
+ HDR_TYPE_HLG,
+ HDR_TYPE_HDR10_PLUS
+ };
+
+ /** @hide */
@IntDef(prefix = { "HDR_TYPE_" }, value = {
HDR_TYPE_DOLBY_VISION,
HDR_TYPE_HDR10,