[Spice-devel] [PATCH spice-gtk 11/14] usb: call win_usb_driver_new() during initable_init()
Jonathon Jongsma
jjongsma at redhat.com
Wed Apr 23 14:29:18 PDT 2014
----- Original Message -----
> From: "Marc-André Lureau" <marcandre.lureau at gmail.com>
> To: spice-devel at freedesktop.org
> Sent: Wednesday, April 23, 2014 1:09:16 PM
> Subject: [Spice-devel] [PATCH spice-gtk 11/14] usb: call win_usb_driver_new() during initable_init()
>
> Throw an error when initialization failed.
> ---
> gtk/spice-client.h | 2 ++
> gtk/usb-device-manager.c | 27 ++++++++++++++++++---------
> 2 files changed, 20 insertions(+), 9 deletions(-)
>
> diff --git a/gtk/spice-client.h b/gtk/spice-client.h
> index e734cca..39765db 100644
> --- a/gtk/spice-client.h
> +++ b/gtk/spice-client.h
> @@ -58,6 +58,7 @@ G_BEGIN_DECLS
> * @SPICE_CLIENT_ERROR_FAILED: generic error code
> * @SPICE_CLIENT_ERROR_USB_DEVICE_REJECTED: device redirection rejected by
> host
> * @SPICE_CLIENT_ERROR_USB_DEVICE_LOST: device disconnected (fatal IO error)
> + * @SPICE_CLIENT_ERROR_USB_SERVICE: USB service error
> *
> * Error codes returned by spice-client API.
> */
> @@ -66,6 +67,7 @@ typedef enum
> SPICE_CLIENT_ERROR_FAILED,
> SPICE_CLIENT_ERROR_USB_DEVICE_REJECTED,
> SPICE_CLIENT_ERROR_USB_DEVICE_LOST,
> + SPICE_CLIENT_ERROR_USB_SERVICE,
> } SpiceClientError;
>
> #ifndef SPICE_DISABLE_DEPRECATED
> diff --git a/gtk/usb-device-manager.c b/gtk/usb-device-manager.c
> index c87efd5..81e3c80 100644
> --- a/gtk/usb-device-manager.c
> +++ b/gtk/usb-device-manager.c
> @@ -227,8 +227,8 @@ static void
> spice_usb_device_manager_init(SpiceUsbDeviceManager *self)
> }
>
> static gboolean spice_usb_device_manager_initable_init(GInitable *initable,
> - GCancellable
> *cancellable,
> - GError **err)
> + GCancellable
> *cancellable,
> + GError **err)
unrelated format changes...
> {
> SpiceUsbDeviceManager *self;
> SpiceUsbDeviceManagerPrivate *priv;
> @@ -260,6 +260,17 @@ static gboolean
> spice_usb_device_manager_initable_init(GInitable *initable,
> }
>
> #ifdef USE_USBREDIR
> +
> +#ifdef G_OS_WIN32
> + priv->installer = spice_win_usb_driver_new();
> + if (!priv->installer) {
Am I missing something? How can this fail? spice_win_usb_driver_new() is just a simple wrapper around g_object_new()...
> + g_warn_if_reached();
> + g_set_error_literal(err, SPICE_CLIENT_ERROR,
> SPICE_CLIENT_ERROR_USB_SERVICE,
> + "Failed to initialize USB device installer
> service");
> + return FALSE;
> + }
> +#endif
> +
> /* Initialize libusb */
> rc = libusb_init(&priv->context);
> if (rc < 0) {
> @@ -1480,10 +1491,10 @@ void
> spice_usb_device_manager_connect_device_async(SpiceUsbDeviceManager *self,
> SpiceWinUsbDriver *installer;
> UsbInstallCbInfo *cbinfo;
>
> + g_return_if_fail(self->priv->installer);
> +
> spice_usb_device_set_state(device, SPICE_USB_DEVICE_STATE_INSTALLING);
> - if (! self->priv->installer) {
> - self->priv->installer = spice_win_usb_driver_new();
> - }
> +
> installer = self->priv->installer;
> cbinfo = g_new0(UsbInstallCbInfo, 1);
> cbinfo->manager = self;
> @@ -1548,7 +1559,7 @@ void
> spice_usb_device_manager_disconnect_device(SpiceUsbDeviceManager *self,
> guint8 state;
>
> g_warn_if_fail(device != NULL);
> - g_warn_if_fail(self->priv->installer != NULL);
> + g_return_if_fail(self->priv->installer);
>
> state = spice_usb_device_get_state(device);
> if ((state != SPICE_USB_DEVICE_STATE_INSTALLED) &&
> @@ -1557,9 +1568,7 @@ void
> spice_usb_device_manager_disconnect_device(SpiceUsbDeviceManager *self,
> }
>
> spice_usb_device_set_state(device, SPICE_USB_DEVICE_STATE_UNINSTALLING);
> - if (! self->priv->installer) {
> - self->priv->installer = spice_win_usb_driver_new();
> - }
> +
> installer = self->priv->installer;
> cbinfo = g_new0(UsbInstallCbInfo, 1);
> cbinfo->manager = self;
> --
> 1.8.5.3
>
> _______________________________________________
> Spice-devel mailing list
> Spice-devel at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/spice-devel
>
More information about the Spice-devel
mailing list