mirror of
git://git.sv.gnu.org/emacs.git
synced 2026-02-03 14:10:47 -08:00
Fix devices staying disabled in some cases
* src/xterm.c (handle_one_xevent): Process queued disables before handling an XIDeviceEnabled situation.
This commit is contained in:
parent
51186ed69c
commit
4fac694669
1 changed files with 44 additions and 2 deletions
46
src/xterm.c
46
src/xterm.c
|
|
@ -18591,6 +18591,48 @@ handle_one_xevent (struct x_display_info *dpyinfo,
|
|||
{
|
||||
if (hev->info[i].flags & XIDeviceEnabled)
|
||||
{
|
||||
/* Handle all disabled devices now, to prevent
|
||||
things happening out-of-order later. */
|
||||
if (n_disabled)
|
||||
{
|
||||
ndevices = 0;
|
||||
devices = xmalloc (sizeof *devices * dpyinfo->num_devices);
|
||||
|
||||
for (i = 0; i < dpyinfo->num_devices; ++i)
|
||||
{
|
||||
for (j = 0; j < n_disabled; ++j)
|
||||
{
|
||||
if (disabled[j] == dpyinfo->devices[i].device_id)
|
||||
{
|
||||
#ifdef HAVE_XINPUT2_1
|
||||
xfree (dpyinfo->devices[i].valuators);
|
||||
#endif
|
||||
#ifdef HAVE_XINPUT2_2
|
||||
tem = dpyinfo->devices[i].touchpoints;
|
||||
while (tem)
|
||||
{
|
||||
last = tem;
|
||||
tem = tem->next;
|
||||
xfree (last);
|
||||
}
|
||||
#endif
|
||||
goto continue_detachment;
|
||||
}
|
||||
}
|
||||
|
||||
devices[ndevices++] = dpyinfo->devices[i];
|
||||
|
||||
continue_detachment:
|
||||
continue;
|
||||
}
|
||||
|
||||
xfree (dpyinfo->devices);
|
||||
dpyinfo->devices = devices;
|
||||
dpyinfo->num_devices = ndevices;
|
||||
|
||||
n_disabled = 0;
|
||||
}
|
||||
|
||||
x_catch_errors (dpyinfo->display);
|
||||
info = XIQueryDevice (dpyinfo->display, hev->info[i].deviceid,
|
||||
&ndevices);
|
||||
|
|
@ -18654,13 +18696,13 @@ handle_one_xevent (struct x_display_info *dpyinfo,
|
|||
xfree (last);
|
||||
}
|
||||
#endif
|
||||
goto continue_detachment;
|
||||
goto break_detachment;
|
||||
}
|
||||
}
|
||||
|
||||
devices[ndevices++] = dpyinfo->devices[i];
|
||||
|
||||
continue_detachment:
|
||||
break_detachment:
|
||||
continue;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue