[Spice-devel] [PATCH spice-gtk v2] widget: Avoid using GDK_GRAB_FAILED defined in Gtk 3.16.

Pavel Grunt pgrunt at redhat.com
Fri Jun 3 12:16:25 UTC 2016


The returned value from do_pointer_grab() is treated as a boolean - grab
was successful or not. Change the function to return a boolean value.

Reported-by: Eduardo Lima (Etrunko) <etrunko at redhat.com>
---
 src/spice-widget.c | 12 +++++++-----
 1 file changed, 7 insertions(+), 5 deletions(-)

diff --git a/src/spice-widget.c b/src/spice-widget.c
index d0fa912..0c70ce4 100644
--- a/src/spice-widget.c
+++ b/src/spice-widget.c
@@ -930,12 +930,13 @@ error:
 }
 #endif
 
-static GdkGrabStatus do_pointer_grab(SpiceDisplay *display)
+static gboolean do_pointer_grab(SpiceDisplay *display)
 {
     SpiceDisplayPrivate *d = display->priv;
     GdkWindow *window = GDK_WINDOW(gtk_widget_get_window(GTK_WIDGET(display)));
-    GdkGrabStatus status = GDK_GRAB_FAILED;
+    GdkGrabStatus status;
     GdkCursor *blank = get_blank_cursor();
+    gboolean grab_successful = FALSE;
 
     if (!gtk_widget_get_realized(GTK_WIDGET(display)))
         goto end;
@@ -964,7 +965,8 @@ static GdkGrabStatus do_pointer_grab(SpiceDisplay *display)
                      NULL,
                      blank,
                      GDK_CURRENT_TIME);
-    if (status != GDK_GRAB_SUCCESS) {
+    grab_successful = (status == GDK_GRAB_SUCCESS);
+    if (!grab_successful) {
         d->mouse_grab_active = false;
         g_warning("pointer grab failed %u", status);
     } else {
@@ -976,7 +978,7 @@ static GdkGrabStatus do_pointer_grab(SpiceDisplay *display)
 
 end:
     g_object_unref(blank);
-    return status;
+    return grab_successful;
 }
 
 static void update_mouse_pointer(SpiceDisplay *display)
@@ -1023,7 +1025,7 @@ static void try_mouse_grab(SpiceDisplay *display)
     if (d->mouse_grab_active)
         return;
 
-    if (do_pointer_grab(display) != GDK_GRAB_SUCCESS)
+    if (!do_pointer_grab(display))
         return;
 
     d->mouse_last_x = -1;
-- 
2.8.3



More information about the Spice-devel mailing list