summaryrefslogtreecommitdiffstats
path: root/core/java/android/os/PowerManager.java
diff options
context:
space:
mode:
authorJeff Brown <jeffbrown@google.com>2012-07-19 15:01:17 -0700
committerJeff Brown <jeffbrown@google.com>2012-07-19 15:01:17 -0700
commitff1baef86c3b34fe2aec33a22bc2d06112af4c03 (patch)
tree5533a7140a6cfed04bb84d10be68d918ed135d59 /core/java/android/os/PowerManager.java
parent1825b984b43f51df977280c78ed2136f08c7f7bf (diff)
downloadframeworks_base-ff1baef86c3b34fe2aec33a22bc2d06112af4c03.zip
frameworks_base-ff1baef86c3b34fe2aec33a22bc2d06112af4c03.tar.gz
frameworks_base-ff1baef86c3b34fe2aec33a22bc2d06112af4c03.tar.bz2
Fix keyguard wake-up issue.
Bug: 6835809 Change-Id: I7a23b50286592b4c4b104b0b6429f2d05fb5e01b
Diffstat (limited to 'core/java/android/os/PowerManager.java')
-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 318c0ae..b6e606c 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;
}
}