Skip to content

Commit 8c4b40e

Browse files
Craig MautnerAndroid (Google) Code Review
authored andcommitted
Merge "Set screen brightness to match sensor at power on." into jb-dev
2 parents 6cd19e0 + 3793368 commit 8c4b40e

File tree

1 file changed

+19
-8
lines changed

1 file changed

+19
-8
lines changed

services/java/com/android/server/PowerManagerService.java

Lines changed: 19 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -244,6 +244,7 @@ public class PowerManagerService extends IPowerManager.Stub
244244
private Handler mHandler;
245245
private final TimeoutTask mTimeoutTask = new TimeoutTask();
246246
private ScreenBrightnessAnimator mScreenBrightnessAnimator;
247+
private boolean mWaitingForFirstLightSensor = false;
247248
private boolean mStillNeedSleepNotification;
248249
private boolean mIsPowered = false;
249250
private IActivityManager mActivityService;
@@ -1755,7 +1756,11 @@ private int setScreenStateLocked(boolean on) {
17551756
mLastScreenOnTime = (on ? SystemClock.elapsedRealtime() : 0);
17561757
if (mUseSoftwareAutoBrightness) {
17571758
enableLightSensorLocked(on);
1758-
if (!on) {
1759+
if (on) {
1760+
// If AutoBrightness is enabled, set the brightness immediately after the
1761+
// next sensor value is received.
1762+
mWaitingForFirstLightSensor = mAutoBrightessEnabled;
1763+
} else {
17591764
// make sure button and key backlights are off too
17601765
mButtonLight.turnOff();
17611766
mKeyboardLight.turnOff();
@@ -2636,7 +2641,7 @@ private void dockStateChanged(int state) {
26362641

26372642
private void lightSensorChangedLocked(int value, boolean immediate) {
26382643
if (mDebugLightSensor) {
2639-
Slog.d(TAG, "lightSensorChangedLocked " + value);
2644+
Slog.d(TAG, "lightSensorChangedLocked value=" + value + " immediate=" + immediate);
26402645
}
26412646

26422647
// Don't do anything if the screen is off.
@@ -3212,7 +3217,9 @@ private void proximityChangedLocked(boolean active) {
32123217
private void enableLightSensorLocked(boolean enable) {
32133218
if (mDebugLightSensor) {
32143219
Slog.d(TAG, "enableLightSensorLocked enable=" + enable
3215-
+ " mAutoBrightessEnabled=" + mAutoBrightessEnabled);
3220+
+ " mLightSensorEnabled=" + mLightSensorEnabled
3221+
+ " mAutoBrightessEnabled=" + mAutoBrightessEnabled
3222+
+ " mWaitingForFirstLightSensor=" + mWaitingForFirstLightSensor);
32163223
}
32173224
if (!mAutoBrightessEnabled) {
32183225
enable = false;
@@ -3226,8 +3233,8 @@ private void enableLightSensorLocked(boolean enable) {
32263233
// reset our highest value when reenabling
32273234
mHighestLightSensorValue = -1;
32283235
// force recompute of backlight values
3229-
if (mLightSensorValue >= 0) {
3230-
int value = (int)mLightSensorValue;
3236+
final int value = (int)mLightSensorValue;
3237+
if (value >= 0) {
32313238
mLightSensorValue = -1;
32323239
handleLightSensorValue(value, true);
32333240
}
@@ -3291,8 +3298,9 @@ public void onAccuracyChanged(Sensor sensor, int accuracy) {
32913298

32923299
private void handleLightSensorValue(int value, boolean immediate) {
32933300
long milliseconds = SystemClock.elapsedRealtime();
3294-
if (mLightSensorValue == -1 ||
3295-
milliseconds < mLastScreenOnTime + mLightSensorWarmupTime) {
3301+
if (mLightSensorValue == -1
3302+
|| milliseconds < mLastScreenOnTime + mLightSensorWarmupTime
3303+
|| mWaitingForFirstLightSensor) {
32963304
// process the value immediately if screen has just turned on
32973305
mHandler.removeCallbacks(mAutoBrightnessTask);
32983306
mLightSensorPendingDecrease = false;
@@ -3327,7 +3335,10 @@ public void onSensorChanged(SensorEvent event) {
33273335
if (isScreenTurningOffLocked()) {
33283336
return;
33293337
}
3330-
handleLightSensorValue((int)event.values[0], false);
3338+
handleLightSensorValue((int)event.values[0], mWaitingForFirstLightSensor);
3339+
if (mWaitingForFirstLightSensor) {
3340+
mWaitingForFirstLightSensor = false;
3341+
}
33313342
}
33323343
}
33333344

0 commit comments

Comments
 (0)