mirror of
https://github.com/X11Libre/xf86-input-synaptics.git
synced 2026-03-24 09:44:40 +00:00
Drain XRecord connection of any events after handling replies
If the X server sends an event to the XRecord connection the event
will never be handled. This will cause the event queue to fill up in
Xlib and lead to syndaemon running away at 100% cpu usage.
This change drains any events from the connection. It's not a fix for
the underlying bug in the server or Xlib, but it does paper over the
issue for now.
https://bugs.launchpad.net/bugs/754470
http://bugs.freedesktop.org/show_bug.cgi?id=31921
Signed-off-by: Chase Douglas <chase.douglas@canonical.com>
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
(cherry picked from commit bdc9c7cf97)
This commit is contained in:
committed by
Peter Hutterer
parent
ae226ae5c9
commit
27d04237d6
@@ -421,6 +421,14 @@ void record_main_loop(Display* display, double idle_time) {
|
||||
|
||||
XRecordProcessReplies(dpy_data);
|
||||
|
||||
/* If there are any events left over, they are in error. Drain them
|
||||
* from the connection queue so we don't get stuck. */
|
||||
while (XEventsQueued(dpy_data, QueuedAlready) > 0) {
|
||||
XEvent event;
|
||||
XNextEvent(dpy_data, &event);
|
||||
fprintf(stderr, "bad event received, major opcode %d\n", event.type);
|
||||
}
|
||||
|
||||
if (!ignore_modifier_keys && cbres.key_event) {
|
||||
disable_event = 1;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user