[PATCH 1/3] dix: Use attached master in DeviceChangedEvent
Daniel Martin
consume.noise at gmail.com
Sun Mar 23 07:31:55 PDT 2014
For a DEVCHANGE_KEYBOARD_EVENT the MASTER_KEYBOARD gets choosen in
CreateClassesChangedEvent() to create a DeviceChangedEvent, regardless
of the real attached master.
That doesn't work if the event occured at a XIKeyClass of a slave
pointer as it gets dropped if the attached master is not the same as the
master in the DeviceChangedEvent in ChangeMasterDeviceClasses() and we
never see a DeviceChangedEvent (reason:SlaveSwitch).
(A slave pointer with a XIKeyClass could be Logitech Unifying Device.)
So, don't guess the master upon the DEVCHANGE type and use the attached
master instead.
Signed-off-by: Daniel Martin <consume.noise at gmail.com>
---
dix/getevents.c | 5 +----
1 file changed, 1 insertion(+), 4 deletions(-)
diff --git a/dix/getevents.c b/dix/getevents.c
index ffa89fa..bab5ac3 100644
--- a/dix/getevents.c
+++ b/dix/getevents.c
@@ -706,10 +706,7 @@ UpdateFromMaster(InternalEvent *events, DeviceIntPtr dev, int type,
{
DeviceIntPtr master;
- master =
- GetMaster(dev,
- (type & DEVCHANGE_POINTER_EVENT) ? MASTER_POINTER :
- MASTER_KEYBOARD);
+ master = GetMaster(dev, MASTER_ATTACHED);
if (master && master->last.slave != dev) {
CreateClassesChangedEvent(events, master, dev,
--
1.9.1
More information about the xorg-devel
mailing list