Send -1.0 when brightness is off
Brightness was being sent as 0(MIN) previously, we want -1.0(OFF) to be sent to the display.
Bug: 185853190
Bug: 184908496
Test: manual
Change-Id: I14cff1a769e769fff1fa6e90ef0177c3b8518ba4
diff --git a/services/core/java/com/android/server/display/DisplayDeviceConfig.java b/services/core/java/com/android/server/display/DisplayDeviceConfig.java
index d865dfb..0f9e604 100644
--- a/services/core/java/com/android/server/display/DisplayDeviceConfig.java
+++ b/services/core/java/com/android/server/display/DisplayDeviceConfig.java
@@ -74,6 +74,8 @@
// so -2 is used instead
private static final float INVALID_BRIGHTNESS_IN_CONFIG = -2f;
+ private static final float NITS_INVALID = -1;
+
private final Context mContext;
// The details of the ambient light sensor associated with this display.
@@ -230,7 +232,7 @@
public float getNitsFromBacklight(float backlight) {
if (mBacklightToNitsSpline == null) {
Slog.wtf(TAG, "requesting nits when no mapping exists.");
- return -1;
+ return NITS_INVALID;
}
backlight = Math.max(backlight, mBacklightMinimum);
return mBacklightToNitsSpline.interpolate(backlight);
@@ -280,13 +282,6 @@
}
/**
- * @return true if a nits to backlight mapping is defined in this config, false otherwise.
- */
- public boolean hasNitsMapping() {
- return mBacklightToNitsSpline != null;
- }
-
- /**
* @param quirkValue The quirk to test.
* @return {@code true} if the specified quirk is present in this configuration,
* {@code false} otherwise.
diff --git a/services/core/java/com/android/server/display/LocalDisplayAdapter.java b/services/core/java/com/android/server/display/LocalDisplayAdapter.java
index ec9bbf0..2f17481 100644
--- a/services/core/java/com/android/server/display/LocalDisplayAdapter.java
+++ b/services/core/java/com/android/server/display/LocalDisplayAdapter.java
@@ -67,8 +67,6 @@
private static final int NO_DISPLAY_MODE_ID = 0;
- private static final float NITS_INVALID = -1;
-
private final LongSparseArray<LocalDisplayDevice> mDevices = new LongSparseArray<>();
private final Injector mInjector;
@@ -770,48 +768,51 @@
}
}
- private void setDisplayBrightness(float brightness, float sdrBrightness) {
- // Ensure brightnessState is valid before processing and sending to
- // surface control
- if (Float.isNaN(brightness)) {
+ private void setDisplayBrightness(float brightnessState,
+ float sdrBrightnessState) {
+ // brightnessState includes invalid, off and full range.
+ if (Float.isNaN(brightnessState) || Float.isNaN(sdrBrightnessState)) {
return;
}
if (DEBUG) {
Slog.d(TAG, "setDisplayBrightness("
+ "id=" + physicalDisplayId
- + ", brightness=" + brightness
- + ", sdrBrightness=" + sdrBrightness + ")");
+ + ", brightnessState=" + brightnessState
+ + ", sdrBrightnessState=" + sdrBrightnessState + ")");
}
Trace.traceBegin(Trace.TRACE_TAG_POWER, "setDisplayBrightness("
- + "id=" + physicalDisplayId + ", brightness=" + brightness
- + ", sdrBrightness=" + sdrBrightness + ")");
+ + "id=" + physicalDisplayId + ", brightnessState="
+ + brightnessState + ", sdrBrightnessState=" + sdrBrightnessState
+ + ")");
try {
- final float backlight = brightnessToBacklight(brightness);
- float nits = NITS_INVALID;
- float sdrBacklight = PowerManager.BRIGHTNESS_INVALID_FLOAT;
- float sdrNits = NITS_INVALID;
- if (getDisplayDeviceConfig().hasNitsMapping()
- && sdrBrightness != PowerManager.BRIGHTNESS_INVALID_FLOAT) {
- nits = backlightToNits(backlight);
- sdrBacklight = brightnessToBacklight(sdrBrightness);
- sdrNits = backlightToNits(sdrBacklight);
- }
+ final float backlight = brightnessToBacklight(brightnessState);
+ final float sdrBacklight = brightnessToBacklight(sdrBrightnessState);
+
+ final float nits = backlightToNits(backlight);
+ final float sdrNits = backlightToNits(sdrBacklight);
+
mBacklightAdapter.setBacklight(sdrBacklight, sdrNits, backlight, nits);
Trace.traceCounter(Trace.TRACE_TAG_POWER,
"ScreenBrightness",
- BrightnessSynchronizer.brightnessFloatToInt(brightness));
+ BrightnessSynchronizer.brightnessFloatToInt(brightnessState));
Trace.traceCounter(Trace.TRACE_TAG_POWER,
"SdrScreenBrightness",
- BrightnessSynchronizer.brightnessFloatToInt(sdrBrightness));
+ BrightnessSynchronizer.brightnessFloatToInt(
+ sdrBrightnessState));
} finally {
Trace.traceEnd(Trace.TRACE_TAG_POWER);
}
}
private float brightnessToBacklight(float brightness) {
- return getDisplayDeviceConfig().getBacklightFromBrightness(brightness);
+ if (BrightnessSynchronizer.floatEquals(
+ brightness, PowerManager.BRIGHTNESS_OFF_FLOAT)) {
+ return PowerManager.BRIGHTNESS_OFF_FLOAT;
+ } else {
+ return getDisplayDeviceConfig().getBacklightFromBrightness(brightness);
+ }
}
private float backlightToNits(float backlight) {