diff options
author | Josh Blum <josh@joshknows.com> | 2011-03-10 14:37:34 -0800 |
---|---|---|
committer | Josh Blum <josh@joshknows.com> | 2011-03-10 14:37:34 -0800 |
commit | 09149bbf7d28f67e68d65f7ba153ccd31ae48e5b (patch) | |
tree | 93e2be732f3d5ca2e0eb2b3d528b08ccea97c6a3 /host/lib/transport | |
parent | 0336db128e38bd99d69e192189a63ba6d3d3e36b (diff) | |
download | uhd-09149bbf7d28f67e68d65f7ba153ccd31ae48e5b.tar.gz uhd-09149bbf7d28f67e68d65f7ba153ccd31ae48e5b.tar.bz2 uhd-09149bbf7d28f67e68d65f7ba153ccd31ae48e5b.zip |
usrp1: safe destruction for usrp1 device
Diffstat (limited to 'host/lib/transport')
-rw-r--r-- | host/lib/transport/libusb1_zero_copy.cpp | 13 |
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 **********************************************************************/ |