dix: when disabling a device, make sure all paired devices are re-paired.
We re-pair them with the VCP, not a real device! If we would do otherwise, somebody may change our keyboard focus and thus get us typing where we don't want to type.
This commit is contained in:
parent
ff2351246d
commit
d42909b23a
|
@ -252,7 +252,7 @@ EnableDevice(DeviceIntPtr dev)
|
|||
Bool
|
||||
DisableDevice(DeviceIntPtr dev)
|
||||
{
|
||||
DeviceIntPtr *prev;
|
||||
DeviceIntPtr *prev, paired;
|
||||
DeviceIntRec dummyDev;
|
||||
devicePresenceNotify ev;
|
||||
|
||||
|
@ -268,6 +268,16 @@ DisableDevice(DeviceIntPtr dev)
|
|||
dev->next = inputInfo.off_devices;
|
||||
inputInfo.off_devices = dev;
|
||||
|
||||
/* Some other device may have been paired with this device.
|
||||
Re-pair with VCP. We don't repair with a real device, as this
|
||||
may cause somebody suddenly typing where they shouldn't.
|
||||
*/
|
||||
for (paired = inputInfo.devices; paired; paired = paired->next)
|
||||
{
|
||||
if (paired->spriteInfo->paired == dev)
|
||||
PairDevices(NULL, inputInfo.pointer, paired);
|
||||
}
|
||||
|
||||
ev.type = DevicePresenceNotify;
|
||||
ev.time = currentTime.milliseconds;
|
||||
ev.devchange = DeviceDisabled;
|
||||
|
|
Loading…
Reference in New Issue
Block a user