return found_device;
}
-static void
+static bool
on_udev_event (ply_device_manager_t *manager)
{
struct udev_device *device;
device = udev_monitor_receive_device (manager->udev_monitor);
if (device == NULL)
- return;
+ return false;
action = udev_device_get_action (device);
ply_trace ("got %s event for device %s", action, udev_device_get_sysname (device));
if (action == NULL)
- return;
+ return false;
if (strcmp (action, "add") == 0) {
const char *subsystem;
}
udev_device_unref (device);
+ return true;
+}
+
+static void
+on_udev_event_loop (ply_device_manager_t *manager)
+{
+ /* Call on_udev_event until all events are consumed */
+ while (on_udev_event (manager)) {}
}
static void
fd,
PLY_EVENT_LOOP_FD_STATUS_HAS_DATA,
(ply_event_handler_t)
- on_udev_event,
+ on_udev_event_loop,
NULL,
manager);
}