[Spice-devel] [spice-gtk 5/9] usb-redir: do not use spice_usb_acl_helper for emulated devices

Frediano Ziglio fziglio at redhat.com
Thu Jul 25 09:17:15 UTC 2019


> 
> Signed-off-by: Yuri Benditovich <yuri.benditovich at daynix.com>
> ---
>  src/channel-usbredir.c | 29 ++++++++++++++---------------
>  1 file changed, 14 insertions(+), 15 deletions(-)
> 
> diff --git a/src/channel-usbredir.c b/src/channel-usbredir.c
> index 8d4cd66..961a464 100644
> --- a/src/channel-usbredir.c
> +++ b/src/channel-usbredir.c
> @@ -301,7 +301,6 @@ static void spice_usbredir_channel_open_acl_cb(
>  }
>  #endif
>  
> -#ifndef USE_POLKIT
>  static void
>  _open_device_async_cb(GTask *task,
>                        gpointer object,
> @@ -328,7 +327,6 @@ _open_device_async_cb(GTask *task,
>          g_task_return_boolean(task, TRUE);
>      }
>  }
> -#endif
>  
>  G_GNUC_INTERNAL
>  void spice_usbredir_channel_connect_device_async(
> @@ -373,21 +371,22 @@ void spice_usbredir_channel_connect_device_async(
>      priv->spice_device = g_boxed_copy(spice_usb_device_get_type(),
>                                        spice_device);
>  #ifdef USE_POLKIT
> -    priv->task = task;
> -    priv->state  = STATE_WAITING_FOR_ACL_HELPER;
> -    priv->acl_helper = spice_usb_acl_helper_new();
> -    g_object_set(spice_channel_get_session(SPICE_CHANNEL(channel)),
> -                 "inhibit-keyboard-grab", TRUE, NULL);
> -    spice_usb_acl_helper_open_acl_async(priv->acl_helper,
> -                                        info->bus,
> -                                        info->address,
> -                                        cancellable,
> -                                        spice_usbredir_channel_open_acl_cb,
> -                                        channel);
> +    if (info->device_type == USB_DEV_TYPE_NONE) {

Why not 

   if (info->device_type != USB_DEV_TYPE_NONE) {
      return;
   }

would minimize changes.
As stated in previous comment (other patch) the enumeration is misleading.
As "info" hold information for any usb device people reading this would say
that the device was not valid, something like

  if (info->emulated_type != USB_DEV_EMU_TYPE_NOT_EMULATED)

or

  if (info->emulated_type != USB_DEV_EMU_TYPE_REAL)

would be much more understandable.

> +        priv->task = task;
> +        priv->state  = STATE_WAITING_FOR_ACL_HELPER;
> +        priv->acl_helper = spice_usb_acl_helper_new();
> +        g_object_set(spice_channel_get_session(SPICE_CHANNEL(channel)),
> +                    "inhibit-keyboard-grab", TRUE, NULL);
> +        spice_usb_acl_helper_open_acl_async(priv->acl_helper,
> +                                            info->bus,
> +                                            info->address,
> +                                            cancellable,
> +
> spice_usbredir_channel_open_acl_cb,
> +                                            channel);
> +    }
>      return;
> -#else
> -    g_task_run_in_thread(task, _open_device_async_cb);
>  #endif
> +    g_task_run_in_thread(task, _open_device_async_cb);
>  
>  done:
>      g_object_unref(task);

Frediano


More information about the Spice-devel mailing list