mirror of https://github.com/nirenjan/libx52.git
Handle libusb events when checking if device is connected
libusb requires the application to call one of the `libusb_handle_events` functions in order for hotplug events to actually get dispatched. We don't need to wait for any timeout, so we use a default timeout of 0, which should process any pending events, and then return immediately. A test of repeatedly disconnecting and reconnecting a virtual device using USBIP was done, and no crashes of the daemon were observed. Github-Issue: https://github.com/nirenjan/libx52/issues/43update-lkm
parent
b822d3aed8
commit
1a02ad22d9
|
@ -71,11 +71,15 @@ static int _x52_hotplug_callback(libusb_context *ctx,
|
|||
bool libx52_is_connected(libx52_device *dev)
|
||||
{
|
||||
int rc;
|
||||
struct timeval tv = {0};
|
||||
int completed = 0;
|
||||
|
||||
if (!dev) {
|
||||
return false;
|
||||
}
|
||||
|
||||
/* Handle events, and then check if the hotplug callbacks have fired */
|
||||
libusb_handle_events_timeout_completed(dev->ctx, &tv, &completed);
|
||||
|
||||
if (dev->hdl) {
|
||||
if (dev->handle_registered) {
|
||||
|
|
Loading…
Reference in New Issue