From 3beaadb2aafb71743f5ff7aa5d81a45212ce2149 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Piotr=20Wilczy=C5=84ski?= Date: Thu, 23 Mar 2023 17:33:31 +0000 Subject: [PATCH] Restoring SDR brightness immediately when entering dim state if the device is in HDR brightness scale mode. Because the mBrightnessReason.modifier is updated after scaling HDR brightness by calling mHbmController.getHdrBrightnessValue(), so if the device is entering dim state, the brightness will still scaling to HDR brightness, instead of setting to dim brightness directly. Bug: 274763122 Test: atest BrightnessThrottlerTest DisplayModeDirectorTest BrightnessLevelPreferenceControllerTest HighBrightnessModeControllerTest Test: Manually operations: 1. Enable HBM function; 2. Open a HDR layer; 3. Wait until the screen is dimming; 4. Check related logs. Change-Id: Ie8ba03cfdd4a8aa446071e05db1c302182a92939 --- .../com/android/server/display/DisplayPowerController.java | 7 ++++--- .../android/server/display/DisplayPowerController2.java | 7 ++++--- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/services/core/java/com/android/server/display/DisplayPowerController.java b/services/core/java/com/android/server/display/DisplayPowerController.java index e12cd8c9a43b4..f89b42ace9961 100644 --- a/services/core/java/com/android/server/display/DisplayPowerController.java +++ b/services/core/java/com/android/server/display/DisplayPowerController.java @@ -1799,10 +1799,11 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call // TODO(b/216365040): The decision to prevent HBM for HDR in low power mode should be // done in HighBrightnessModeController. if (mHbmController.getHighBrightnessMode() == BrightnessInfo.HIGH_BRIGHTNESS_MODE_HDR - && (mBrightnessReason.getModifier() & BrightnessReason.MODIFIER_DIMMED) == 0 - && (mBrightnessReason.getModifier() & BrightnessReason.MODIFIER_LOW_POWER) + && (mBrightnessReasonTemp.getModifier() & BrightnessReason.MODIFIER_DIMMED) == 0 + && (mBrightnessReasonTemp.getModifier() & BrightnessReason.MODIFIER_LOW_POWER) == 0) { - // We want to scale HDR brightness level with the SDR level + // We want to scale HDR brightness level with the SDR level, we also need to restore + // SDR brightness immediately when entering dim or low power mode. animateValue = mHbmController.getHdrBrightnessValue(); } diff --git a/services/core/java/com/android/server/display/DisplayPowerController2.java b/services/core/java/com/android/server/display/DisplayPowerController2.java index fbc354eb4c110..5422f8eb2b681 100644 --- a/services/core/java/com/android/server/display/DisplayPowerController2.java +++ b/services/core/java/com/android/server/display/DisplayPowerController2.java @@ -1507,10 +1507,11 @@ final class DisplayPowerController2 implements AutomaticBrightnessController.Cal // TODO(b/216365040): The decision to prevent HBM for HDR in low power mode should be // done in HighBrightnessModeController. if (mHbmController.getHighBrightnessMode() == BrightnessInfo.HIGH_BRIGHTNESS_MODE_HDR - && (mBrightnessReason.getModifier() & BrightnessReason.MODIFIER_DIMMED) == 0 - && (mBrightnessReason.getModifier() & BrightnessReason.MODIFIER_LOW_POWER) + && (mBrightnessReasonTemp.getModifier() & BrightnessReason.MODIFIER_DIMMED) == 0 + && (mBrightnessReasonTemp.getModifier() & BrightnessReason.MODIFIER_LOW_POWER) == 0) { - // We want to scale HDR brightness level with the SDR level + // We want to scale HDR brightness level with the SDR level, we also need to restore + // SDR brightness immediately when entering dim or low power mode. animateValue = mHbmController.getHdrBrightnessValue(); }