xserver: Branch 'master' - 2 commits
Peter Hutterer
whot at kemper.freedesktop.org
Wed Jun 25 22:59:40 PDT 2008
Xi/selectev.c | 4 ++--
dix/devices.c | 7 ++++---
dix/events.c | 2 +-
include/inputstr.h | 2 +-
4 files changed, 8 insertions(+), 7 deletions(-)
New commits:
commit 15e4b6c57484b6afb790c7dc1db9f529ba2219cf
Author: Peter Hutterer <peter at cs.unisa.edu.au>
Date: Tue Jun 24 13:46:40 2008 +0930
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.
diff --git a/Xi/selectev.c b/Xi/selectev.c
index d3670ab..53d8f74 100644
--- a/Xi/selectev.c
+++ b/Xi/selectev.c
@@ -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);
diff --git a/dix/devices.c b/dix/devices.c
index 91a43f3..0a68c0e 100644
--- a/dix/devices.c
+++ b/dix/devices.c
@@ -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);
}
diff --git a/include/inputstr.h b/include/inputstr.h
index 4c7ec2e..e5de6fc 100644
--- a/include/inputstr.h
+++ b/include/inputstr.h
@@ -66,7 +66,7 @@ SOFTWARE.
#define MAX_DEVICES 20
-#define EMASKSIZE MAX_DEVICES
+#define EMASKSIZE MAX_DEVICES + 1
extern DevPrivateKey CoreDevicePrivateKey;
commit f0c56ffd980db19bea271aeebf118bd931f6f40d
Author: Peter Hutterer <peter at cs.unisa.edu.au>
Date: Tue Jun 24 12:58:49 2008 +0930
dix: don't dereference dev->key if it doesn't exist.
This may happen if we check for a passive grab on a floating pointer device.
diff --git a/dix/events.c b/dix/events.c
index f6309f2..a4deaaa 100644
--- a/dix/events.c
+++ b/dix/events.c
@@ -3389,7 +3389,7 @@ CheckPassiveGrabsOnWindow(
else
gdev = device;
}
- if (gdev)
+ if (gdev && gdev->key)
xkbi= gdev->key->xkbInfo;
#endif
tempGrab.modifierDevice = grab->modifierDevice;
More information about the xorg-commit
mailing list