summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--services/core/java/com/android/server/display/DisplayPowerController.java22
-rw-r--r--services/core/java/com/android/server/display/DisplayPowerState.java2
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) {