Send wl_pointer.frame when emulating pointer events out of touch ones
When touching a surface that doesn't register to wl_touch events, KWin didn't send frame events (which it does for regular pointer and touch events), causing severe updating issues with some clients.
Test Plan:
Launch a client that doesn't attach to wl_touch (for instance,
rootston) with WAYLAND_DEBUG=client
and watch the logs while touching
its window.
I've been using nested rootston inside KWin and noticed problems with content refresh when using touchscreen. It worked better with mouse. After debugging, it turned out that:
- rootston doesn't register to wl_touch, so KWin emulates wl_pointer events
- when emulating, KWin sends naked wl_pointer.motion and wl_pointer.button events without sending any wl_pointer.frame with them
wl_pointer.frames are sent when using mouse or using touchscreen with a client that listens to wl_touch; they just weren't when emulating wl_pointer out of touch for clients that don't.
See also: https://github.com/swaywm/wlroots/pull/1754
Originally posted in https://phabricator.kde.org/D22459