summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--libusb/io.c16
1 files changed, 15 insertions, 1 deletions
diff --git a/libusb/io.c b/libusb/io.c
index 6ed19c1..4e85bdf 100644
--- a/libusb/io.c
+++ b/libusb/io.c
@@ -1145,7 +1145,21 @@ API_EXPORTED void libusb_unlock_events(void)
*/
API_EXPORTED int libusb_event_handler_active(void)
{
- return event_handler_active;
+ int r;
+
+ if (!event_handler_active)
+ return 0;
+
+ /* FIXME: temporary hack to ensure thread didn't quit (e.g. due to signal)
+ * without libusb_unlock_events being triggered */
+ r = pthread_mutex_trylock(&events_lock);
+ if (r == 0) {
+ event_handler_active = 0;
+ pthread_mutex_unlock(&events_lock);
+ return 0;
+ }
+
+ return 1;
}
/** \ingroup poll