summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Jeff Brown <jeffbrown@google.com> 2012-07-19 15:05:50 -0700
committer Android (Google) Code Review <android-gerrit@google.com> 2012-07-19 15:05:50 -0700
commit84f85dc70a2340a3c4723fc6cfd44411a04eee77 (patch)
treed24c6cc08cc68f2f092c8a81588f5c5a722fbbd2
parent827c1823902f856fa5c7fcd7e9c85163d11895c2 (diff)
parentff1baef86c3b34fe2aec33a22bc2d06112af4c03 (diff)
Merge "Fix keyguard wake-up issue."
-rw-r--r--core/java/android/os/PowerManager.java16
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;
}
}