A cursor pixbuf is required in other functions to work properly --- src/spice-widget.c | 37 +++++++++++++++++++------------------ 1 file changed, 19 insertions(+), 18 deletions(-) diff --git a/src/spice-widget.c b/src/spice-widget.c index d42924b..1a1d5a6 100644 --- a/src/spice-widget.c +++ b/src/spice-widget.c @@ -2643,26 +2643,27 @@ static void cursor_set(SpiceCursorChannel *channel, GdkCursor *cursor = NULL; SpiceCursorShape *cursor_shape; - cursor_invalidate(display); - g_object_get(G_OBJECT(channel), "cursor", &cursor_shape, NULL); - if (cursor_shape != NULL && cursor_shape->data != NULL) { - g_clear_object(&d->mouse_pixbuf); - d->mouse_pixbuf = gdk_pixbuf_new_from_data(cursor_shape->data, - GDK_COLORSPACE_RGB, - TRUE, 8, - cursor_shape->width, - cursor_shape->height, - cursor_shape->width * 4, - NULL, NULL); - d->mouse_hotspot.x = cursor_shape->hot_spot_x; - d->mouse_hotspot.y = cursor_shape->hot_spot_y; - cursor = gdk_cursor_new_from_pixbuf(gtk_widget_get_display(GTK_WIDGET(display)), - d->mouse_pixbuf, - d->mouse_hotspot.x, - d->mouse_hotspot.y); - } else + if (G_UNLIKELY(cursor_shape == NULL || cursor_shape->data == NULL)) { g_warn_if_reached(); + return; + } + + cursor_invalidate(display); + g_clear_object(&d->mouse_pixbuf); + d->mouse_pixbuf = gdk_pixbuf_new_from_data(cursor_shape->data, + GDK_COLORSPACE_RGB, + TRUE, 8, + cursor_shape->width, + cursor_shape->height, + cursor_shape->width * 4, + NULL, NULL); + d->mouse_hotspot.x = cursor_shape->hot_spot_x; + d->mouse_hotspot.y = cursor_shape->hot_spot_y; + cursor = gdk_cursor_new_from_pixbuf(gtk_widget_get_display(GTK_WIDGET(display)), + d->mouse_pixbuf, + d->mouse_hotspot.x, + d->mouse_hotspot.y); #if HAVE_EGL if (egl_enabled(d)) -- 2.13.0 _______________________________________________ Spice-devel mailing list Spice-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/spice-devel