Browse Source

Use a timeout with usb handle events set to a nominal 200ms and wait for the polling thread to shut down before deinitialising libusb.

nfactor-troky
Con Kolivas 11 years ago
parent
commit
56edabc64d
  1. 9
      cgminer.c

9
cgminer.c

@ -3218,8 +3218,6 @@ static void __kill_work(void) @@ -3218,8 +3218,6 @@ static void __kill_work(void)
/* Release USB resources in case it's a restart
* and not a QUIT */
if (!opt_scrypt) {
usb_polling = false;
applog(LOG_DEBUG, "Releasing all USB devices");
usb_cleanup();
@ -7221,6 +7219,8 @@ static void clean_up(void) @@ -7221,6 +7219,8 @@ static void clean_up(void)
clear_adl(nDevs);
#endif
#ifdef USE_USBUTILS
usb_polling = false;
pthread_join(usb_poll_thread, NULL);
libusb_exit(NULL);
#endif
@ -7792,11 +7792,12 @@ static void probe_pools(void) @@ -7792,11 +7792,12 @@ static void probe_pools(void)
#ifdef USE_USBUTILS
static void *libusb_poll_thread(void __maybe_unused *arg)
{
struct timeval tv_end = {0, 200000};
RenameThread("usbpoll");
pthread_detach(pthread_self());
while (usb_polling)
libusb_handle_events(NULL);
libusb_handle_events_timeout_completed(NULL, &tv_end, NULL);
return NULL;
}

Loading…
Cancel
Save