Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 7e38b9f3 authored by Fergus Simpson's avatar Fergus Simpson
Browse files

Make Default HDR Conversion Overlayable

Make it possible for an overlay to specify that the default HDR
conversion mode should be "Match content dynamic range" instead of
"System-preferred conversion". Making the default value "Force" a
specific format isn't desirable, so this is just a bool to make the
default passthrough instead of system.

Note that this won't change the setting on a device that has booted with
a different default, even if the user hasn't set the setting.

Bug: b/318312317
Test: With overlay, FDR and "Match content dynamic range" is enabled
Change-Id: Iacd8fc68a5fea24a63c82d0e3ab7194379aea23e
parent 3a9e332a
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -3129,6 +3129,10 @@
    -->
    <bool name="config_enableWifiDisplay">false</bool>

    <!-- Whether the default HDR conversion mode should be passthrough instead of system.
    -->
    <bool name="config_enableDefaultHdrConversionPassthrough">false</bool>

    <!-- When true, local displays that do not contain any of their own content will automatically
         mirror the content of the default display. -->
    <bool name="config_localDisplaysMirrorContent">true</bool>
+1 −0
Original line number Diff line number Diff line
@@ -348,6 +348,7 @@
  <java-symbol type="bool" name="config_enableScreenshotChord" />
  <java-symbol type="bool" name="config_fold_lock_behavior" />
  <java-symbol type="bool" name="config_enableWifiDisplay" />
  <java-symbol type="bool" name="config_enableDefaultHdrConversionPassthrough" />
  <java-symbol type="bool" name="config_allowAnimationsInLowPowerMode" />
  <java-symbol type="bool" name="config_useDevInputEventForAudioJack" />
  <java-symbol type="bool" name="config_safe_media_volume_enabled" />
+16 −2
Original line number Diff line number Diff line
@@ -284,6 +284,8 @@ public final class DisplayManagerService extends SystemService {

    // Display mode chosen by user.
    private Display.Mode mUserPreferredMode;
    @HdrConversionMode.ConversionMode
    private final int mDefaultHdrConversionMode;
    // HDR conversion mode chosen by user
    @GuardedBy("mSyncRoot")
    private HdrConversionMode mHdrConversionMode = null;
@@ -582,6 +584,10 @@ public final class DisplayManagerService extends SystemService {
        mDefaultDisplayDefaultColorMode = mContext.getResources().getInteger(
                com.android.internal.R.integer.config_defaultDisplayDefaultColorMode);
        mDefaultDisplayTopInset = SystemProperties.getInt(PROP_DEFAULT_DISPLAY_TOP_INSET, -1);
        mDefaultHdrConversionMode = mContext.getResources().getBoolean(
                com.android.internal.R.bool.config_enableDefaultHdrConversionPassthrough)
                        ? HdrConversionMode.HDR_CONVERSION_PASSTHROUGH
                        : HdrConversionMode.HDR_CONVERSION_SYSTEM;
        float[] lux = getFloatArray(resources.obtainTypedArray(
                com.android.internal.R.array.config_minimumBrightnessCurveLux));
        float[] nits = getFloatArray(resources.obtainTypedArray(
@@ -2236,7 +2242,7 @@ public final class DisplayManagerService extends SystemService {
    @GuardedBy("mSyncRoot")
    void updateHdrConversionModeSettingsLocked() {
        final int conversionMode = Settings.Global.getInt(mContext.getContentResolver(),
                Settings.Global.HDR_CONVERSION_MODE, HdrConversionMode.HDR_CONVERSION_SYSTEM);
                Settings.Global.HDR_CONVERSION_MODE, mDefaultHdrConversionMode);
        final int preferredHdrOutputType = conversionMode == HdrConversionMode.HDR_CONVERSION_FORCE
                ? Settings.Global.getInt(mContext.getContentResolver(),
                Settings.Global.HDR_FORCE_CONVERSION_TYPE,
@@ -2461,7 +2467,7 @@ public final class DisplayManagerService extends SystemService {
                return mHdrConversionMode;
            }
        }
        return new HdrConversionMode(HdrConversionMode.HDR_CONVERSION_SYSTEM);
        return new HdrConversionMode(mDefaultHdrConversionMode);
    }

    HdrConversionMode getHdrConversionModeInternal() {
@@ -2473,6 +2479,14 @@ public final class DisplayManagerService extends SystemService {
            mode = mOverrideHdrConversionMode != null
                    ? mOverrideHdrConversionMode
                    : mHdrConversionMode;
            // Handle default: PASSTHROUGH. Don't include the system-preferred type.
            if (mode == null
                    && mDefaultHdrConversionMode == HdrConversionMode.HDR_CONVERSION_PASSTHROUGH) {
                return new HdrConversionMode(HdrConversionMode.HDR_CONVERSION_PASSTHROUGH);
            }
            // Handle default or current mode: SYSTEM. Include the system preferred type.
            // mOverrideHdrConversionMode and mHdrConversionMode do not include the system
            // preferred type, it is kept separately in mSystemPreferredHdrOutputType.
            if (mode == null
                    || mode.getConversionMode() == HdrConversionMode.HDR_CONVERSION_SYSTEM) {
                return new HdrConversionMode(