summaryrefslogtreecommitdiff
path: root/services/java/com/android/server/PowerManagerService.java
diff options
context:
space:
mode:
authorCraig Mautner <cmautner@google.com>2012-06-01 16:02:47 -0700
committerCraig Mautner <cmautner@google.com>2012-06-01 16:02:47 -0700
commitd29568cf5f1d2ce22c0c3c5f32812b64bf958f63 (patch)
tree7251e45331d67c9e51c61fac723787b899cfcba4 /services/java/com/android/server/PowerManagerService.java
parentbde32efa209acb47324add8981577af1fa410574 (diff)
Fix power manager issues.
1. If a new brightness animation is started while an unrelated one is ongoing complete the old animation immediately. Unrelated means that the old and new animations apply to different devices (button, keyboard, or screen). 2. Do not interpret turning off the keyboard or button lights as turning off the screen in isScreenTurningOffLocked(). Fixes bug 6519847. Change-Id: I53a20951036bcdb793daeff84a9ebeed44be01fc
Diffstat (limited to 'services/java/com/android/server/PowerManagerService.java')
-rw-r--r--services/java/com/android/server/PowerManagerService.java7
1 files changed, 6 insertions, 1 deletions
diff --git a/services/java/com/android/server/PowerManagerService.java b/services/java/com/android/server/PowerManagerService.java
index 38e08ae059aa..51b59743972f 100644
--- a/services/java/com/android/server/PowerManagerService.java
+++ b/services/java/com/android/server/PowerManagerService.java
@@ -2283,6 +2283,10 @@ public class PowerManagerService extends IPowerManager.Stub
public void animateTo(int target, int sensorTarget, int mask, int animationDuration) {
synchronized(this) {
+ if (isAnimating() && (mask ^ currentMask) != 0) {
+ // current animation is unrelated to new animation, jump to final values
+ cancelAnimation();
+ }
startValue = currentValue;
endValue = target;
startSensorValue = mHighestLightSensorValue;
@@ -2407,7 +2411,8 @@ public class PowerManagerService extends IPowerManager.Stub
private boolean isScreenTurningOffLocked() {
return (mScreenBrightnessAnimator.isAnimating()
- && mScreenBrightnessAnimator.endValue == PowerManager.BRIGHTNESS_OFF);
+ && mScreenBrightnessAnimator.endValue == PowerManager.BRIGHTNESS_OFF
+ && (mScreenBrightnessAnimator.currentMask & SCREEN_BRIGHT_BIT) != 0);
}
private boolean shouldLog(long time) {