diff options
author | Kirill Moizik <kmoizik@redhat.com> | 2016-03-08 16:05:59 +0200 |
---|---|---|
committer | Jonathon Jongsma <jjongsma@redhat.com> | 2016-03-24 11:00:02 -0500 |
commit | ce5b84238e9355caa188e83cada387ed5ec26018 (patch) | |
tree | de88f6a5b0fb009cdb556443e44e9405be43b730 | |
parent | 03e541add456485a6cc890064c98bc259f78ade4 (diff) |
UsbDeviceWidget: Consider asynchronous redirection flows
Gray out redirection controls while there are
asynchronous redirection flows in progress.
Signed-off-by: Kirill Moizik <kmoizik@redhat.com>
Signed-off-by: Dmitry Fleytman <dfleytma@redhat.com>
Acked-by: Jonathon Jongsma <jjongsma@redhat.com>
-rw-r--r-- | src/usb-device-widget.c | 38 |
1 files changed, 20 insertions, 18 deletions
diff --git a/src/usb-device-widget.c b/src/usb-device-widget.c index 285bfd5..ebb2d7d 100644 --- a/src/usb-device-widget.c +++ b/src/usb-device-widget.c @@ -380,27 +380,29 @@ static void check_can_redirect(GtkWidget *widget, gpointer user_data) return; /* Non device widget, ie the info_bar */ priv->device_count++; - can_redirect = spice_usb_device_manager_can_redirect_device(priv->manager, - device, &err); - gtk_widget_set_sensitive(widget, can_redirect); - - /* If we cannot redirect this device, append the error message to - err_msg, but only if it is *not* already there! */ - if (!can_redirect) { - if (priv->err_msg) { - if (!strstr(priv->err_msg, err->message)) { - gchar *old_err_msg = priv->err_msg; - priv->err_msg = g_strdup_printf("%s\n%s", priv->err_msg, - err->message); - g_free(old_err_msg); + if (spice_usb_device_manager_is_redirecting(priv->manager)) { + can_redirect = FALSE; + } else { + can_redirect = spice_usb_device_manager_can_redirect_device(priv->manager, + device, &err); + /* If we cannot redirect this device, append the error message to + err_msg, but only if it is *not* already there! */ + if (!can_redirect) { + if (priv->err_msg) { + if (!strstr(priv->err_msg, err->message)) { + gchar *old_err_msg = priv->err_msg; + priv->err_msg = g_strdup_printf("%s\n%s", priv->err_msg, + err->message); + g_free(old_err_msg); + } + } else { + priv->err_msg = g_strdup(err->message); } - } else { - priv->err_msg = g_strdup(err->message); } + g_clear_error(&err); } - - g_clear_error(&err); + gtk_widget_set_sensitive(widget, can_redirect); } static gboolean spice_usb_device_widget_update_status(gpointer user_data) @@ -476,9 +478,9 @@ static void connect_cb(GObject *gobject, GAsyncResult *res, gpointer user_data) g_error_free(err); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(data->check), FALSE); - spice_usb_device_widget_update_status(self); } + spice_usb_device_widget_update_status(self); g_object_unref(data->check); g_object_unref(data->self); g_free(data); |