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:
committed by
Matthias Clasen
parent
cf7bb4f2aa
commit
dc65abc44c
@ -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)
|
||||
|
||||
Reference in New Issue
Block a user