diff --git a/src/main/java/io/github/dsheirer/source/tuner/usb/USBTunerController.java b/src/main/java/io/github/dsheirer/source/tuner/usb/USBTunerController.java index 3c39822cf..5482b63aa 100644 --- a/src/main/java/io/github/dsheirer/source/tuner/usb/USBTunerController.java +++ b/src/main/java/io/github/dsheirer/source/tuner/usb/USBTunerController.java @@ -643,9 +643,14 @@ public void processTransfer(Transfer transfer) default: //Unexpected transfer error - need to reset the bulk transfer interface transfer.buffer().rewind(); - setErrorMessage("LibUsb Transfer Error - stopping device - status [" + transfer.status() + "] - " + - LibUsb.errorName(transfer.status())); - return; + + //Only set an error if we're not shutting down + if(mAutoResubmitTransfers) + { + setErrorMessage("LibUsb Transfer Error - stopping device - status [" + transfer.status() + "] - " + + LibUsb.errorName(transfer.status())); + } + break; } } diff --git a/src/main/java/io/github/dsheirer/util/Dispatcher.java b/src/main/java/io/github/dsheirer/util/Dispatcher.java index 31e014b8b..c71188f64 100644 --- a/src/main/java/io/github/dsheirer/util/Dispatcher.java +++ b/src/main/java/io/github/dsheirer/util/Dispatcher.java @@ -122,7 +122,8 @@ public void stop() try { - mThread.join(2000); + mThread.interrupt(); + mThread.join(); mThread = null; } catch(Exception e) @@ -183,7 +184,7 @@ else if(element != null) } catch(InterruptedException e) { - mLog.error("Buffer processor thread was interrupted"); + //Normal shutdown is by interrupt } catch(Exception e) { @@ -191,6 +192,7 @@ else if(element != null) } } + //Shutting down - clear the queue mQueue.clear(); } catch(Throwable t)