Multiple issues have been found in the X server and Xwayland
This commit is contained in:
parent
b5bb0bd1e8
commit
79d7f8454a
7 changed files with 114 additions and 84 deletions
|
@ -447,14 +447,20 @@ DisableDevice(DeviceIntPtr dev, BOOL sendevent)
|
|||
{
|
||||
DeviceIntPtr *prev, other;
|
||||
BOOL enabled;
|
||||
BOOL dev_in_devices_list = FALSE;
|
||||
int flags[MAXDEVICES] = { 0 };
|
||||
|
||||
if (!dev->enabled)
|
||||
return TRUE;
|
||||
|
||||
for (prev = &inputInfo.devices;
|
||||
*prev && (*prev != dev); prev = &(*prev)->next);
|
||||
if (*prev != dev)
|
||||
for (other = inputInfo.devices; other; other = other->next) {
|
||||
if (other == dev) {
|
||||
dev_in_devices_list = TRUE;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (!dev_in_devices_list)
|
||||
return FALSE;
|
||||
|
||||
TouchEndPhysicallyActiveTouches(dev);
|
||||
|
@ -471,6 +477,13 @@ DisableDevice(DeviceIntPtr dev, BOOL sendevent)
|
|||
flags[other->id] |= XISlaveDetached;
|
||||
}
|
||||
}
|
||||
|
||||
for (other = inputInfo.off_devices; other; other = other->next) {
|
||||
if (!IsMaster(other) && GetMaster(other, MASTER_ATTACHED) == dev) {
|
||||
AttachDevice(NULL, other, NULL);
|
||||
flags[other->id] |= XISlaveDetached;
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
for (other = inputInfo.devices; other; other = other->next) {
|
||||
|
@ -505,6 +518,9 @@ DisableDevice(DeviceIntPtr dev, BOOL sendevent)
|
|||
LeaveWindow(dev);
|
||||
SetFocusOut(dev);
|
||||
|
||||
for (prev = &inputInfo.devices;
|
||||
*prev && (*prev != dev); prev = &(*prev)->next);
|
||||
|
||||
*prev = dev->next;
|
||||
dev->next = inputInfo.off_devices;
|
||||
inputInfo.off_devices = dev;
|
||||
|
@ -1064,6 +1080,11 @@ CloseDownDevices(void)
|
|||
dev->master = NULL;
|
||||
}
|
||||
|
||||
for (dev = inputInfo.off_devices; dev; dev = dev->next) {
|
||||
if (!IsMaster(dev) && !IsFloating(dev))
|
||||
dev->master = NULL;
|
||||
}
|
||||
|
||||
CloseDeviceList(&inputInfo.devices);
|
||||
CloseDeviceList(&inputInfo.off_devices);
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue