input: for non-device events (e.g. DevicePresence) use MAX_DEVICES as id.
Using id = 0 only worked pre-MPX since XInput didn't allow XOpenDevice for the core devices (0 and 1). Now we can now legally register for events so we may overwrite our device-independent classes with the ones selected for the VCP. So, increase the EMASKSIZE to MAX_DEVICES + 1 and use MAX_DEVICES as the ID when we don't have a device.
This commit is contained in:
parent
f0c56ffd98
commit
15e4b6c574
|
@ -106,10 +106,10 @@ HandleDevicePresenceMask(ClientPtr client, WindowPtr win,
|
|||
if (mask == 0)
|
||||
return Success;
|
||||
|
||||
/* We always only use mksidx = 0 for events not bound to
|
||||
/* We always only use mksidx = MAX_DEVICES for events not bound to
|
||||
* devices */
|
||||
|
||||
if (AddExtensionClient (win, client, mask, 0) != Success)
|
||||
if (AddExtensionClient (win, client, mask, MAX_DEVICES) != Success)
|
||||
return BadAlloc;
|
||||
|
||||
RecalculateDeviceDeliverableEvents(win);
|
||||
|
|
|
@ -275,7 +275,7 @@ EnableDevice(DeviceIntPtr dev)
|
|||
ev.time = currentTime.milliseconds;
|
||||
ev.devchange = DeviceEnabled;
|
||||
ev.deviceid = dev->id;
|
||||
dummyDev.id = 0;
|
||||
dummyDev.id = MAX_DEVICES;
|
||||
SendEventToAllWindows(&dummyDev, DevicePresenceNotifyMask,
|
||||
(xEvent *) &ev, 1);
|
||||
|
||||
|
@ -339,7 +339,7 @@ DisableDevice(DeviceIntPtr dev)
|
|||
ev.time = currentTime.milliseconds;
|
||||
ev.devchange = DeviceDisabled;
|
||||
ev.deviceid = dev->id;
|
||||
dummyDev.id = 0;
|
||||
dummyDev.id = MAX_DEVICES;
|
||||
SendEventToAllWindows(&dummyDev, DevicePresenceNotifyMask,
|
||||
(xEvent *) &ev, 1);
|
||||
|
||||
|
@ -379,6 +379,7 @@ ActivateDevice(DeviceIntPtr dev)
|
|||
ev.deviceid = dev->id;
|
||||
|
||||
memset(&dummyDev, 0, sizeof(DeviceIntRec));
|
||||
dummyDev.id = MAX_DEVICES;
|
||||
SendEventToAllWindows(&dummyDev, DevicePresenceNotifyMask,
|
||||
(xEvent *) &ev, 1);
|
||||
|
||||
|
@ -937,7 +938,7 @@ RemoveDevice(DeviceIntPtr dev)
|
|||
ev.time = currentTime.milliseconds;
|
||||
ev.devchange = DeviceRemoved;
|
||||
ev.deviceid = deviceid;
|
||||
dummyDev.id = 0;
|
||||
dummyDev.id = MAX_DEVICES;
|
||||
SendEventToAllWindows(&dummyDev, DevicePresenceNotifyMask,
|
||||
(xEvent *) &ev, 1);
|
||||
}
|
||||
|
|
|
@ -66,7 +66,7 @@ SOFTWARE.
|
|||
|
||||
#define MAX_DEVICES 20
|
||||
|
||||
#define EMASKSIZE MAX_DEVICES
|
||||
#define EMASKSIZE MAX_DEVICES + 1
|
||||
|
||||
extern DevPrivateKey CoreDevicePrivateKey;
|
||||
|
||||
|
|
Loading…
Reference in New Issue