[Spice-devel] [PATCH spice-gtk v2] win-usb-dev: fix device arrival event logic

Uri Lublin uril at redhat.com
Wed Jul 12 08:02:23 UTC 2017


Hi Yuri,

I'd mention in the Subject/Log that a device is now identified
by its bus.addr instead of vid:pid.

On 07/05/2017 08:21 AM, Yuri Benditovich wrote:
> https://bugzilla.redhat.com/show_bug.cgi?id=1425961
> If attached new device when one device with the same vid
> and pid already present, the notification is ignored and
> attached device is not redirected (if auto share set) and
> not displayed in USB devices widget.
> 
> This commit reverts older commit f9631cd6f8, which was
> intended to solve problem when bus:addr is sometimes changed when
> using WinUSB. The same commit creates the limitation for automatic
> redirection of second device with the same pid:vid.
> Now the preferred backend for Spice-GTK on Windows is UsbDk.
> In case users of newer WinUSB will still need backward compatible
> behavior, consider backend-aware comparison procedure.
> 
> Signed-off-by: Yuri Benditovich <yuri.benditovich at daynix.com>

Acked-by: Uri Lublin <uril at redhat.com>

Thanks,
     Uri.

> ---
>   src/win-usb-dev.c | 12 ++++++------
>   1 file changed, 6 insertions(+), 6 deletions(-)
> 
> diff --git a/src/win-usb-dev.c b/src/win-usb-dev.c
> index ec3dd91..e2d77b3 100644
> --- a/src/win-usb-dev.c
> +++ b/src/win-usb-dev.c
> @@ -380,20 +380,20 @@ static gboolean get_usb_dev_info(libusb_device *dev, GUdevDeviceInfo *udevinfo)
>       return TRUE;
>   }
>   
> -/* Only vid:pid are compared */
> +/* Only bus:addr are compared */
>   static gint gudev_devices_differ(gconstpointer a, gconstpointer b)
>   {
>       GUdevDeviceInfo *ai, *bi;
> -    gboolean same_vid;
> -    gboolean same_pid;
> +    gboolean same_bus;
> +    gboolean same_addr;
>   
>       ai = G_UDEV_DEVICE(a)->priv->udevinfo;
>       bi = G_UDEV_DEVICE(b)->priv->udevinfo;
>   
> -    same_vid  = (ai->vid == bi->vid);
> -    same_pid  = (ai->pid == bi->pid);
> +    same_bus = (ai->bus == bi->bus);
> +    same_addr = (ai->addr == bi->addr);
>   
> -    return (same_pid && same_vid) ? 0 : -1;
> +    return (same_bus && same_addr) ? 0 : -1;
>   }
>   
>   static void notify_dev_state_change(GUdevClient *self,
> 



More information about the Spice-devel mailing list