diff options
Diffstat (limited to 'core/java/android/view/Display.java')
| -rw-r--r-- | core/java/android/view/Display.java | 37 |
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, |
