Hi On Mon, Jul 22, 2024 at 3:58 PM Sergio Lopez Pascual <s...@redhat.com> wrote:
> Marc-André Lureau <marcandre.lur...@gmail.com> writes: > > > Hi > > > > Adding Sergio in CC, who wrote that code. I don't have means to test it, > > which also limits my understanding and ability to check this. > > > > On Sat, Jul 20, 2024 at 11:58 PM ~katharine_chui < > katharine_c...@git.sr.ht> > > wrote: > > > >> From: Katharine Chui <kwchu...@connect.ust.hk> > >> > >> There seems to be no guarantee as to how GdkEventTouch.sequence > >> would progress https://docs.gtk.org/gdk3/struct.EventTouch.html > >> > >> > > True, we also abuse the internal implementation which stores low integers > > in the sequence pointer. > > > > In the case of steam gamescope session, touch input would > >> increment the number every touch, resulting in all touch inputs > >> after the 10th touch to get dropped > >> > >> ... > >> qemu: warning: Unexpected touch slot number: 10 >= 10 > >> qemu: warning: Unexpected touch slot number: 11 >= 10 > >> qemu: warning: Unexpected touch slot number: 12 >= 10 > >> qemu: warning: Unexpected touch slot number: 13 >= 10 > >> qemu: warning: Unexpected touch slot number: 14 >= 10 > >> ... > >> > >> Reuse the slots on gtk to avoid that > >> > > > > But doing modulo like this, there is a chance of conflict with already > used > > slots. > > > > Maybe it's time for a better gtk implementation which would handle a > proper > > sequence pointer to slot mapping. > > The problem with slots vs. sequences is that, from what I can see, > there's not way to obtain the slot number from EventTouch, which makes > me thing we're a little to high in the abstraction layer to emulate > multi-touch properly. And with GTK4 it seems to be even worse, because > it tries harder to process gestures on its own (we need them to be > processed by the guest instead). > > Under some compositors, we were lucky enough that indeed slots == > sequences, so we could actually pass those events as that and have the > guest process and recognize simple gestures (i.e. pinching) properly. > > The "right" solution would be finding a way to operate at a lower level > than what EventTouch provides us today, but I don't know how feasible is > that from within the limits of the ui/gtk3.c. > > In case that's not possible, the modulo workaround is probably as good > as we can get. > Can't we map the sequence pointer to a (reusable) counter? So up to max-slots sequences could be mapped uniquely and we would reject events that do not fit within max-slots. -- Marc-André Lureau