diff options
| author | 2023-02-28 13:35:00 +0100 | |
|---|---|---|
| committer | 2023-03-03 10:01:04 +0000 | |
| commit | 53fa453b932e30e6eefbfa34145b2107b6325a5c (patch) | |
| tree | 6936f39863605211bd79961e825efc2460d56264 | |
| parent | 236f36de43d85d03ce0648e70af1ca06373248a6 (diff) | |
Use HdrConversionMode FORCE with preferredHdrType INVALID for a casee
when SDR FORCE conversion is chosen.
SDR force conversion is handled as PASSTHROUGH internally, but for
differenciating it extrenally, use FORCE with INVALID HDR type.
Test: m
Bug: 251168530
Change-Id: Ie1e64b155fe714aa04d2d07c3cd89dde4ca17417
| -rw-r--r-- | core/java/android/hardware/display/DisplayManager.java | 5 | ||||
| -rw-r--r-- | services/core/java/com/android/server/display/DisplayManagerService.java | 18 |
2 files changed, 16 insertions, 7 deletions
diff --git a/core/java/android/hardware/display/DisplayManager.java b/core/java/android/hardware/display/DisplayManager.java index 50dd7a0bc1be..6ae71d2bb25e 100644 --- a/core/java/android/hardware/display/DisplayManager.java +++ b/core/java/android/hardware/display/DisplayManager.java @@ -1409,9 +1409,10 @@ public final class DisplayManager { * @param hdrConversionMode The {@link HdrConversionMode} to set. * Note, {@code HdrConversionMode.preferredHdrOutputType} is only applicable when * {@code HdrConversionMode.conversionMode} is {@link HdrConversionMode#HDR_CONVERSION_FORCE}. + * If {@code HdrConversionMode.preferredHdrOutputType} is not set in case when + * {@code HdrConversionMode.conversionMode} is {@link HdrConversionMode#HDR_CONVERSION_FORCE}, + * it means that preferred output type is SDR. * - * @throws IllegalArgumentException if hdrConversionMode.preferredHdrOutputType is not set - * when hdrConversionMode.conversionMode is {@link HdrConversionMode#HDR_CONVERSION_FORCE}. * @throws IllegalArgumentException if hdrConversionMode.preferredHdrOutputType is set but * hdrConversionMode.conversionMode is not {@link HdrConversionMode#HDR_CONVERSION_FORCE}. * diff --git a/services/core/java/com/android/server/display/DisplayManagerService.java b/services/core/java/com/android/server/display/DisplayManagerService.java index 6eb465e1049e..31e38743507c 100644 --- a/services/core/java/com/android/server/display/DisplayManagerService.java +++ b/services/core/java/com/android/server/display/DisplayManagerService.java @@ -2126,16 +2126,24 @@ public final class DisplayManagerService extends SystemService { autoHdrOutputTypes = getEnabledAutoHdrTypesLocked(); } + int conversionMode = hdrConversionMode.getConversionMode(); + int preferredHdrType = hdrConversionMode.getPreferredHdrOutputType(); // If the HDR conversion is disabled by an app through WindowManager.LayoutParams, then // set HDR conversion mode to HDR_CONVERSION_PASSTHROUGH. if (mOverrideHdrConversionMode == null) { - mSystemPreferredHdrOutputType = - mInjector.setHdrConversionMode(hdrConversionMode.getConversionMode(), - hdrConversionMode.getPreferredHdrOutputType(), autoHdrOutputTypes); + // HDR_CONVERSION_FORCE with HDR_TYPE_INVALID is used to represent forcing SDR type. + // But, internally SDR is selected by using passthrough mode. + if (conversionMode == HdrConversionMode.HDR_CONVERSION_FORCE + && preferredHdrType == Display.HdrCapabilities.HDR_TYPE_INVALID) { + conversionMode = HdrConversionMode.HDR_CONVERSION_PASSTHROUGH; + } } else { - mInjector.setHdrConversionMode(mOverrideHdrConversionMode.getConversionMode(), - mOverrideHdrConversionMode.getPreferredHdrOutputType(), null); + conversionMode = mOverrideHdrConversionMode.getConversionMode(); + preferredHdrType = mOverrideHdrConversionMode.getPreferredHdrOutputType(); + autoHdrOutputTypes = null; } + mSystemPreferredHdrOutputType = mInjector.setHdrConversionMode( + conversionMode, preferredHdrType, autoHdrOutputTypes); } } |