Use separate flags for enabling hardware and software auto-brightness.
This cleans up the code in preparation for some other auto-brightness changes
and fixes support for devices without light sensors.
Change-Id: I3d4802cf860a865ffd86a8bb57cd57b46359433d
Signed-off-by: Mike Lockwood <lockwood@android.com>
diff --git a/services/java/com/android/server/PowerManagerService.java b/services/java/com/android/server/PowerManagerService.java
index 4bf606d..be1e8a5 100644
--- a/services/java/com/android/server/PowerManagerService.java
+++ b/services/java/com/android/server/PowerManagerService.java
@@ -211,7 +211,8 @@
private long mScreenOnStartTime;
private boolean mPreventScreenOn;
private int mScreenBrightnessOverride = -1;
- private boolean mHasHardwareAutoBrightness;
+ private boolean mUseSoftwareAutoBrightness;
+ private boolean mUseHardwareAutoBrightness;
private boolean mAutoBrightessEnabled;
private int[] mAutoBrightnessLevels;
private int[] mLcdBacklightValues;
@@ -438,9 +439,16 @@
mScreenOffIntent.addFlags(Intent.FLAG_RECEIVER_REGISTERED_ONLY);
Resources resources = mContext.getResources();
- mHasHardwareAutoBrightness = resources.getBoolean(
+
+ // read settings for auto-brightness
+ mUseSoftwareAutoBrightness = resources.getBoolean(
+ com.android.internal.R.bool.config_automatic_brightness_available);
+ mUseHardwareAutoBrightness = resources.getBoolean(
com.android.internal.R.bool.config_hardware_automatic_brightness_available);
- if (!mHasHardwareAutoBrightness) {
+ if (mUseHardwareAutoBrightness) {
+ mUseSoftwareAutoBrightness = false;
+ }
+ if (mUseSoftwareAutoBrightness) {
mAutoBrightnessLevels = resources.getIntArray(
com.android.internal.R.array.config_autoBrightnessLevels);
mLcdBacklightValues = resources.getIntArray(
@@ -479,7 +487,7 @@
// And explicitly do the initial update of our cached settings
updateGservicesValues();
- if (mAutoBrightessEnabled && !mHasHardwareAutoBrightness) {
+ if (mUseSoftwareAutoBrightness && mAutoBrightessEnabled) {
// turn the screen on
setPowerState(SCREEN_BRIGHT);
} else {
@@ -581,7 +589,7 @@
switch (wl.flags & LOCK_MASK)
{
case PowerManager.FULL_WAKE_LOCK:
- if (mAutoBrightessEnabled && !mHasHardwareAutoBrightness) {
+ if (mAutoBrightessEnabled && mUseSoftwareAutoBrightness) {
wl.minState = SCREEN_BRIGHT;
} else {
wl.minState = (mKeyboardVisible ? ALL_BRIGHT : SCREEN_BUTTON_BRIGHT);
@@ -887,7 +895,8 @@
pw.println(" mLightSensorEnabled=" + mLightSensorEnabled);
pw.println(" mLightSensorValue=" + mLightSensorValue);
pw.println(" mLightSensorPendingValue=" + mLightSensorPendingValue);
- pw.println(" mHasHardwareAutoBrightness=" + mHasHardwareAutoBrightness);
+ pw.println(" mUseHardwareAutoBrightness=" + mUseHardwareAutoBrightness);
+ pw.println(" mUseSoftwareAutoBrightness=" + mUseSoftwareAutoBrightness);
pw.println(" mAutoBrightessEnabled=" + mAutoBrightessEnabled);
mScreenBrightness.dump(pw, " mScreenBrightness: ");
mKeyboardBrightness.dump(pw, " mKeyboardBrightness: ");
@@ -1290,7 +1299,7 @@
private int setScreenStateLocked(boolean on) {
int err = Power.setScreenState(on);
- if (err == 0 && !mHasHardwareAutoBrightness) {
+ if (err == 0 && mUseSoftwareAutoBrightness) {
enableLightSensor(on && mAutoBrightessEnabled);
if (!on) {
// make sure button and key backlights are off too
@@ -1337,7 +1346,7 @@
return;
}
- if (!mDoneBooting && !(mAutoBrightessEnabled && !mHasHardwareAutoBrightness)) {
+ if (!mDoneBooting && !(mAutoBrightessEnabled && mUseSoftwareAutoBrightness)) {
newState |= ALL_BRIGHT;
}
@@ -1758,7 +1767,7 @@
try {
if (mScreenBrightnessOverride >= 0) {
return mScreenBrightnessOverride;
- } else if (mLightSensorBrightness >= 0 && !mHasHardwareAutoBrightness) {
+ } else if (mLightSensorBrightness >= 0 && mUseSoftwareAutoBrightness) {
return mLightSensorBrightness;
}
final int brightness = Settings.System.getInt(mContext.getContentResolver(),
@@ -1850,7 +1859,7 @@
// Only turn on button backlights if a button was pressed
// and auto brightness is disabled
if (eventType == BUTTON_EVENT &&
- !(mAutoBrightessEnabled && !mHasHardwareAutoBrightness)) {
+ !(mAutoBrightessEnabled && mUseSoftwareAutoBrightness)) {
mUserState = (mKeyboardVisible ? ALL_BRIGHT : SCREEN_BUTTON_BRIGHT);
} else {
// don't clear button/keyboard backlights when the screen is touched.
@@ -1908,8 +1917,6 @@
Log.d(TAG, "lightSensorChangedLocked " + value);
}
- if (mHasHardwareAutoBrightness) return;
-
if (mLightSensorValue != value) {
mLightSensorValue = value;
if ((mPowerState & BATTERY_LOW_BIT) == 0) {
@@ -2057,17 +2064,17 @@
boolean enabled = (mode == SCREEN_BRIGHTNESS_MODE_AUTOMATIC);
if (mAutoBrightessEnabled != enabled) {
mAutoBrightessEnabled = enabled;
- // reset computed brightness
- mLightSensorValue = -1;
- mLightSensorBrightness = -1;
- if (mHasHardwareAutoBrightness) {
+ if (mUseHardwareAutoBrightness) {
// When setting auto-brightness, must reset the brightness afterwards
mHardware.setAutoBrightness_UNCHECKED(enabled);
if (screenIsOn()) {
setBacklightBrightness((int)mScreenBrightness.curValue);
}
- } else {
+ } else if (mUseSoftwareAutoBrightness) {
+ // reset computed brightness
+ mLightSensorValue = -1;
+ mLightSensorBrightness = -1;
enableLightSensor(screenIsOn() && enabled);
}
}
@@ -2222,7 +2229,7 @@
mSensorManager = new SensorManager(mHandlerThread.getLooper());
mProximitySensor = mSensorManager.getDefaultSensor(Sensor.TYPE_PROXIMITY);
// don't bother with the light sensor if auto brightness is handled in hardware
- if (!mHasHardwareAutoBrightness) {
+ if (mUseSoftwareAutoBrightness) {
mLightSensor = mSensorManager.getDefaultSensor(Sensor.TYPE_LIGHT);
enableLightSensor(mAutoBrightessEnabled);
}