From 214d612e90575e673f373de28d60c1aee109b0bf Mon Sep 17 00:00:00 2001 From: jiayongqiang Date: Tue, 2 Aug 2022 20:03:40 +0800 Subject: 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 Merged-In: Ie8ba03cfdd4a8aa446071e05db1c302182a92939 --- .../java/com/android/server/display/DisplayPowerController.java | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/services/core/java/com/android/server/display/DisplayPowerController.java b/services/core/java/com/android/server/display/DisplayPowerController.java index 54189bf7925e..237485bca1f9 100644 --- a/services/core/java/com/android/server/display/DisplayPowerController.java +++ b/services/core/java/com/android/server/display/DisplayPowerController.java @@ -1670,9 +1670,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.modifier & BrightnessReason.MODIFIER_DIMMED) == 0 - && (mBrightnessReason.modifier & BrightnessReason.MODIFIER_LOW_POWER) == 0) { - // We want to scale HDR brightness level with the SDR level + && (mBrightnessReasonTemp.modifier & BrightnessReason.MODIFIER_DIMMED) == 0 + && (mBrightnessReasonTemp.modifier & BrightnessReason.MODIFIER_LOW_POWER) + == 0) { + // 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(); } -- cgit v1.2.3-59-g8ed1b