[Spice-devel] [spice-gtk 04/13] usb-redir: do not add device if one with the same bus:addr exists

Christophe Fergeau cfergeau at redhat.com
Mon Mar 11 17:16:24 UTC 2019


On Sun, Mar 10, 2019 at 04:46:03PM +0200, Yuri Benditovich wrote:
> In initial device enumeration hotplug notification can be

"In initial device enumeration, hotplug notification..."

> called twice with the same libusb device. For details, see
> http://libusb.sourceforge.net/api-1.0/group__libusb__hotplug.html#ga00e0c69ddf1fb1b6774dc918192e8dc7
> Filter out devices that already present in the list.

"This commit filters out the devices that are already known to
SpiceUsbDeviceManager."

> Remove indentical call in spice_usb_device_manager_add_udev,
> which add devices under Windows.

"It also removes the identical call ..., which adds devices..."

Acked-by: Christophe Fergeau <cfergeau at redhat.com>


> 
> Signed-off-by: Yuri Benditovich <yuri.benditovich at daynix.com>
> ---
>  src/usb-device-manager.c | 22 +++++++++++-----------
>  1 file changed, 11 insertions(+), 11 deletions(-)
> 
> diff --git a/src/usb-device-manager.c b/src/usb-device-manager.c
> index debba4d..5cf7ebb 100644
> --- a/src/usb-device-manager.c
> +++ b/src/usb-device-manager.c
> @@ -962,6 +962,17 @@ static void spice_usb_device_manager_add_dev(SpiceUsbDeviceManager  *self,
>      if (desc.bDeviceClass == LIBUSB_CLASS_HUB)
>          return;
>  
> +    if (spice_usb_device_manager_find_device(self,
> +                                    libusb_get_bus_number(libdev),
> +                                    libusb_get_device_address(libdev))) {
> +        SPICE_DEBUG("device not added %d:%d %04x:%04x",
> +                    libusb_get_bus_number(libdev),
> +                    libusb_get_device_address(libdev),
> +                    desc.idVendor,
> +                    desc.idProduct);
> +        return;
> +    }
> +
>      device = (SpiceUsbDevice*)spice_usb_device_new(libdev);
>      if (!device)
>          return;
> @@ -1025,7 +1036,6 @@ static void spice_usb_device_manager_add_udev(SpiceUsbDeviceManager  *self,
>  {
>      SpiceUsbDeviceManagerPrivate *priv = self->priv;
>      libusb_device *libdev = NULL, **dev_list = NULL;
> -    SpiceUsbDevice *device;
>      const gchar *devtype;
>      int i, bus, address;
>  
> @@ -1039,16 +1049,6 @@ static void spice_usb_device_manager_add_udev(SpiceUsbDeviceManager  *self,
>          return;
>      }
>  
> -    device = spice_usb_device_manager_find_device(self, bus, address);
> -    if (device) {
> -        SPICE_DEBUG("USB device 0x%04x:0x%04x at %d.%d already exists, ignored",
> -                    spice_usb_device_get_vid(device),
> -                    spice_usb_device_get_pid(device),
> -                    spice_usb_device_get_busnum(device),
> -                    spice_usb_device_get_devaddr(device));
> -        return;
> -    }
> -
>      if (priv->coldplug_list)
>          dev_list = priv->coldplug_list;
>      else
> -- 
> 2.17.1
> 
> _______________________________________________
> Spice-devel mailing list
> Spice-devel at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/spice-devel
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: not available
URL: <https://lists.freedesktop.org/archives/spice-devel/attachments/20190311/4e8ea8e5/attachment.sig>


More information about the Spice-devel mailing list