diff options
Diffstat (limited to 'services/java/com/android/server/PowerManagerService.java')
-rw-r--r-- | services/java/com/android/server/PowerManagerService.java | 7 |
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) { |