Skip to content

Send wl_pointer.frame when emulating pointer events out of touch ones

Sebastian Krzyszkowiak requested to merge dos/kwayland-server:touch into master

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

Merge request reports