summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndre Eisenbach <eisenbach@google.com>2014-12-03 10:35:53 -0800
committerSimon Wilson <simonwilson@google.com>2014-12-03 16:09:40 -0800
commitcf7f6a154aed48659260d391994dc59151be937b (patch)
treef2a2a98037d511a4be47dda24e0d51616d63eb7b
parent254b5ba2e3f4c44b82a0369579b66bafcd0d6aa2 (diff)
downloadbluedroid-cf7f6a154aed48659260d391994dc59151be937b.tar.gz
Prevent Java call for acquiring already held wakelock
Change-Id: Icf455b6aa7c0c1bf7abf7ea9700cfde17f6c7c2b
-rw-r--r--gki/ulinux/gki_ulinux.c21
1 files changed, 14 insertions, 7 deletions
diff --git a/gki/ulinux/gki_ulinux.c b/gki/ulinux/gki_ulinux.c
index 73a7b51..f9151a3 100644
--- a/gki/ulinux/gki_ulinux.c
+++ b/gki/ulinux/gki_ulinux.c
@@ -211,13 +211,16 @@ void alarm_service_reschedule()
if (ticks_in_millis <= TIMER_INTERVAL_FOR_WAKELOCK_IN_MS)
{
// The next deadline is close, just take a wakelock and set a regular (non-wake) timer.
- int rc = bt_os_callouts->acquire_wake_lock(WAKE_LOCK_ID);
- if (rc != BT_STATUS_SUCCESS)
+ if (!alarm_service.wakelock)
{
- ALOGE("%s unable to acquire wake lock: %d", __func__, rc);
- return;
+ int rc = bt_os_callouts->acquire_wake_lock(WAKE_LOCK_ID);
+ if (rc != BT_STATUS_SUCCESS)
+ {
+ ALOGE("%s unable to acquire wake lock: %d", __func__, rc);
+ return;
+ }
+ alarm_service.wakelock = true;
}
- alarm_service.wakelock = true;
ALOGV("%s acquired wake lock, setting short alarm (%lldms).", __func__, ticks_in_millis);
if (!set_nonwake_alarm(ticks_in_millis))
@@ -234,8 +237,12 @@ void alarm_service_reschedule()
} else {
ALOGV("%s set long alarm (%lldms), releasing wake lock.", __func__, ticks_in_millis);
}
- alarm_service.wakelock = false;
- bt_os_callouts->release_wake_lock(WAKE_LOCK_ID);
+
+ if (alarm_service.wakelock)
+ {
+ alarm_service.wakelock = false;
+ bt_os_callouts->release_wake_lock(WAKE_LOCK_ID);
+ }
}
}