diff options
author | Dmitry Fleytman <dmitry@daynix.com> | 2016-02-11 18:04:51 +0200 |
---|---|---|
committer | Jonathon Jongsma <jjongsma@redhat.com> | 2016-03-24 11:00:01 -0500 |
commit | c6955ad2106e087c38b3cc2ba797dfe16310155d (patch) | |
tree | 2a5bbd00b3632315beefc59fa82f4a15cb7976ba | |
parent | 0453325b49999c4c67065e2a0f58b577f6b20ede (diff) |
win-usbredir: Move installer interaction logic to separate functions
This is a refactoring done in preparation for the next commits.
Signed-off-by: Dmitry Fleytman <dmitry@daynix.com>
Acked-by: Jonathon Jongsma <jjongsma@redhat.com>
-rw-r--r-- | src/usb-device-manager.c | 108 |
1 files changed, 65 insertions, 43 deletions
diff --git a/src/usb-device-manager.c b/src/usb-device-manager.c index 8f4a047..11c3e4f 100644 --- a/src/usb-device-manager.c +++ b/src/usb-device-manager.c @@ -1444,6 +1444,68 @@ gboolean spice_usb_device_manager_is_device_connected(SpiceUsbDeviceManager *sel return !!spice_usb_device_manager_get_channel_for_dev(self, device); } +#if defined(USE_USBREDIR) && defined(G_OS_WIN32) + +static void +_spice_usb_device_manager_install_driver_async(SpiceUsbDeviceManager *self, + SpiceUsbDevice *device, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data) +{ + SpiceWinUsbDriver *installer; + UsbInstallCbInfo *cbinfo; + + g_return_if_fail(self->priv->installer); + + spice_usb_device_set_state(device, SPICE_USB_DEVICE_STATE_INSTALLING); + + installer = self->priv->installer; + cbinfo = g_new0(UsbInstallCbInfo, 1); + cbinfo->manager = self; + cbinfo->device = spice_usb_device_ref(device); + cbinfo->installer = installer; + cbinfo->cancellable = cancellable; + cbinfo->callback = callback; + cbinfo->user_data = user_data; + + spice_win_usb_driver_install_async(installer, device, cancellable, + spice_usb_device_manager_drv_install_cb, + cbinfo); +} + +static void +_spice_usb_device_manager_uninstall_driver_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 + static void _spice_usb_device_manager_connect_device_async(SpiceUsbDeviceManager *self, SpiceUsbDevice *device, @@ -1537,25 +1599,8 @@ void spice_usb_device_manager_connect_device_async(SpiceUsbDeviceManager *self, { #if defined(USE_USBREDIR) && defined(G_OS_WIN32) - SpiceWinUsbDriver *installer; - UsbInstallCbInfo *cbinfo; - - g_return_if_fail(self->priv->installer); - - spice_usb_device_set_state(device, SPICE_USB_DEVICE_STATE_INSTALLING); - - installer = self->priv->installer; - cbinfo = g_new0(UsbInstallCbInfo, 1); - cbinfo->manager = self; - cbinfo->device = spice_usb_device_ref(device); - cbinfo->installer = installer; - cbinfo->cancellable = cancellable; - cbinfo->callback = callback; - cbinfo->user_data = user_data; - - spice_win_usb_driver_install_async(installer, device, cancellable, - spice_usb_device_manager_drv_install_cb, - cbinfo); + _spice_usb_device_manager_install_driver_async(self, device, cancellable, + callback, user_data); #else _spice_usb_device_manager_connect_device_async(self, device, @@ -1609,30 +1654,7 @@ void spice_usb_device_manager_disconnect_device(SpiceUsbDeviceManager *self, spice_usbredir_channel_disconnect_device(channel); #ifdef G_OS_WIN32 - 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); + _spice_usb_device_manager_uninstall_driver_async(self, device); #endif #endif |