lib/cmake: check for libusb_handle_events_timeout_completed()

libusb < 1.0.9 doesn't have libusb_handle_events_timeout_completed(),
but libusb <= 1.0.8 doesn't have version.h, so we need to check
for the function.

The cmake-code was borrowed from UHD, which also checks
for libusb_error_name(), we add that as well since it might come
handy later on.

Signed-off-by: Steve Markgraf <steve@steve-m.de>
This commit is contained in:
Steve Markgraf
2014-01-24 03:57:53 +01:00
parent 929972f835
commit a2bc5b5117
2 changed files with 26 additions and 0 deletions

View File

@ -1775,7 +1775,11 @@ int rtlsdr_read_async(rtlsdr_dev_t *dev, rtlsdr_read_async_cb_t cb, void *ctx,
}
while (RTLSDR_INACTIVE != dev->async_status) {
#ifdef HAVE_LIBUSB_HANDLE_EVENTS_TIMEOUT_COMPLETED
r = libusb_handle_events_timeout_completed(dev->ctx, &tv, &dev->async_cancel);
#else
r = libusb_handle_events_timeout(dev->ctx, &tv);
#endif
if (r < 0) {
/*fprintf(stderr, "handle_events returned: %d\n", r);*/
if (r == LIBUSB_ERROR_INTERRUPTED) /* stray signal */
@ -1807,7 +1811,11 @@ int rtlsdr_read_async(rtlsdr_dev_t *dev, rtlsdr_read_async_cb_t cb, void *ctx,
/* handle any events that still need to
* be handled before exiting after we
* just cancelled all transfers */
#ifdef HAVE_LIBUSB_HANDLE_EVENTS_TIMEOUT_COMPLETED
libusb_handle_events_timeout_completed(dev->ctx, &zerotv, NULL);
#else
libusb_handle_events_timeout(dev->ctx, &zerotv);
#endif
break;
}
}