diff options
author | 2012-07-19 15:05:50 -0700 | |
---|---|---|
committer | 2012-07-19 15:05:50 -0700 | |
commit | 84f85dc70a2340a3c4723fc6cfd44411a04eee77 (patch) | |
tree | d24c6cc08cc68f2f092c8a81588f5c5a722fbbd2 | |
parent | 827c1823902f856fa5c7fcd7e9c85163d11895c2 (diff) | |
parent | ff1baef86c3b34fe2aec33a22bc2d06112af4c03 (diff) |
Merge "Fix keyguard wake-up issue."
-rw-r--r-- | core/java/android/os/PowerManager.java | 16 |
1 files changed, 10 insertions, 6 deletions
diff --git a/core/java/android/os/PowerManager.java b/core/java/android/os/PowerManager.java index 318c0ae00bbb..b6e606c50bae 100644 --- a/core/java/android/os/PowerManager.java +++ b/core/java/android/os/PowerManager.java @@ -542,14 +542,18 @@ public final class PowerManager { private void acquireLocked() { if (!mRefCounted || mCount++ == 0) { + // Do this even if the wake lock is already thought to be held (mHeld == true) + // because non-reference counted wake locks are not always properly released. + // For example, the keyguard's wake lock might be forcibly released by the + // power manager without the keyguard knowing. A subsequent call to acquire + // should immediately acquire the wake lock once again despite never having + // been explicitly released by the keyguard. mHandler.removeCallbacks(mReleaser); - if (!mHeld) { - try { - mService.acquireWakeLock(mFlags, mToken, mTag, mWorkSource); - } catch (RemoteException e) { - } - mHeld = true; + try { + mService.acquireWakeLock(mFlags, mToken, mTag, mWorkSource); + } catch (RemoteException e) { } + mHeld = true; } } |