diff options
| -rw-r--r-- | services/core/java/com/android/server/display/DisplayPowerController.java | 22 | ||||
| -rw-r--r-- | services/core/java/com/android/server/display/DisplayPowerState.java | 2 |
2 files changed, 17 insertions, 7 deletions
diff --git a/services/core/java/com/android/server/display/DisplayPowerController.java b/services/core/java/com/android/server/display/DisplayPowerController.java index bafeb77c55e6..9411c5629457 100644 --- a/services/core/java/com/android/server/display/DisplayPowerController.java +++ b/services/core/java/com/android/server/display/DisplayPowerController.java @@ -1067,12 +1067,22 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call mColorFadeEnabled && mPowerState.getColorFadeLevel() == 1.0f; final boolean brightnessIsTemporary = mAppliedTemporaryBrightness || mAppliedTemporaryAutoBrightnessAdjustment; - if (initialRampSkip || hasBrightnessBuckets - || wasOrWillBeInVr || !isDisplayContentVisible || brightnessIsTemporary) { - animateScreenBrightness(brightnessState, SCREEN_ANIMATION_RATE_MINIMUM); - } else { - animateScreenBrightness(brightnessState, - slowChange ? mBrightnessRampRateSlow : mBrightnessRampRateFast); + // We only want to animate the brightness if it is between 0.0f and 1.0f. + // brightnessState can contain the values -1.0f and NaN, which we do not want to + // animate to. To avoid this, we check the value first. + // If the brightnessState is off (-1.0f) we still want to animate to the minimum + // brightness (0.0f) to accommodate for LED displays, which can appear bright to the + // user even when the display is all black. + float animateValue = brightnessState == PowerManager.BRIGHTNESS_OFF_FLOAT + ? PowerManager.BRIGHTNESS_MIN : brightnessState; + if (isValidBrightnessValue(animateValue)) { + if (initialRampSkip || hasBrightnessBuckets + || wasOrWillBeInVr || !isDisplayContentVisible || brightnessIsTemporary) { + animateScreenBrightness(animateValue, SCREEN_ANIMATION_RATE_MINIMUM); + } else { + animateScreenBrightness(animateValue, + slowChange ? mBrightnessRampRateSlow : mBrightnessRampRateFast); + } } if (!brightnessIsTemporary) { diff --git a/services/core/java/com/android/server/display/DisplayPowerState.java b/services/core/java/com/android/server/display/DisplayPowerState.java index 24e1b4edc8a6..4b6430d5197c 100644 --- a/services/core/java/com/android/server/display/DisplayPowerState.java +++ b/services/core/java/com/android/server/display/DisplayPowerState.java @@ -146,7 +146,7 @@ final class DisplayPowerState { /** * Sets the display brightness. * - * @param brightness The brightness, ranges from 0 (minimum / off) to 255 (brightest). + * @param brightness The brightness, ranges from 0.0f (minimum / off) to 1.0f (brightest). */ public void setScreenBrightness(float brightness) { if (mScreenBrightness != brightness) { |