From f003c0c15d28fbd70f00aa8a4529cc081a21e0f0 Mon Sep 17 00:00:00 2001 From: Mike Lockwood Date: Wed, 21 Oct 2009 16:03:18 -0400 Subject: PowerManagerService: Ignore user activity while the screen is animating off. Fixes bug b/2202165 (Often I when pressing power to turn off I get the lock screen) Change-Id: I53f8350203d57fbb5f143edc44985879caadd78f Signed-off-by: Mike Lockwood --- services/java/com/android/server/PowerManagerService.java | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) (limited to 'services') diff --git a/services/java/com/android/server/PowerManagerService.java b/services/java/com/android/server/PowerManagerService.java index 9b54a70..29a5ba8 100644 --- a/services/java/com/android/server/PowerManagerService.java +++ b/services/java/com/android/server/PowerManagerService.java @@ -156,6 +156,7 @@ class PowerManagerService extends IPowerManager.Stub private int mProximityCount = 0; private int mPowerState; private boolean mOffBecauseOfUser; + private boolean mAnimatingScreenOff; private int mUserState; private boolean mKeyboardVisible = false; private boolean mUserActivityAllowed = true; @@ -1225,6 +1226,7 @@ class PowerManagerService extends IPowerManager.Stub Log.d(TAG, "preventScreenOn: turning on after a prior preventScreenOn(true)!"); } + mAnimatingScreenOff = false; int err = setScreenStateLocked(true); if (err != 0) { Log.w(TAG, "preventScreenOn: error from setScreenStateLocked(): " + err); @@ -1386,6 +1388,7 @@ class PowerManagerService extends IPowerManager.Stub reallyTurnScreenOn = false; } if (reallyTurnScreenOn) { + mAnimatingScreenOff = false; err = setScreenStateLocked(true); long identity = Binder.clearCallingIdentity(); try { @@ -1427,6 +1430,7 @@ class PowerManagerService extends IPowerManager.Stub if (!mScreenBrightness.animating) { err = screenOffFinishedAnimatingLocked(becauseOfUser); } else { + mAnimatingScreenOff = true; mOffBecauseOfUser = becauseOfUser; err = 0; mLastTouchDown = 0; @@ -1444,6 +1448,7 @@ class PowerManagerService extends IPowerManager.Stub mTotalTouchDownTime, mTouchCycles); mLastTouchDown = 0; int err = setScreenStateLocked(false); + mAnimatingScreenOff = false; if (mScreenOnStartTime != 0) { mScreenOnTime += SystemClock.elapsedRealtime() - mScreenOnStartTime; mScreenOnStartTime = 0; @@ -1816,7 +1821,9 @@ class PowerManagerService extends IPowerManager.Stub return; } - + if (mAnimatingScreenOff) { + return; + } if (false) { if (((mPokey & POKE_LOCK_IGNORE_CHEEK_EVENTS) != 0)) { Log.d(TAG, "userActivity !!!");//, new RuntimeException()); -- cgit v1.1