OSDN Git Service

PowerManagerService: Fix bug resulting in backlights turning on while screen is off.
authorMike Lockwood <lockwood@android.com>
Tue, 27 Oct 2009 13:32:30 +0000 (09:32 -0400)
committerMike Lockwood <lockwood@android.com>
Tue, 27 Oct 2009 13:47:50 +0000 (09:47 -0400)
Fixes bugs b/2216879 and b/2197060

Change-Id: I5de3cbdbc0601dd7950dba74cacfff06d41ad18e
Signed-off-by: Mike Lockwood <lockwood@android.com>
services/java/com/android/server/PowerManagerService.java

index f3a91e7..5c4aa79 100644 (file)
@@ -2037,16 +2037,21 @@ class PowerManagerService extends IPowerManager.Stub
     }
 
     private void setScreenBrightnessMode(int mode) {
-        mAutoBrightessEnabled = (mode == SCREEN_BRIGHTNESS_MODE_AUTOMATIC);
-        // reset computed brightness
-        mLightSensorBrightness = -1;
-
-        if (mHasHardwareAutoBrightness) {
-            // When setting auto-brightness, must reset the brightness afterwards
-            mHardware.setAutoBrightness_UNCHECKED(mAutoBrightessEnabled);
-            setBacklightBrightness((int)mScreenBrightness.curValue);
-        } else {
-            enableLightSensor(screenIsOn() && mAutoBrightessEnabled);
+        boolean enabled = (mode == SCREEN_BRIGHTNESS_MODE_AUTOMATIC);
+        if (mAutoBrightessEnabled != enabled) {
+            mAutoBrightessEnabled = enabled;
+            // reset computed brightness
+            mLightSensorBrightness = -1;
+
+            if (mHasHardwareAutoBrightness) {
+                // When setting auto-brightness, must reset the brightness afterwards
+                mHardware.setAutoBrightness_UNCHECKED(enabled);
+                if (screenIsOn()) {
+                    setBacklightBrightness((int)mScreenBrightness.curValue);
+                }
+            } else {
+                enableLightSensor(screenIsOn() && enabled);
+            }
         }
     }