From: Kirill Moizik <kmoizik@xxxxxxxxxx> --- src/usb-device-manager.c | 58 +++++++++++++++++++++++++++--------------------- 1 file changed, 33 insertions(+), 25 deletions(-) diff --git a/src/usb-device-manager.c b/src/usb-device-manager.c index adf7acc..e58450d 100644 --- a/src/usb-device-manager.c +++ b/src/usb-device-manager.c @@ -1228,6 +1228,37 @@ static void spice_usb_device_manager_drv_uninstall_cb(GObject *gobject, #endif +#if defined(USE_USBREDIR) && defined(G_OS_WIN32) +void spice_usb_device_manager_driver_uninstall_async(SpiceUsbDeviceManager *self, + SpiceUsbDevice *device) +{ + + SpiceWinUsbDriver *installer; + UsbInstallCbInfo *cbinfo; + guint8 state; + + g_warn_if_fail(device != NULL); + g_return_if_fail(self->priv->installer); + + state = spice_usb_device_get_state(device); + if ((state != SPICE_USB_DEVICE_STATE_INSTALLED) && + (state != SPICE_USB_DEVICE_STATE_CONNECTED)) { + return; + } + + spice_usb_device_set_state(device, SPICE_USB_DEVICE_STATE_UNINSTALLING); + + installer = self->priv->installer; + cbinfo = g_new0(UsbInstallCbInfo, 1); + cbinfo->manager = self; + cbinfo->device = spice_usb_device_ref(device); + cbinfo->installer = installer; + spice_win_usb_driver_uninstall_async (installer, device, NULL, + spice_usb_device_manager_drv_uninstall_cb, + cbinfo); +} +#endif + /* ------------------------------------------------------------------ */ /* private api */ @@ -1615,31 +1646,8 @@ void spice_usb_device_manager_disconnect_device(SpiceUsbDeviceManager *self, spice_usbredir_channel_disconnect_device(channel); #ifdef G_OS_WIN32 - if (self->priv->use_usbclerk) { - SpiceWinUsbDriver *installer; - UsbInstallCbInfo *cbinfo; - guint8 state; - - g_warn_if_fail(device != NULL); - g_return_if_fail(self->priv->installer); - - state = spice_usb_device_get_state(device); - if ((state != SPICE_USB_DEVICE_STATE_INSTALLED) && - (state != SPICE_USB_DEVICE_STATE_CONNECTED)) { - return; - } - - spice_usb_device_set_state(device, SPICE_USB_DEVICE_STATE_UNINSTALLING); - - installer = self->priv->installer; - cbinfo = g_new0(UsbInstallCbInfo, 1); - cbinfo->manager = self; - cbinfo->device = spice_usb_device_ref(device); - cbinfo->installer = installer; - - spice_win_usb_driver_uninstall_async (installer, device, NULL, - spice_usb_device_manager_drv_uninstall_cb, - cbinfo); + if (self->priv->use_usbclerk) { + spice_usb_device_manager_driver_uninstall_async(self,device); } #endif -- 2.4.3 _______________________________________________ Spice-devel mailing list Spice-devel@xxxxxxxxxxxxxxxxxxxxx http://lists.freedesktop.org/mailman/listinfo/spice-devel