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
This commit is contained in:
Fiona Campbell
2021-05-05 14:24:25 +01:00
parent 22f83b56f7
commit 4eaafe399e
2 changed files with 27 additions and 31 deletions

View File

@@ -74,6 +74,8 @@ public class DisplayDeviceConfig {
// 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 class DisplayDeviceConfig {
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);
@@ -279,13 +281,6 @@ public class DisplayDeviceConfig {
return mProximitySensor;
}
/**
* @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,

View File

@@ -67,8 +67,6 @@ final class LocalDisplayAdapter extends DisplayAdapter {
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 @@ final class LocalDisplayAdapter extends DisplayAdapter {
}
}
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) {