Skip to content

Commit 141fc98

Browse files
mikeandroidAndroid (Google) Code Review
authored andcommitted
Merge "Revert "PowerManagerService: Remove assumption that light sensor will always send a value as soon as it is enabled."" into ics-mr0
2 parents ee403c6 + 55174b6 commit 141fc98

File tree

1 file changed

+35
-43
lines changed

1 file changed

+35
-43
lines changed

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

Lines changed: 35 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -1698,6 +1698,11 @@ private int setScreenStateLocked(boolean on) {
16981698
// make sure button and key backlights are off too
16991699
mButtonLight.turnOff();
17001700
mKeyboardLight.turnOff();
1701+
// clear current value so we will update based on the new conditions
1702+
// when the sensor is reenabled.
1703+
mLightSensorValue = -1;
1704+
// reset our highest light sensor value when the screen turns off
1705+
mHighestLightSensorValue = -1;
17011706
}
17021707
}
17031708
}
@@ -2467,7 +2472,6 @@ private void dockStateChanged(int state) {
24672472
synchronized (mLocks) {
24682473
mIsDocked = (state != Intent.EXTRA_DOCK_STATE_UNDOCKED);
24692474
if (mIsDocked) {
2470-
// allow brightness to decrease when docked
24712475
mHighestLightSensorValue = -1;
24722476
}
24732477
if ((mPowerState & SCREEN_ON_BIT) != 0) {
@@ -3043,21 +3047,11 @@ private void enableLightSensorLocked(boolean enable) {
30433047
long identity = Binder.clearCallingIdentity();
30443048
try {
30453049
if (enable) {
3046-
// reset our highest value when reenabling
3047-
mHighestLightSensorValue = -1;
3048-
// force recompute of backlight values
3049-
if (mLightSensorValue >= 0) {
3050-
int value = (int)mLightSensorValue;
3051-
mLightSensorValue = -1;
3052-
handleLightSensorValue(value);
3053-
}
30543050
mSensorManager.registerListener(mLightListener, mLightSensor,
30553051
SensorManager.SENSOR_DELAY_NORMAL);
30563052
} else {
30573053
mSensorManager.unregisterListener(mLightListener);
30583054
mHandler.removeCallbacks(mAutoBrightnessTask);
3059-
mLightSensorPendingDecrease = false;
3060-
mLightSensorPendingIncrease = false;
30613055
}
30623056
} finally {
30633057
Binder.restoreCallingIdentity(identity);
@@ -3109,45 +3103,43 @@ public void onAccuracyChanged(Sensor sensor, int accuracy) {
31093103
}
31103104
};
31113105

3112-
private void handleLightSensorValue(int value) {
3113-
long milliseconds = SystemClock.elapsedRealtime();
3114-
if (mLightSensorValue == -1 ||
3115-
milliseconds < mLastScreenOnTime + mLightSensorWarmupTime) {
3116-
// process the value immediately if screen has just turned on
3117-
mHandler.removeCallbacks(mAutoBrightnessTask);
3118-
mLightSensorPendingDecrease = false;
3119-
mLightSensorPendingIncrease = false;
3120-
lightSensorChangedLocked(value);
3121-
} else {
3122-
if ((value > mLightSensorValue && mLightSensorPendingDecrease) ||
3123-
(value < mLightSensorValue && mLightSensorPendingIncrease) ||
3124-
(value == mLightSensorValue) ||
3125-
(!mLightSensorPendingDecrease && !mLightSensorPendingIncrease)) {
3126-
// delay processing to debounce the sensor
3127-
mHandler.removeCallbacks(mAutoBrightnessTask);
3128-
mLightSensorPendingDecrease = (value < mLightSensorValue);
3129-
mLightSensorPendingIncrease = (value > mLightSensorValue);
3130-
if (mLightSensorPendingDecrease || mLightSensorPendingIncrease) {
3131-
mLightSensorPendingValue = value;
3132-
mHandler.postDelayed(mAutoBrightnessTask, LIGHT_SENSOR_DELAY);
3133-
}
3134-
} else {
3135-
mLightSensorPendingValue = value;
3136-
}
3137-
}
3138-
}
3139-
31403106
SensorEventListener mLightListener = new SensorEventListener() {
31413107
public void onSensorChanged(SensorEvent event) {
3142-
if (mDebugLightSensor) {
3143-
Slog.d(TAG, "onSensorChanged: light value: " + event.values[0]);
3144-
}
31453108
synchronized (mLocks) {
31463109
// ignore light sensor while screen is turning off
31473110
if (isScreenTurningOffLocked()) {
31483111
return;
31493112
}
3150-
handleLightSensorValue((int)event.values[0]);
3113+
3114+
int value = (int)event.values[0];
3115+
long milliseconds = SystemClock.elapsedRealtime();
3116+
if (mDebugLightSensor) {
3117+
Slog.d(TAG, "onSensorChanged: light value: " + value);
3118+
}
3119+
if (mLightSensorValue == -1 ||
3120+
milliseconds < mLastScreenOnTime + mLightSensorWarmupTime) {
3121+
// process the value immediately if screen has just turned on
3122+
mHandler.removeCallbacks(mAutoBrightnessTask);
3123+
mLightSensorPendingDecrease = false;
3124+
mLightSensorPendingIncrease = false;
3125+
lightSensorChangedLocked(value);
3126+
} else {
3127+
if ((value > mLightSensorValue && mLightSensorPendingDecrease) ||
3128+
(value < mLightSensorValue && mLightSensorPendingIncrease) ||
3129+
(value == mLightSensorValue) ||
3130+
(!mLightSensorPendingDecrease && !mLightSensorPendingIncrease)) {
3131+
// delay processing to debounce the sensor
3132+
mHandler.removeCallbacks(mAutoBrightnessTask);
3133+
mLightSensorPendingDecrease = (value < mLightSensorValue);
3134+
mLightSensorPendingIncrease = (value > mLightSensorValue);
3135+
if (mLightSensorPendingDecrease || mLightSensorPendingIncrease) {
3136+
mLightSensorPendingValue = value;
3137+
mHandler.postDelayed(mAutoBrightnessTask, LIGHT_SENSOR_DELAY);
3138+
}
3139+
} else {
3140+
mLightSensorPendingValue = value;
3141+
}
3142+
}
31513143
}
31523144
}
31533145

0 commit comments

Comments
 (0)