Re: [spice-gtk Win32 v5 22/22] usb-device-manager: mingw: ignore "remove" udev event when un/installing a driver

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

 



On 07/09/2012 08:24 PM, Marc-André Lureau wrote:
On Mon, Jul 9, 2012 at 2:15 PM, Uri Lublin<uril@xxxxxxxxxx>  wrote:
---
  gtk/usb-device-manager.c |   10 ++++++++++
  1 files changed, 10 insertions(+), 0 deletions(-)

diff --git a/gtk/usb-device-manager.c b/gtk/usb-device-manager.c
index 65119ad..2a92ff8 100644
--- a/gtk/usb-device-manager.c
+++ b/gtk/usb-device-manager.c
@@ -719,6 +719,16 @@ static void spice_usb_device_manager_remove_dev(SpiceUsbDeviceManager  *self,
          return;
      }

+#ifdef G_OS_WIN32
+    const guint8 state = spice_usb_device_get_state(device);
+    if ((state == SPICE_USB_DEVICE_STATE_INSTALLING) ||
+        (state == SPICE_USB_DEVICE_STATE_UNINSTALLING)) {
+        g_warning("skipping device at %d.%d. It is installing it's driver",
+                  bus, address);
+        return;
+    }
+#endif
What happens if the device is removed before it is installed or
uninstalled?

If a device is removed during driver installation (or uninstallation), we ignore the udev event. After driver installation, the matching libusb device will not be found (or
libusb_open it would fail) and usbredir operation would fail.
In such a scenario there is a problem, where usb-device-manager would keep that device in it's list, and show it in the usb menu. Re-trying to usbredir the device would
fail as above.


  Or a simpler case, do we handle correctly removing a
device currently being redirected? (thinking of unplugged abruptely by
user physically)
Yes, this is handled correctly.


We probably need a better state machine, and possibly gather more
information before making decisions (e.g. check what driver is installed
when a "device added" event or "device removed" event are received).

Thanks,
    Uri.

_______________________________________________
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]