qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH qemu] ui/gtk: Reuse input event slots for GdkEventTouch


From: Marc-André Lureau
Subject: Re: [PATCH qemu] ui/gtk: Reuse input event slots for GdkEventTouch
Date: Mon, 22 Jul 2024 12:38:32 +0400

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_chui@git.sr.ht> wrote:
From: Katharine Chui <kwchuiaa@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.
 

Signed-off-by: Katharine Chui <kwchuiaa@connect.ust.hk>
---
 ui/gtk.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/ui/gtk.c b/ui/gtk.c
index bc29f7a1b4..b123c9616d 100644
--- a/ui/gtk.c
+++ b/ui/gtk.c
@@ -1090,7 +1090,7 @@ static gboolean gd_touch_event(GtkWidget *widget, GdkEventTouch *touch,
                                void *opaque)
 {
     VirtualConsole *vc = opaque;
-    uint64_t num_slot = GPOINTER_TO_UINT(touch->sequence);
+    uint64_t num_slot = GPOINTER_TO_UINT(touch->sequence) % INPUT_EVENT_SLOTS_MAX;
     int type = -1;

     switch (touch->type) {
--
2.43.4



--
Marc-André Lureau

reply via email to

[Prev in Thread] Current Thread [Next in Thread]