namespace bmusb {
card_connected_callback_t BMUSBCapture::card_connected_callback = nullptr;
+bool BMUSBCapture::hotplug_existing_devices = false;
namespace {
// coming back with errors, so only care about devices joining.
if (card_connected_callback != nullptr) {
if (libusb_hotplug_register_callback(
- nullptr, LIBUSB_HOTPLUG_EVENT_DEVICE_ARRIVED, LIBUSB_HOTPLUG_NO_FLAGS,
+ nullptr, LIBUSB_HOTPLUG_EVENT_DEVICE_ARRIVED, hotplug_existing_devices ? LIBUSB_HOTPLUG_ENUMERATE : LIBUSB_HOTPLUG_NO_FLAGS,
USB_VENDOR_BLACKMAGIC, LIBUSB_HOTPLUG_MATCH_ANY, LIBUSB_HOTPLUG_MATCH_ANY,
&BMUSBCapture::cb_hotplug, nullptr, nullptr) < 0) {
fprintf(stderr, "libusb_hotplug_register_callback() failed\n");
// The callback function transfers ownership. If you don't want to hold
// on to the device given to you in the callback, you need to call
// libusb_unref_device().
- static void set_card_connected_callback(card_connected_callback_t callback)
+ static void set_card_connected_callback(card_connected_callback_t callback,
+ bool hotplug_existing_devices_arg = false)
{
card_connected_callback = callback;
+ hotplug_existing_devices = hotplug_existing_devices_arg;
}
// Similar to set_card_connected_callback(), with the same caveats.
std::unique_ptr<FrameAllocator> owned_audio_frame_allocator;
frame_callback_t frame_callback = nullptr;
static card_connected_callback_t card_connected_callback;
+ static bool hotplug_existing_devices;
card_disconnected_callback_t card_disconnected_callback = nullptr;
std::thread dequeue_thread;