summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPo Lu <luangruo@yahoo.com>2022-01-06 19:11:56 +0800
committerPo Lu <luangruo@yahoo.com>2022-01-06 19:11:56 +0800
commit9fc20ad35c8dd1814ba097a0ec20c0230c467729 (patch)
treeb9d52528fbed9500e974292304b325b714711e54
parent2ab73286b7a58eb983da21bca8b781ec884eb996 (diff)
downloademacs-9fc20ad35c8dd1814ba097a0ec20c0230c467729.tar.gz
Make sure touch end events aren't sent too many times
* src/xterm.c (handle_one_xevent): Don't send touch end events twice if two valuators have their masks set without a change in value.
-rw-r--r--src/xterm.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/src/xterm.c b/src/xterm.c
index ff6c71283ec..1d4c775753c 100644
--- a/src/xterm.c
+++ b/src/xterm.c
@@ -10156,6 +10156,7 @@ handle_one_xevent (struct x_display_info *dpyinfo,
case XI_Motion:
{
struct xi_device_t *device;
+ bool touch_end_event_seen = false;
states = &xev->valuators;
values = states->values;
@@ -10294,7 +10295,12 @@ handle_one_xevent (struct x_display_info *dpyinfo,
inev.ie.arg = Qnil;
}
- kbd_buffer_store_event_hold (&inev.ie, hold_quit);
+ if (inev.ie.kind != TOUCH_END_EVENT
+ || !touch_end_event_seen)
+ {
+ kbd_buffer_store_event_hold (&inev.ie, hold_quit);
+ touch_end_event_seen = inev.ie.kind == TOUCH_END_EVENT;
+ }
val->emacs_value = 0;
}