@@ -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