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>
This commit is contained in:
Mike Lockwood
2009-10-31 16:31:27 -04:00
parent 05cb5610fd
commit aa66ea880f

View File

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