summaryrefslogtreecommitdiff
path: root/services/java/com/android/server/PowerManagerService.java
diff options
context:
space:
mode:
authorCraig Mautner <cmautner@google.com>2012-06-06 14:13:39 -0700
committerCraig Mautner <cmautner@google.com>2012-06-06 14:13:39 -0700
commit3793368f72b284950aa917273193e30739c8cdf7 (patch)
treed0ce0983b8d965f2ac2d5b2cf14590a3a189a8d6 /services/java/com/android/server/PowerManagerService.java
parentb215726a0e46400c8dbc4a585c2f4200c7a619b6 (diff)
Set screen brightness to match sensor at power on.
Use the first sensor value received after screen on to set the screen brightness. Do this setting immediately rather than animate to the target brightness. Fixes bug 6612418. Change-Id: I6c24c55e0bd35ef58a6494d3b5e449954241fd00
Diffstat (limited to 'services/java/com/android/server/PowerManagerService.java')
-rw-r--r--services/java/com/android/server/PowerManagerService.java27
1 files changed, 19 insertions, 8 deletions
diff --git a/services/java/com/android/server/PowerManagerService.java b/services/java/com/android/server/PowerManagerService.java
index 5aa0d16eac4d..dda6323c5c20 100644
--- a/services/java/com/android/server/PowerManagerService.java
+++ b/services/java/com/android/server/PowerManagerService.java
@@ -244,6 +244,7 @@ public class PowerManagerService extends IPowerManager.Stub
private Handler mHandler;
private final TimeoutTask mTimeoutTask = new TimeoutTask();
private ScreenBrightnessAnimator mScreenBrightnessAnimator;
+ private boolean mWaitingForFirstLightSensor = false;
private boolean mStillNeedSleepNotification;
private boolean mIsPowered = false;
private IActivityManager mActivityService;
@@ -1755,7 +1756,11 @@ public class PowerManagerService extends IPowerManager.Stub
mLastScreenOnTime = (on ? SystemClock.elapsedRealtime() : 0);
if (mUseSoftwareAutoBrightness) {
enableLightSensorLocked(on);
- if (!on) {
+ if (on) {
+ // If AutoBrightness is enabled, set the brightness immediately after the
+ // next sensor value is received.
+ mWaitingForFirstLightSensor = mAutoBrightessEnabled;
+ } else {
// make sure button and key backlights are off too
mButtonLight.turnOff();
mKeyboardLight.turnOff();
@@ -2636,7 +2641,7 @@ public class PowerManagerService extends IPowerManager.Stub
private void lightSensorChangedLocked(int value, boolean immediate) {
if (mDebugLightSensor) {
- Slog.d(TAG, "lightSensorChangedLocked " + value);
+ Slog.d(TAG, "lightSensorChangedLocked value=" + value + " immediate=" + immediate);
}
// Don't do anything if the screen is off.
@@ -3212,7 +3217,9 @@ public class PowerManagerService extends IPowerManager.Stub
private void enableLightSensorLocked(boolean enable) {
if (mDebugLightSensor) {
Slog.d(TAG, "enableLightSensorLocked enable=" + enable
- + " mAutoBrightessEnabled=" + mAutoBrightessEnabled);
+ + " mLightSensorEnabled=" + mLightSensorEnabled
+ + " mAutoBrightessEnabled=" + mAutoBrightessEnabled
+ + " mWaitingForFirstLightSensor=" + mWaitingForFirstLightSensor);
}
if (!mAutoBrightessEnabled) {
enable = false;
@@ -3226,8 +3233,8 @@ public class PowerManagerService extends IPowerManager.Stub
// reset our highest value when reenabling
mHighestLightSensorValue = -1;
// force recompute of backlight values
- if (mLightSensorValue >= 0) {
- int value = (int)mLightSensorValue;
+ final int value = (int)mLightSensorValue;
+ if (value >= 0) {
mLightSensorValue = -1;
handleLightSensorValue(value, true);
}
@@ -3291,8 +3298,9 @@ public class PowerManagerService extends IPowerManager.Stub
private void handleLightSensorValue(int value, boolean immediate) {
long milliseconds = SystemClock.elapsedRealtime();
- if (mLightSensorValue == -1 ||
- milliseconds < mLastScreenOnTime + mLightSensorWarmupTime) {
+ if (mLightSensorValue == -1
+ || milliseconds < mLastScreenOnTime + mLightSensorWarmupTime
+ || mWaitingForFirstLightSensor) {
// process the value immediately if screen has just turned on
mHandler.removeCallbacks(mAutoBrightnessTask);
mLightSensorPendingDecrease = false;
@@ -3327,7 +3335,10 @@ public class PowerManagerService extends IPowerManager.Stub
if (isScreenTurningOffLocked()) {
return;
}
- handleLightSensorValue((int)event.values[0], false);
+ handleLightSensorValue((int)event.values[0], mWaitingForFirstLightSensor);
+ if (mWaitingForFirstLightSensor) {
+ mWaitingForFirstLightSensor = false;
+ }
}
}