As the message can be understand as an error message, let's replace it for a more user-friendly message and display it in the infobar as an info message instead of a warning message. Related: rhbz#1298772 --- src/spice-client.h | 2 ++ src/usb-device-manager.c | 6 ++++-- src/usb-device-widget.c | 10 ++++++++-- 3 files changed, 14 insertions(+), 4 deletions(-) diff --git a/src/spice-client.h b/src/spice-client.h index 32b79ea..cccb325 100644 --- a/src/spice-client.h +++ b/src/spice-client.h @@ -70,6 +70,7 @@ G_BEGIN_DECLS * @SPICE_CLIENT_ERROR_AUTH_NEEDS_USERNAME: username is required * @SPICE_CLIENT_ERROR_AUTH_NEEDS_PASSWORD_AND_USERNAME: password and username are required * @SPICE_CLIENT_ERROR_USB_SERVICE: USB service error + * @SPICE_CLIENT_ERROR_USB_NO_FREE_CHANNELS_AVAILABLE: there are no more free channels available for redirecting a device * * Error codes returned by spice-client API. */ @@ -82,6 +83,7 @@ typedef enum SPICE_CLIENT_ERROR_AUTH_NEEDS_USERNAME, SPICE_CLIENT_ERROR_AUTH_NEEDS_PASSWORD_AND_USERNAME, SPICE_CLIENT_ERROR_USB_SERVICE, + SPICE_CLIENT_ERROR_USB_NO_FREE_CHANNELS_AVAILABLE, } SpiceClientError; #ifndef SPICE_DISABLE_DEPRECATED diff --git a/src/usb-device-manager.c b/src/usb-device-manager.c index c62f56e..a22d926 100644 --- a/src/usb-device-manager.c +++ b/src/usb-device-manager.c @@ -1673,8 +1673,10 @@ spice_usb_device_manager_can_redirect_device(SpiceUsbDeviceManager *self, break; } if (i == priv->channels->len) { - g_set_error_literal(err, SPICE_CLIENT_ERROR, SPICE_CLIENT_ERROR_FAILED, - _("There are no free USB channels")); + g_set_error_literal(err, + SPICE_CLIENT_ERROR, + SPICE_CLIENT_ERROR_USB_NO_FREE_CHANNELS_AVAILABLE, + _("All available USB channels are in use.\nNo additional devices can be redirected")); return FALSE; } diff --git a/src/usb-device-widget.c b/src/usb-device-widget.c index fe983c9..830bdce 100644 --- a/src/usb-device-widget.c +++ b/src/usb-device-widget.c @@ -74,6 +74,7 @@ struct _SpiceUsbDeviceWidgetPrivate { GtkWidget *info_bar; gchar *err_msg; gsize device_count; + gboolean is_info_message; }; static guint signals[LAST_SIGNAL] = { 0, }; @@ -381,6 +382,10 @@ static void check_can_redirect(GtkWidget *widget, gpointer user_data) /* If we cannot redirect this device, append the error message to err_msg, but only if it is *not* already there! */ if (!can_redirect) { + priv->is_info_message = g_error_matches(err, + SPICE_CLIENT_ERROR, + SPICE_CLIENT_ERROR_USB_NO_FREE_CHANNELS_AVAILABLE); + if (priv->err_msg) { if (!strstr(priv->err_msg, err->message)) { gchar *old_err_msg = priv->err_msg; @@ -407,8 +412,9 @@ static gboolean spice_usb_device_widget_update_status(gpointer user_data) if (priv->err_msg) { spice_usb_device_widget_show_info_bar(self, priv->err_msg, - GTK_MESSAGE_INFO, - GTK_STOCK_DIALOG_WARNING); + GTK_MESSAGE_INFO, + priv->is_info_message ? + GTK_STOCK_DIALOG_INFO : GTK_STOCK_DIALOG_WARNING); g_free(priv->err_msg); priv->err_msg = NULL; } else { -- 2.5.0 _______________________________________________ Spice-devel mailing list Spice-devel@xxxxxxxxxxxxxxxxxxxxx http://lists.freedesktop.org/mailman/listinfo/spice-devel