summaryrefslogtreecommitdiff
path: root/dix/devices.c
diff options
context:
space:
mode:
authorPeter Hutterer <peter.hutterer@who-t.net>2009-05-20 10:55:03 +1000
committerPeter Hutterer <peter.hutterer@who-t.net>2009-05-22 15:44:57 +1000
commitebe45e1a72a81ad22413e5d0514869b3e45a69b7 (patch)
tree3932faf98c84b604e123b7e12a00cce52a4c4bb0 /dix/devices.c
parentbc63c8a4570c989f19a036965854bceb9800ce19 (diff)
input: introduce partial class copying depending on the event.
Copying all classes into the master device has drawbacks for hybrid devices (devices that are both mice and keyboards). If such a device posts an event, it's key classes are moved into the VCP. The key event itself is unaffected by keyboard grabs and the like. Partial class copying copies depending on the event and copies the classes into the right master device (i.e. the VCK for key events, the VCP for pointer events). Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Diffstat (limited to 'dix/devices.c')
-rw-r--r--dix/devices.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/dix/devices.c b/dix/devices.c
index c94e93518..6266b63f5 100644
--- a/dix/devices.c
+++ b/dix/devices.c
@@ -2320,7 +2320,8 @@ AttachDevice(ClientPtr client, DeviceIntPtr dev, DeviceIntPtr master)
/* XXX: reset master back to defaults */
event = InitEventList(1);
SetMinimumEventSize(event, 1, sizeof(DeviceChangedEvent));
- CreateClassesChangedEvent(event, oldmaster, oldmaster);
+ CreateClassesChangedEvent(event, oldmaster, oldmaster,
+ DEVCHANGE_POINTER_EVENT | DEVCHANGE_KEYBOARD_EVENT);
XISendDeviceChangedEvent(oldmaster, oldmaster,
(DeviceChangedEvent*)event->event);
FreeEventList(event, 1);