--- gtk/win-usb-driver-install.c | 67 +++++++++++++++++++++++++++++------------ gtk/win-usb-driver-install.h | 6 ++++ 2 files changed, 53 insertions(+), 20 deletions(-) diff --git a/gtk/win-usb-driver-install.c b/gtk/win-usb-driver-install.c index 5b9db62..8b326b5 100644 --- a/gtk/win-usb-driver-install.c +++ b/gtk/win-usb-driver-install.c @@ -246,29 +246,19 @@ SpiceWinUsbDriver *spice_win_usb_driver_new(void) return SPICE_WIN_USB_DRIVER(obj); } -/** - * spice_win_usb_driver_install: - * Start libusb driver installation for @device - * - * A new NamedPipe is created for each request. - * - * Returns: TRUE if a request was sent to usbclerk - * FALSE upon failure to send a request. - */ -G_GNUC_INTERNAL -void spice_win_usb_driver_install(SpiceWinUsbDriver *self, - SpiceUsbDevice *device, - GCancellable *cancellable, - GAsyncReadyCallback callback, - gpointer user_data) +static +void spice_win_usb_driver_op(SpiceWinUsbDriver *self, + SpiceUsbDevice *device, + guint16 op_type, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data) { guint16 vid, pid; GError *err = NULL; GSimpleAsyncResult *result; SpiceWinUsbDriverPrivate *priv; - SPICE_DEBUG("Win usb driver installation started"); - g_return_if_fail(SPICE_IS_WIN_USB_DRIVER(self)); g_return_if_fail(device != NULL); @@ -277,7 +267,7 @@ void spice_win_usb_driver_install(SpiceWinUsbDriver *self, g_return_if_fail(priv->result == NULL); result = g_simple_async_result_new(G_OBJECT(self), callback, user_data, - spice_win_usb_driver_install); + spice_win_usb_driver_op); vid = spice_usb_device_get_vid(device); pid = spice_usb_device_get_pid(device); @@ -300,7 +290,7 @@ void spice_win_usb_driver_install(SpiceWinUsbDriver *self, goto failed_request; } - if (!spice_win_usb_driver_send_request(self, USB_CLERK_DRIVER_INSTALL, + if (!spice_win_usb_driver_send_request(self, op_type, vid, pid, &err)) { g_warning("failed to send a request to usbclerk %s", err->message); g_simple_async_result_take_error(result, err); @@ -323,6 +313,43 @@ void spice_win_usb_driver_install(SpiceWinUsbDriver *self, } + +/** + * spice_win_usb_driver_install: + * Start libusb driver installation for @device + * + * A new NamedPipe is created for each request. + * + * Returns: TRUE if a request was sent to usbclerk + * FALSE upon failure to send a request. + */ +G_GNUC_INTERNAL +void spice_win_usb_driver_install(SpiceWinUsbDriver *self, + SpiceUsbDevice *device, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data) +{ + SPICE_DEBUG("Win usb driver installation started"); + + spice_win_usb_driver_op(self, device, USB_CLERK_DRIVER_INSTALL, cancellable, + callback, user_data); +} + +G_GNUC_INTERNAL +void spice_win_usb_driver_uninstall(SpiceWinUsbDriver *self, + SpiceUsbDevice *device, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data) +{ + SPICE_DEBUG("Win usb driver uninstall operation started"); + + spice_win_usb_driver_op(self, device, USB_CLERK_DRIVER_REMOVE, cancellable, + callback, user_data); +} + + /** * Returns: currently returns 0 (failure) and 1 (success) * possibly later we'll add error-codes @@ -335,7 +362,7 @@ gint spice_win_usb_driver_install_finish(SpiceWinUsbDriver *self, g_return_val_if_fail(SPICE_IS_WIN_USB_DRIVER(self), 0); g_return_val_if_fail(g_simple_async_result_is_valid(res, G_OBJECT(self), - spice_win_usb_driver_install), + spice_win_usb_driver_op), FALSE); if (g_simple_async_result_propagate_error(result, err)) return 0; diff --git a/gtk/win-usb-driver-install.h b/gtk/win-usb-driver-install.h index b0ccf33..034abf9 100644 --- a/gtk/win-usb-driver-install.h +++ b/gtk/win-usb-driver-install.h @@ -70,6 +70,12 @@ void spice_win_usb_driver_install(SpiceWinUsbDriver *self, GAsyncReadyCallback callback, gpointer user_data); +void spice_win_usb_driver_uninstall(SpiceWinUsbDriver *self, + SpiceUsbDevice *device, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); + gint spice_win_usb_driver_install_finish(SpiceWinUsbDriver *self, GAsyncResult *res, GError **err); -- 1.7.1 _______________________________________________ Spice-devel mailing list Spice-devel@xxxxxxxxxxxxxxxxxxxxx http://lists.freedesktop.org/mailman/listinfo/spice-devel