[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