From: Po Lu Date: Wed, 17 Aug 2022 02:20:25 +0000 (+0800) Subject: Avoid disabling device multiple times while handling XI attachment events X-Git-Tag: emacs-29.0.90~1447^2~106 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=ed9adafc0bdcfc2c79534282f888df3b250db329;p=emacs.git Avoid disabling device multiple times while handling XI attachment events * src/xterm.c (handle_one_xevent): Avoid disabling devices if we notice it has been disabled while handling XISlaveDetached or XISlaveAttached. --- diff --git a/src/xterm.c b/src/xterm.c index 7487450d649..a40440e0dad 100644 --- a/src/xterm.c +++ b/src/xterm.c @@ -22653,13 +22653,16 @@ handle_one_xevent (struct x_display_info *dpyinfo, if (info) { - if (device && info->enabled) + if (device) { device->use = info->use; device->attachment = info->attachment; } - else if (device) - disabled[n_disabled++] = hev->info[i].deviceid; + + /* device could have been disabled by now. + But instead of removing it immediately, + wait for XIDeviceDisabled, or internal + state could be left inconsistent. */ XIFreeDeviceInfo (info); }