hotplug: Add a hotplug_poll backend function
authorHans de Goede <hdegoede@redhat.com>
Fri, 24 May 2013 14:15:51 +0000 (16:15 +0200)
committerHans de Goede <hdegoede@redhat.com>
Thu, 30 May 2013 12:20:36 +0000 (14:20 +0200)
commitcedc7f6e289c427c84a9175045b06614be56ec5a
tree50837d92d28e3aac578ba4c20a531c4fc1245b3f
parent7ced70e14968bd6869a561d2cf8e7ac5a1df8938
hotplug: Add a hotplug_poll backend function

Apps which were written before hotplug support, may listen for hotplug events
on their own and call libusb_get_device_list on device addition.

In this case libusb_get_device_list will likely return a list without the new
device in there, as the hotplug event thread will still be busy enumerating
the device, which may take a while, or may not even have seen the event yet.

To avoid this add a new hotplug_poll backend function and make
libusb_get_device_list call a this before copying ctx->usb_devs to the user.

In this function the backend should ensure any pending hotplug events are
fully processed before returning.

This patch implements hotplug_poll for linux, it should probably be also
implemented for darwin.

Signed-off-by: Hans de Goede <hdegoede@redhat.com>
libusb/core.c
libusb/libusbi.h
libusb/os/linux_netlink.c
libusb/os/linux_udev.c
libusb/os/linux_usbfs.c
libusb/os/linux_usbfs.h
libusb/os/openbsd_usb.c
libusb/os/wince_usb.c
libusb/os/windows_usb.c
libusb/version_nano.h