[Spice-commits] 3 commits - gtk/channel-display.c gtk/channel-usbredir.c gtk/spice-widget.c

Hans de Goede jwrdegoede at kemper.freedesktop.org
Fri Aug 3 07:00:39 PDT 2012

 gtk/channel-display.c  |    1 +
 gtk/channel-usbredir.c |    9 +++++++--
 gtk/spice-widget.c     |    5 ++++-
 3 files changed, 12 insertions(+), 3 deletions(-)

New commits:
commit 88a1eff2f24eeb82e7c20b3dc46e01bc61554ef2
Author: Hans de Goede <hdegoede at redhat.com>
Date:   Sat Jul 28 11:37:37 2012 +0200

    Remove "usbredirhost: " prefix from usbredirhost error messages
    libusbredirhost prefixes all its messages with "usbredirhhost: ", which
    is useful when logging to stderr, but not so much when showing the error
    to the user in an error dialog, so remove the "usbredirhost: " prefix
    when we store the message in a GError.
    Signed-off-by: Hans de Goede <hdegoede at redhat.com>

diff --git a/gtk/channel-usbredir.c b/gtk/channel-usbredir.c
index 354d2e1..e7e5629 100644
--- a/gtk/channel-usbredir.c
+++ b/gtk/channel-usbredir.c
@@ -448,8 +448,13 @@ static void usbredir_log(void *user_data, int level, const char *msg)
     if (priv->catch_error && level == usbredirparser_error) {
         SPICE_DEBUG("%s", msg);
-        g_set_error_literal(priv->catch_error, SPICE_CLIENT_ERROR,
-                            SPICE_CLIENT_ERROR_FAILED, msg);
+        /* Remove "usbredirhost: " prefix from usbredirhost messages */
+        if (strncmp(msg, "usbredirhost: ", 14) == 0)
+            g_set_error_literal(priv->catch_error, SPICE_CLIENT_ERROR,
+                                SPICE_CLIENT_ERROR_FAILED, msg + 14);
+        else
+            g_set_error_literal(priv->catch_error, SPICE_CLIENT_ERROR,
+                                SPICE_CLIENT_ERROR_FAILED, msg);
commit 498cc2677dc75a9d868c748bea08a07f82ce9d3d
Author: Hans de Goede <hdegoede at redhat.com>
Date:   Sat Jul 28 11:06:49 2012 +0200

    channel-display: Set monitors_max to 1 on init
    This fixes remote-viewer with the new multi monitor support not working
    when connecting to a spice-server without the new multi-monitor support.
    Before this fix remote-viewer would hit the following g_return_if_fail:
    (remote-viewer:24787): remote-viewer-CRITICAL **:
      assertion `monitors->len <= monitors_max' failed
    Signed-off-by: Hans de Goede <hdegoede at redhat.com>

diff --git a/gtk/channel-display.c b/gtk/channel-display.c
index 72d2c12..4ed3bbb 100644
--- a/gtk/channel-display.c
+++ b/gtk/channel-display.c
@@ -696,6 +696,7 @@ static void spice_display_channel_init(SpiceDisplayChannel *channel)
 #if defined(WIN32)
     c->dc = create_compatible_dc();
+    c->monitors_max = 1;
commit 99b2144be5f6261705f7d9f5c112a9453bf2839d
Author: Hans de Goede <hdegoede at redhat.com>
Date:   Wed Jul 4 09:02:38 2012 +0200

    spice-widget: release mouse grab on keyboard-grab-inhibit
    The purpose of the keyboard-grab-inihbit mechanism is to allow other apps
    to grab the input while the spice-widget has the focus, mainly when we're
    going to invoke policykit for usb-redirection, as that the policy-kit
    agent may want to grab the input.
    Before this patch we were only inhibitting the keyboard grab, which works fine
    for vms which are in client mouse mode, but is not enough for vms which are
    in server mouse mode.
    This patch also releases the mouse grab on keyboard-grab-inhibit, fixing
    the policykit dialog not showing (and thus usb redir not working) when
    running with server mouse mode. Note that this makes the inhibit-keyboard-grab
    name of the property no longer really cover what it does, but allas it is
    part of our ABI...
    Signed-off-by: Hans de Goede <hdegoede at redhat.com>

diff --git a/gtk/spice-widget.c b/gtk/spice-widget.c
index 02bb089..2bb7b38 100644
--- a/gtk/spice-widget.c
+++ b/gtk/spice-widget.c
@@ -372,6 +372,7 @@ static void session_inhibit_keyboard_grab_changed(GObject    *gobject,
     g_object_get(d->session, "inhibit-keyboard-grab",
                  &d->keyboard_grab_inhibit, NULL);
+    update_mouse_grab(display);
 static void spice_display_dispose(GObject *obj)
@@ -844,7 +845,9 @@ static void update_mouse_grab(SpiceDisplay *display)
     SpiceDisplayPrivate *d = SPICE_DISPLAY_GET_PRIVATE(display);
-    if (d->mouse_grab_enable && !d->disable_inputs)
+    if (d->mouse_grab_enable &&
+        !d->keyboard_grab_inhibit &&
+        !d->disable_inputs)

More information about the Spice-commits mailing list