wayland: Set a null cursor surface when cursor buffer is null

If the buffer of a cursor is NULL, for example if its an empty cursor,
just set the cursor surface to NULL as well. Not doing this we'll use
uninitialized hotspot coordinates, dimensions and scales.

https://bugzilla.gnome.org/show_bug.cgi?id=758025
This commit is contained in:
Jonas Ådahl
2015-11-20 16:49:12 +08:00
committed by Matthias Clasen
parent cf7bb4f2aa
commit dc65abc44c

View File

@ -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)