diff options
author | Andre Eisenbach <eisenbach@google.com> | 2014-12-03 10:35:53 -0800 |
---|---|---|
committer | Simon Wilson <simonwilson@google.com> | 2014-12-03 16:09:40 -0800 |
commit | cf7f6a154aed48659260d391994dc59151be937b (patch) | |
tree | f2a2a98037d511a4be47dda24e0d51616d63eb7b | |
parent | 254b5ba2e3f4c44b82a0369579b66bafcd0d6aa2 (diff) | |
download | bluedroid-cf7f6a154aed48659260d391994dc59151be937b.tar.gz |
Prevent Java call for acquiring already held wakelock
Change-Id: Icf455b6aa7c0c1bf7abf7ea9700cfde17f6c7c2b
-rw-r--r-- | gki/ulinux/gki_ulinux.c | 21 |
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); + } } } |