[Spice-devel] [PATCH 8/9] auto-connect shared CD devices added using command line
Frediano Ziglio
fziglio at redhat.com
Fri Dec 6 10:30:52 UTC 2019
>
> From: Alexander Nezhinsky <anezhins at redhat.com>
>
> Turn shared CD devices added using command line into hot-plugged devices
> which are redirected according to 'auto-connect' filter rules.
> By default command line devices are added using 'redirect-on-connect' filter,
> which do not fit the shard CD connecting requirements.
>
Can you describe the requirements here?
This patch looks like an workaround to me.
> Signed-off-by: Alexander Nezhinsky <anezhins at redhat.com>
> ---
> src/usb-device-manager.c | 25 ++++++++++++++++++-------
> 1 file changed, 18 insertions(+), 7 deletions(-)
>
> diff --git a/src/usb-device-manager.c b/src/usb-device-manager.c
> index 0961ef9..a69a346 100644
> --- a/src/usb-device-manager.c
> +++ b/src/usb-device-manager.c
> @@ -889,11 +889,9 @@ static void
> spice_usb_device_manager_check_redir_on_connect(
> GTask *task;
> SpiceUsbDevice *device;
> SpiceUsbBackendDevice *bdev;
> + gboolean is_cd, shall_redirect;
> guint i;
>
> - if (priv->redirect_on_connect == NULL)
> - return;
> -
> for (i = 0; i < priv->devices->len; i++) {
> device = g_ptr_array_index(priv->devices, i);
>
> @@ -901,10 +899,23 @@ static void
> spice_usb_device_manager_check_redir_on_connect(
> continue;
>
> bdev = spice_usb_device_manager_device_to_bdev(self, device);
> - if (spice_usb_backend_device_check_filter(
> - bdev,
> - priv->redirect_on_connect_rules,
> - priv->redirect_on_connect_rules_count) == 0) {
> + is_cd = spice_usb_backend_device_get_libdev(bdev) == NULL;
This is checking if emulated, not if is a CD.
> +
> + if (priv->redirect_on_connect) {
> + shall_redirect = !spice_usb_backend_device_check_filter(
> + bdev,
> + priv->redirect_on_connect_rules,
> + priv->redirect_on_connect_rules_count);
Why not setting some "rules" and "rules_count" variable instead
and call spice_usb_backend_device_check_filter once?
> + } else if (is_cd) {
> + shall_redirect = !spice_usb_backend_device_check_filter(
> + bdev,
> + priv->auto_conn_filter_rules,
> ++ priv->auto_conn_filter_rules_count);
> + } else {
> + shall_redirect = FALSE;
> + }
> +
> + if (shall_redirect) {
> /* Note: re-uses spice_usb_device_manager_connect_device_async's
> completion handling code! */
> task = g_task_new(self,
Frediano
More information about the Spice-devel
mailing list