diff --git a/gdk/wayland/gdkdevice-wayland.c b/gdk/wayland/gdkdevice-wayland.c index 74aba25493..2f86ee13c1 100644 --- a/gdk/wayland/gdkdevice-wayland.c +++ b/gdk/wayland/gdkdevice-wayland.c @@ -225,16 +225,27 @@ gdk_wayland_device_update_window_cursor (GdkWaylandDeviceData *wd) if (!wd->wl_pointer) return retval; - wl_pointer_set_cursor (wd->wl_pointer, - wd->enter_serial, - wd->pointer_surface, - x, y); if (buffer) { wl_surface_attach (wd->pointer_surface, buffer, 0, 0); wl_surface_set_buffer_scale (wd->pointer_surface, scale); wl_surface_damage (wd->pointer_surface, 0, 0, w, h); wl_surface_commit (wd->pointer_surface); + + wl_pointer_set_cursor (wd->wl_pointer, + wd->enter_serial, + wd->pointer_surface, + x, y); + } + else + { + wl_pointer_set_cursor (wd->wl_pointer, + wd->enter_serial, + NULL, + 0, 0); + + wl_surface_attach (wd->pointer_surface, NULL, 0, 0); + wl_surface_commit (wd->pointer_surface); } if (wd->grab_cursor)