Make sure wakelock is held before releaseing it
Bug: 27748109
Change-Id: I38c8ec640f5def7c53348d2dd96a0a2492ff00cc
diff --git a/src/com/android/bluetooth/btservice/AdapterService.java b/src/com/android/bluetooth/btservice/AdapterService.java
index f1c8f01..a4d76b7 100644
--- a/src/com/android/bluetooth/btservice/AdapterService.java
+++ b/src/com/android/bluetooth/btservice/AdapterService.java
@@ -547,7 +547,8 @@
// {@link #releaseWakeLock(String lockName)}, so a synchronization is needed here.
synchronized (this) {
if (mWakeLock != null) {
- mWakeLock.release();
+ if (mWakeLock.isHeld())
+ mWakeLock.release();
mWakeLock = null;
}
}
@@ -2020,14 +2021,15 @@
// extended to allow acquiring an arbitrary number of wake locks. The current interface
// takes |lockName| as a parameter in anticipation of that implementation.
private boolean acquireWakeLock(String lockName) {
- if (mWakeLock == null) {
- mWakeLockName = lockName;
- mWakeLock = mPowerManager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, lockName);
+ synchronized (this) {
+ if (mWakeLock == null) {
+ mWakeLockName = lockName;
+ mWakeLock = mPowerManager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, lockName);
+ }
+
+ if (!mWakeLock.isHeld())
+ mWakeLock.acquire();
}
-
- if (!mWakeLock.isHeld())
- mWakeLock.acquire();
-
return true;
}
@@ -2042,7 +2044,8 @@
return false;
}
- mWakeLock.release();
+ if (mWakeLock.isHeld())
+ mWakeLock.release();
}
return true;
}