diff options
author | Richard Hughes <richard@hughsie.com> | 2011-08-11 11:24:19 +0200 |
---|---|---|
committer | Richard Hughes <richard@hughsie.com> | 2011-08-11 11:24:19 +0200 |
commit | 63fe7cd104c8bb71138db2c54c5502f8f28fa808 (patch) | |
tree | 062311a544b8c68a8b6665afefd04280b7c26238 /gusb/gusb-device-list.c | |
parent | fdbe8ee3e0731d4e56b1723a9ed86af51d3fed36 (diff) | |
download | gusb-63fe7cd104c8bb71138db2c54c5502f8f28fa808.tar.gz |
Do not duplicate all devices if the user calls g_usb_device_list_coldplug() twice
Diffstat (limited to 'gusb/gusb-device-list.c')
-rw-r--r-- | gusb/gusb-device-list.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/gusb/gusb-device-list.c b/gusb/gusb-device-list.c index 9d90894..1ecf08e 100644 --- a/gusb/gusb-device-list.c +++ b/gusb/gusb-device-list.c @@ -57,6 +57,7 @@ struct _GUsbDeviceListPrivate { GUdevClient *udev; GPtrArray *devices; libusb_device **coldplug_list; + gboolean done_coldplug; }; static void g_usb_device_list_uevent_cb (GUdevClient *client, @@ -325,6 +326,8 @@ g_usb_device_list_coldplug (GUsbDeviceList *list) GList *devices, *elem; libusb_context *ctx = _g_usb_context_get_context (priv->context); + if (priv->done_coldplug) + return; libusb_get_device_list (ctx, &priv->coldplug_list); devices = g_udev_client_query_by_subsystem (priv->udev, "usb"); for (elem = g_list_first (devices); elem; elem = g_list_next (elem)) { @@ -334,6 +337,7 @@ g_usb_device_list_coldplug (GUsbDeviceList *list) g_list_free (devices); libusb_free_device_list (priv->coldplug_list, 1); priv->coldplug_list = NULL; + priv->done_coldplug = TRUE; } GUsbDevice * |