summaryrefslogtreecommitdiffstats
path: root/host/lib/transport
diff options
context:
space:
mode:
Diffstat (limited to 'host/lib/transport')
-rw-r--r--host/lib/transport/libusb1_zero_copy.cpp13
1 files changed, 7 insertions, 6 deletions
diff --git a/host/lib/transport/libusb1_zero_copy.cpp b/host/lib/transport/libusb1_zero_copy.cpp
index 1b6712871..6dee69711 100644
--- a/host/lib/transport/libusb1_zero_copy.cpp
+++ b/host/lib/transport/libusb1_zero_copy.cpp
@@ -33,6 +33,11 @@ using namespace uhd::transport;
static const size_t DEFAULT_NUM_XFERS = 16; //num xfers
static const size_t DEFAULT_XFER_SIZE = 32*512; //bytes
+//! helper function: handles all async callbacks
+static void libusb_async_cb(libusb_transfer *lut){
+ (*static_cast<boost::function<void()> *>(lut->user_data))();
+}
+
/***********************************************************************
* Reusable managed receiver buffer:
* - Associated with a particular libusb transfer struct.
@@ -79,7 +84,8 @@ public:
void commit(size_t len){
if (_expired) return;
_lut->length = len;
- UHD_ASSERT_THROW(libusb_submit_transfer(_lut) == 0);
+ if(len == 0) libusb_async_cb(_lut);
+ else UHD_ASSERT_THROW(libusb_submit_transfer(_lut) == 0);
_expired = true;
}
@@ -100,11 +106,6 @@ private:
bool _expired;
};
-//! helper function: handles all async callbacks
-static void libusb_async_cb(libusb_transfer *lut){
- (*static_cast<boost::function<void()> *>(lut->user_data))();
-}
-
/***********************************************************************
* USB zero_copy device class
**********************************************************************/