Files
weston/libweston
Alexandros Frantzis 28d66344a0 input: Use cursor surface dimensions to evaluate presence of content
When setting a cursor surface, use the surface dimensions, instead of the
weston_surface buffer reference, to check if the surface has any
content. A weston_surface without any buffer reference may in fact
have a buffer which was committed in a previous pointer entry, dropped
by weston_surface and now held only internally by the renderer.

Without this fix, when a pointer enters a surface, the cursor image is
not correctly updated if we set a cursor surface with an already
committed buffer from a previous pointer entry, without recommitting the
cursor buffer for the current entry. This can be seen, for example, in
the experimental Wine Wayland driver which handles the cursor in a way
that leads to the following scenario:

Setup: cursor_surface.attach(buffer) & cursor_surface.commit()
On first wl_pointer.enter: pointer.set_cursor(cursor_surface)
compositor/renderer redraws
wl_pointer.leave
On second wl_pointer.enter: pointer.set_cursor(cursor_surface)

When handling the second pointer.set_cursor() request the current code
doesn't find a buffer attached to the cursor_surface (only the renderer
now has a reference to it), so it doesn't update the respective view for
the cursor.

Signed-off-by: Alexandros Frantzis <alexandros.frantzis@collabora.com>
2021-06-10 17:20:30 +03:00
..
2021-02-25 14:35:03 +02:00
2021-02-25 14:35:03 +02:00
2020-01-29 09:49:41 +00:00
2020-01-29 09:49:41 +00:00
2020-01-29 09:49:41 +00:00
2018-12-09 14:50:54 +02:00
2020-01-29 09:49:41 +00:00
2020-01-29 09:49:41 +00:00
2021-02-24 10:01:17 -05:00
2016-06-23 17:44:54 +03:00
2016-06-23 17:44:54 +03:00
2021-02-24 10:01:17 -05:00