[Spice-devel] [PATCH spice-gtk 2/6] usbredir: Treat the user cancelling the policykit dialog as a cancel
Hans de Goede
hdegoede at redhat.com
Tue Feb 21 06:12:21 PST 2012
Rather then treating it as any other error. This avoids showing an error
dialog after the user pressed cancel in the policykit dialog.
Signed-off-by: Hans de Goede <hdegoede at redhat.com>
---
gtk/spice-client-glib-usb-acl-helper.c | 5 +++++
gtk/usb-acl-helper.c | 13 ++++++++++---
2 files changed, 15 insertions(+), 3 deletions(-)
diff --git a/gtk/spice-client-glib-usb-acl-helper.c b/gtk/spice-client-glib-usb-acl-helper.c
index bd01979..aaa1180 100644
--- a/gtk/spice-client-glib-usb-acl-helper.c
+++ b/gtk/spice-client-glib-usb-acl-helper.c
@@ -177,6 +177,11 @@ static void check_authorization_cb(PolkitAuthority *authority,
return;
}
+ if (polkit_authorization_result_get_dismissed(result)) {
+ ERROR("CANCELED\n");
+ return;
+ }
+
if (!polkit_authorization_result_get_is_authorized(result)) {
ERROR("Not authorized\n");
return;
diff --git a/gtk/usb-acl-helper.c b/gtk/usb-acl-helper.c
index b79e122..6a459c5 100644
--- a/gtk/usb-acl-helper.c
+++ b/gtk/usb-acl-helper.c
@@ -87,6 +87,13 @@ static void spice_usb_acl_helper_class_init(SpiceUsbAclHelperClass *klass)
/* ------------------------------------------------------------------ */
/* callbacks */
+static void async_result_set_cancelled(GSimpleAsyncResult *result)
+{
+ g_simple_async_result_set_error(result,
+ G_IO_ERROR, G_IO_ERROR_CANCELLED,
+ "Setting USB device node ACL cancelled");
+}
+
static gboolean cb_out_watch(GIOChannel *channel,
GIOCondition cond,
gpointer *user_data)
@@ -111,6 +118,8 @@ static gboolean cb_out_watch(GIOChannel *channel,
string[strlen(string) - 1] = 0;
if (!strcmp(string, "SUCCESS")) {
success = TRUE;
+ } else if (!strcmp(string, "CANCELED")) {
+ async_result_set_cancelled(priv->result);
} else {
g_simple_async_result_set_error(priv->result,
SPICE_CLIENT_ERROR, SPICE_CLIENT_ERROR_FAILED,
@@ -278,9 +287,7 @@ void spice_usb_acl_helper_close_acl(SpiceUsbAclHelper *self)
/* If the acl open has not completed yet report it as cancelled */
if (priv->result) {
- g_simple_async_result_set_error(priv->result,
- G_IO_ERROR, G_IO_ERROR_CANCELLED,
- "Setting USB device node ACL cancelled");
+ async_result_set_cancelled(priv->result);
g_simple_async_result_complete_in_idle(priv->result);
}
--
1.7.7.6
More information about the Spice-devel
mailing list