From 6c97fcabbc4592a115afa5f3357b3172c4791855 Mon Sep 17 00:00:00 2001 From: Mike Lockwood Date: Tue, 20 Oct 2009 08:10:00 -0400 Subject: [PATCH] Power Manager light sensor fixes: Fix problem with ignored sensor events right after screen turns on. Do not flash button backlights when device is booting. Process the first light sensor change after waking the screen immediately rather than debouncing. Cancel mAutoBrightnessTask when light sensor is disabled. Change-Id: Iffc5e090b239432b7643812fa8ecb5f69da1679d Signed-off-by: Mike Lockwood --- .../android/server/PowerManagerService.java | 25 +++++++++++++++---- 1 file changed, 20 insertions(+), 5 deletions(-) diff --git a/services/java/com/android/server/PowerManagerService.java b/services/java/com/android/server/PowerManagerService.java index a63d3fc81691c..3e134535512d5 100644 --- a/services/java/com/android/server/PowerManagerService.java +++ b/services/java/com/android/server/PowerManagerService.java @@ -477,8 +477,13 @@ class PowerManagerService extends IPowerManager.Stub // And explicitly do the initial update of our cached settings updateGservicesValues(); - // turn everything on - setPowerState(ALL_BRIGHT); + if (mAutoBrightessEnabled) { + // turn the screen on + setPowerState(SCREEN_BRIGHT); + } else { + // turn everything on + setPowerState(ALL_BRIGHT); + } synchronized (mHandlerThread) { mInitComplete = true; @@ -1285,6 +1290,9 @@ class PowerManagerService extends IPowerManager.Stub // make sure button and key backlights are off too mHardware.setLightBrightness_UNCHECKED(HardwareService.LIGHT_ID_BUTTONS, 0); mHardware.setLightBrightness_UNCHECKED(HardwareService.LIGHT_ID_KEYBOARD, 0); + // clear current value so we will update based on the new conditions + // when the sensor is reenabled. + mLightSensorValue = -1; } } return err; @@ -1323,7 +1331,7 @@ class PowerManagerService extends IPowerManager.Stub return; } - if (!mDoneBooting) { + if (!mDoneBooting && !mAutoBrightessEnabled) { newState |= ALL_BRIGHT; } @@ -2275,6 +2283,7 @@ class PowerManagerService extends IPowerManager.Stub SensorManager.SENSOR_DELAY_NORMAL); } else { mSensorManager.unregisterListener(mLightListener); + mHandler.removeCallbacks(mAutoBrightnessTask); } } } @@ -2319,8 +2328,14 @@ class PowerManagerService extends IPowerManager.Stub } mHandler.removeCallbacks(mAutoBrightnessTask); if (mLightSensorValue != value) { - mLightSensorPendingValue = value; - mHandler.postDelayed(mAutoBrightnessTask, LIGHT_SENSOR_DELAY); + if (mLightSensorValue == -1) { + // process the value immediately + lightSensorChangedLocked(value); + } else { + // delay processing to debounce the sensor + mLightSensorPendingValue = value; + mHandler.postDelayed(mAutoBrightnessTask, LIGHT_SENSOR_DELAY); + } } else { mLightSensorPendingValue = -1; }