Re: [PATCH spice-gtk 2/2] usb-device-manager: Add support for libusb hotplug API

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi

On Thu, Jul 4, 2013 at 5:13 PM, Hans de Goede <hdegoede@xxxxxxxxxx> wrote:

> +static gboolean spice_usb_device_manager_hotplug_idle_cb(gpointer user_data)
> +{
> +    struct hotplug_idle_cb_args *args = user_data;
> +    SpiceUsbDeviceManager *self = SPICE_USB_DEVICE_MANAGER(args->self);
> +
> +    switch (args->event) {
> +    case LIBUSB_HOTPLUG_EVENT_DEVICE_ARRIVED:
> +        spice_usb_device_manager_add_dev(self, args->device);
> +        break;
> +    case LIBUSB_HOTPLUG_EVENT_DEVICE_LEFT:
> +        spice_usb_device_manager_remove_dev(self,
> +                                    libusb_get_bus_number(args->device),
> +                                    libusb_get_device_address(args->device));
> +        break;
> +    }
> +    libusb_unref_device(args->device);
> +    g_free(args);
> +    return FALSE;
> +}
> +
> +/* Can be called from both the main-thread as well as the event_thread */
> +static int spice_usb_device_manager_hotplug_cb(libusb_context       *ctx,
> +                                               libusb_device        *device,
> +                                               libusb_hotplug_event  event,
> +                                               void                 *user_data)
> +{
> +    struct hotplug_idle_cb_args *args = g_malloc(sizeof(*args));
> +
> +    args->self = user_data;
> +    args->device = libusb_ref_device(device);
> +    args->event = event;
> +    g_idle_add(spice_usb_device_manager_hotplug_idle_cb, args);
> +    return 0;
> +}
> +#endif


Is there a good reason not to keep a reference on the idle and data,
and cancel it if self is disposed? Or add a ref of self (if that's
really short-lived and safe)?

The rest of the series looks good to me.


--
Marc-André Lureau
_______________________________________________
Spice-devel mailing list
Spice-devel@xxxxxxxxxxxxxxxxxxxxx
http://lists.freedesktop.org/mailman/listinfo/spice-devel





[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Security]     [Bugtraq]     [Linux]     [Linux OMAP]     [Linux MIPS]     [ECOS]     [Asterisk Internet PBX]     [Linux API]     [Monitors]