Check for TX event before waiting for an event
Check for an event before waiting for an event. If event already signalled
and we wait for an event without checking, it can lead to an infinite wait
for signal. This results in functional failure.
CRs-Fixed: 1091781
Change-Id: I7bb1ef12f4622f9d94621a9c486a771226aba9f4
diff --git a/fm_hci/fm_hci.c b/fm_hci/fm_hci.c
index a3666af..c48edd5 100644
--- a/fm_hci/fm_hci.c
+++ b/fm_hci/fm_hci.c
@@ -338,7 +338,8 @@
while (lib_running) {
pthread_mutex_lock(&hci->event_lock);
- pthread_cond_wait(&hci->event_cond, &hci->event_lock);
+ if (!(ready_events & HC_EVENT_TX))
+ pthread_cond_wait(&hci->event_cond, &hci->event_lock);
ALOGE("%s: ready_events= %d", __func__, ready_events);
events = ready_events;
if (ready_events & HC_EVENT_TX)