GTK3 does not smoothly track multiple touches
Describe your issue
On an OP6 running PmOS Edge, the "event axes" GTK3 demo (and other GTK3 programs that rely on multiple touch points) do not smoothly respond to touch events from multiple fingers. On a laptop form-factor machine running Arch Linux (with a touchscreen), they do.
How to reproduce your issue?
Run gtk3-demo --run=event_axes
and drag two fingers diagonally across the screen.
What's the current behaviour?
The touch axes displayed for the first finger to touch the screen are frozen until the second finger stops moving, at which point they jump to the correct position.
What's the expected behaviour?
The touch points displayed should both follow fingers as they are dragged, not just when motion stops.
What device are you using?
oneplus-enchilada
On what postmarketOS version did you encounter the issue?
-
edge ( master
branch) -
v23.06
-
v22.12
(Supported until 2023-07-06) -
I confirm that the issue still is present after running sudo apk upgrade -a
On what environment did you encounter the issue?
Environments
-
GNOME Shell on Mobile -
Phosh -
Plasma Mobile -
Sxmo (Wayland/Sway) Please post the output of sxmo_version.sh
-
Other: Please fill out
How did you get postmarketOS image?
-
from https://images.postmarketos.org -
I built it using pmbootstrap -
It was preinstalled on my device
What's the build date of the image? (in yyyy-mm-dd format)
unsure
Additional information
Based on watching output from WAYLAND_DEBUG=client
, I don't think this is a compositor issue or a kernel issue. The receives touch motion events that look sane for both fingers every frame (the second field in wl_touch::motion
is the touch id):
[3165577.863] wl_touch@10.motion(74689793, 0, 317.00000000, 592.50000000)
[3165577.975] wl_touch@10.motion(74689793, 1, 131.00000000, 511.00000000)
[3165578.078] wl_touch@10.frame()
[3165582.201] wl_touch@10.motion(74689799, 0, 316.00000000, 594.50000000)
[3165582.299] wl_touch@10.motion(74689799, 1, 130.50000000, 512.50000000)
[3165582.393] wl_touch@10.frame()
[3165590.009] wl_touch@10.motion(74689807, 0, 315.50000000, 596.00000000)
[3165590.158] wl_touch@10.motion(74689807, 1, 130.00000000, 513.50000000)
[3165590.242] wl_touch@10.frame()
[3165598.507] wl_touch@10.motion(74689816, 0, 314.50000000, 597.00000000)
[3165598.551] wl_touch@10.motion(74689816, 1, 129.50000000, 515.00000000)
[3165598.576] wl_touch@10.frame()
[3165609.823] wl_touch@10.motion(74689824, 0, 314.00000000, 598.50000000)
[3165609.916] wl_touch@10.motion(74689824, 1, 129.50000000, 515.50000000)
[3165609.985] wl_touch@10.frame()
This seems more likely to be a GTK issue in event handling, possibly due to downstream patches or shipping an outdated version (on an Arch machine with GTK3 v3.24.38, the touch points track fingers as expected).