summaryrefslogtreecommitdiffstats
path: root/services
diff options
context:
space:
mode:
authorMike Kasick <mike@kasick.org>2012-06-21 21:20:36 -0400
committerMike Kasick <mike@kasick.org>2012-06-21 21:20:36 -0400
commit5ee3f9b91011c6713f7c4ae3e0076bd5923d4d7a (patch)
tree54ffff3f0889cc1b16e9497983066da356cc0a65 /services
parent3347c890ee8c1a4b66e8782ad8509040189a4951 (diff)
downloadframeworks_base-5ee3f9b91011c6713f7c4ae3e0076bd5923d4d7a.zip
frameworks_base-5ee3f9b91011c6713f7c4ae3e0076bd5923d4d7a.tar.gz
frameworks_base-5ee3f9b91011c6713f7c4ae3e0076bd5923d4d7a.tar.bz2
Fixes to ensure keyboard backlight is lit when the keyboard is visible.
- Ignore mKeyboardVisible in PowerManagerService::applyKeyboardState if KEYBOARD_BRIGHT_BIT is already set in mPowerState. Previously, if the keyboard were to hide after setting mPowerState, but before running applyKeyboardState, then the keyboard backlight would remain off at the next slide event since mPowerState is unchanged. - Always set mLightSensorKeyboardBrightness in PowerManagerService::lightSensorChangedLocked to a sensor-based value, instead of 0 when the keyboard is hidden. This ensures mLightSensorKeyboardBrightness is sensible on slide events since it may not be recomputed timely.
Diffstat (limited to 'services')
-rw-r--r--services/java/com/android/server/PowerManagerService.java18
1 files changed, 9 insertions, 9 deletions
diff --git a/services/java/com/android/server/PowerManagerService.java b/services/java/com/android/server/PowerManagerService.java
index 335af64..0878136 100644
--- a/services/java/com/android/server/PowerManagerService.java
+++ b/services/java/com/android/server/PowerManagerService.java
@@ -1825,7 +1825,7 @@ public class PowerManagerService extends IPowerManager.Stub
}
if (!mBootCompleted && !mAutoBrightnessButtonKeyboard) {
- newState |= ALL_BRIGHT;
+ newState |= (mKeyboardVisible ? ALL_BRIGHT : SCREEN_BUTTON_BRIGHT);
}
boolean oldScreenOn = (mPowerState & SCREEN_ON_BIT) != 0;
@@ -2422,7 +2422,11 @@ public class PowerManagerService extends IPowerManager.Stub
// do not override brightness if the battery is low
return state;
}
- if (!mKeyboardVisible) {
+ // Ignore mKeyboardVisible if KEYBOARD_BRIGHT_BIT is explicitly set, which
+ // it will only if the keyboard is visible at the time mPowerState is set.
+ // Otherwise, if mKeyboardVisible changes afterwards, it's possible for
+ // the backlight to mismatch mPowerState and remain off.
+ if (!mKeyboardVisible && (state & KEYBOARD_BRIGHT_BIT) == 0) {
brightness = 0;
} else if (mButtonBrightnessOverride >= 0) {
brightness = mButtonBrightnessOverride;
@@ -2817,14 +2821,10 @@ public class PowerManagerService extends IPowerManager.Stub
int buttonValue = getAutoBrightnessValue(value, mLastButtonValue,
(mCustomLightEnabled ? mCustomLightLevels : mAutoBrightnessLevels),
(mCustomLightEnabled ? mCustomButtonValues : mButtonBacklightValues));
- int keyboardValue;
- if (mKeyboardVisible) {
- keyboardValue = getAutoBrightnessValue(value, mLastKeyboardValue,
+ int keyboardValue = getAutoBrightnessValue(value, mLastKeyboardValue,
(mCustomLightEnabled ? mCustomLightLevels : mAutoBrightnessLevels),
(mCustomLightEnabled ? mCustomKeyboardValues : mKeyboardBacklightValues));
- } else {
- keyboardValue = 0;
- }
+
mLightSensorScreenBrightness = lcdValue;
mLightSensorButtonBrightness = buttonValue;
mLightSensorKeyboardBrightness = keyboardValue;
@@ -3327,7 +3327,7 @@ public class PowerManagerService extends IPowerManager.Stub
setPowerState(SCREEN_BRIGHT);
} else {
// turn everything on
- setPowerState(ALL_BRIGHT);
+ setPowerState(mKeyboardVisible ? ALL_BRIGHT : SCREEN_BUTTON_BRIGHT);
}
synchronized (mLocks) {