[Spice-devel] [PATCH spice-gtk v2 1/5] gtk: Use gdk_cursor_new_for_display

Pavel Grunt pgrunt at redhat.com
Mon Dec 19 16:26:32 UTC 2016


Create the cursor when the widget is realized
---
 src/spice-widget.c | 14 +++++++-------
 1 file changed, 7 insertions(+), 7 deletions(-)

diff --git a/src/spice-widget.c b/src/spice-widget.c
index 72fbbc8..a27f5a2 100644
--- a/src/spice-widget.c
+++ b/src/spice-widget.c
@@ -460,12 +460,12 @@ static void spice_display_finalize(GObject *obj)
     G_OBJECT_CLASS(spice_display_parent_class)->finalize(obj);
 }
 
-static GdkCursor* get_blank_cursor(void)
+static GdkCursor* spice_display_get_blank_cursor(SpiceDisplay *display)
 {
-    if (g_getenv("SPICE_DEBUG_CURSOR"))
-        return gdk_cursor_new(GDK_DOT);
+    GdkDisplay *gdk_display = gdk_window_get_display(GDK_WINDOW(gtk_widget_get_window(GTK_WIDGET(display))));
+    GdkCursorType cursor_type = g_getenv("SPICE_DEBUG_CURSOR") ? GDK_DOT : GDK_BLANK_CURSOR;
 
-    return gdk_cursor_new(GDK_BLANK_CURSOR);
+    return gdk_cursor_new_for_display(gdk_display, cursor_type);
 }
 
 static gboolean grab_broken(SpiceDisplay *self, GdkEventGrabBroken *event,
@@ -676,7 +676,6 @@ G_GNUC_END_IGNORE_DEPRECATIONS
 
     d->grabseq = spice_grab_sequence_new_from_string("Control_L+Alt_L");
     d->activeseq = g_new0(gboolean, d->grabseq->nkeysyms);
-    d->mouse_cursor = get_blank_cursor();
 }
 
 static GObject *
@@ -986,7 +985,7 @@ static gboolean do_pointer_grab(SpiceDisplay *display)
     SpiceDisplayPrivate *d = display->priv;
     GdkWindow *window = GDK_WINDOW(gtk_widget_get_window(GTK_WIDGET(display)));
     GdkGrabStatus status;
-    GdkCursor *blank = get_blank_cursor();
+    GdkCursor *blank = spice_display_get_blank_cursor(display);
     gboolean grab_successful = FALSE;
 
     if (!gtk_widget_get_realized(GTK_WIDGET(display)))
@@ -2076,6 +2075,7 @@ static void realize(GtkWidget *widget)
     d->keycode_map =
         vnc_display_keymap_gdk2xtkbd_table(gtk_widget_get_window(widget),
                                            &d->keycode_maplen);
+    d->mouse_cursor = spice_display_get_blank_cursor(display);
 
     update_image(display);
 }
@@ -2596,7 +2596,7 @@ static void cursor_hide(SpiceCursorChannel *channel, gpointer data)
 
     cursor_invalidate(display);
     d->show_cursor = d->mouse_cursor;
-    d->mouse_cursor = get_blank_cursor();
+    d->mouse_cursor = spice_display_get_blank_cursor(display);
     update_mouse_pointer(display);
 }
 
-- 
2.11.0



More information about the Spice-devel mailing list