Add support for brightness as a float
Change the framework to handle brightness as a float rather than an int.
Test: AutomaticBrightnessControllerTest
BrightnessConfigurationTest
BrightnessMappingStrategyTest
BrightnessUtilsTest
DevicePolicyManagerTest
DisplayManagerServiceTest
DisplayTest
DozeScreenBrightnessTest
PowerManagerTest
PowerManagerVrTest
SettingsProviderTest
Exempt-From-Owner-Approval: Changing param from int to float
Change-Id: I413641cd987c5ec8f82753c0388a33f85a9682de
diff --git a/services/core/java/com/android/server/display/DisplayManagerService.java b/services/core/java/com/android/server/display/DisplayManagerService.java
index 71ade62..9140589 100644
--- a/services/core/java/com/android/server/display/DisplayManagerService.java
+++ b/services/core/java/com/android/server/display/DisplayManagerService.java
@@ -232,7 +232,7 @@
// The overall display brightness.
// For now, this only applies to the built-in display but we may split it up eventually.
- private int mGlobalDisplayBrightness = PowerManager.BRIGHTNESS_DEFAULT;
+ private float mGlobalDisplayBrightness;
// Set to true when there are pending display changes that have yet to be applied
// to the surface flinger state.
@@ -340,7 +340,8 @@
mMinimumBrightnessSpline = Spline.createSpline(lux, nits);
PowerManager pm = mContext.getSystemService(PowerManager.class);
- mGlobalDisplayBrightness = pm.getDefaultScreenBrightnessSetting();
+ mGlobalDisplayBrightness = pm.getBrightnessConstraint(
+ PowerManager.BRIGHTNESS_CONSTRAINT_TYPE_DEFAULT);
mCurrentUserId = UserHandle.USER_SYSTEM;
ColorSpace[] colorSpaces = SurfaceControl.getCompositionColorSpaces();
mWideColorSpace = colorSpaces[1];
@@ -539,16 +540,16 @@
}
}
- private void requestGlobalDisplayStateInternal(int state, int brightness) {
+ private void requestGlobalDisplayStateInternal(int state, float brightnessState) {
if (state == Display.STATE_UNKNOWN) {
state = Display.STATE_ON;
}
if (state == Display.STATE_OFF) {
- brightness = PowerManager.BRIGHTNESS_OFF;
- } else if (brightness < 0) {
- brightness = PowerManager.BRIGHTNESS_DEFAULT;
- } else if (brightness > PowerManager.BRIGHTNESS_ON) {
- brightness = PowerManager.BRIGHTNESS_ON;
+ brightnessState = PowerManager.BRIGHTNESS_OFF_FLOAT;
+ } else if (brightnessState < PowerManager.BRIGHTNESS_MIN || Float.isNaN(brightnessState)) {
+ brightnessState = PowerManager.BRIGHTNESS_INVALID_FLOAT;
+ } else if (brightnessState > PowerManager.BRIGHTNESS_MAX) {
+ brightnessState = PowerManager.BRIGHTNESS_MAX;
}
synchronized (mTempDisplayStateWorkQueue) {
@@ -558,15 +559,15 @@
// may happen as a side-effect of displays changing state.
synchronized (mSyncRoot) {
if (mGlobalDisplayState == state
- && mGlobalDisplayBrightness == brightness) {
+ && mGlobalDisplayBrightness == brightnessState) {
return; // no change
}
Trace.traceBegin(Trace.TRACE_TAG_POWER, "requestGlobalDisplayState("
+ Display.stateToString(state)
- + ", brightness=" + brightness + ")");
+ + ", brightness=" + brightnessState + ")");
mGlobalDisplayState = state;
- mGlobalDisplayBrightness = brightness;
+ mGlobalDisplayBrightness = brightnessState;
applyGlobalDisplayStateLocked(mTempDisplayStateWorkQueue);
}
@@ -1023,7 +1024,8 @@
// by the display power controller (if known).
DisplayDeviceInfo info = device.getDisplayDeviceInfoLocked();
if ((info.flags & DisplayDeviceInfo.FLAG_NEVER_BLANK) == 0) {
- return device.requestDisplayStateLocked(mGlobalDisplayState, mGlobalDisplayBrightness);
+ return device.requestDisplayStateLocked(
+ mGlobalDisplayState, mGlobalDisplayBrightness);
}
return null;
}
@@ -2300,7 +2302,7 @@
}
@Override // Binder call
- public void setTemporaryBrightness(int brightness) {
+ public void setTemporaryBrightness(float brightness) {
mContext.enforceCallingOrSelfPermission(
Manifest.permission.CONTROL_DISPLAY_BRIGHTNESS,
"Permission required to set the display's brightness");
@@ -2419,7 +2421,7 @@
synchronized (mSyncRoot) {
DisplayBlanker blanker = new DisplayBlanker() {
@Override
- public void requestDisplayState(int state, int brightness) {
+ public void requestDisplayState(int state, float brightness) {
// The order of operations is important for legacy reasons.
if (state == Display.STATE_OFF) {
requestGlobalDisplayStateInternal(state, brightness);