[Spice-devel] [PATCH 4/5] UsbDeviceManager: expose spice_usb_device_manager_driver_uninstall_async
Kirill Moizik
kirill at daynix.com
Thu Jul 2 06:41:34 PDT 2015
encapsulate preparations for win_usb_driver_uninstall in function to prevent further code duplication
Signed-off-by: Kirill Moizik <kmoizik at redhat.com>
---
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 2fde03a..db4944f 100644
--- a/src/usb-device-manager.c
+++ b/src/usb-device-manager.c
@@ -1203,6 +1203,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 */
@@ -1590,31 +1621,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.1.0
More information about the Spice-devel
mailing list