aboutsummaryrefslogtreecommitdiff
path: root/xorg-server/Xi/exevents.c
diff options
context:
space:
mode:
authormarha <marha@users.sourceforge.net>2010-01-07 14:53:48 +0000
committermarha <marha@users.sourceforge.net>2010-01-07 14:53:48 +0000
commitd5ac51b006c039894e4e35102a8e182d21a52efc (patch)
treec01c6a3e0155d887b99d15962c4e3cfeee3746ad /xorg-server/Xi/exevents.c
parente76fe637326278601890dd11749ea2c40a26f550 (diff)
parent20f59c125afe31a8bdb0ae6a74dd408e5fa00237 (diff)
downloadvcxsrv-d5ac51b006c039894e4e35102a8e182d21a52efc.tar.gz
vcxsrv-d5ac51b006c039894e4e35102a8e182d21a52efc.tar.bz2
vcxsrv-d5ac51b006c039894e4e35102a8e182d21a52efc.zip
svn merge ^/branches/released
(Merged in record patch)
Diffstat (limited to 'xorg-server/Xi/exevents.c')
-rw-r--r--xorg-server/Xi/exevents.c37
1 files changed, 30 insertions, 7 deletions
diff --git a/xorg-server/Xi/exevents.c b/xorg-server/Xi/exevents.c
index 8d56aa270..140a353cc 100644
--- a/xorg-server/Xi/exevents.c
+++ b/xorg-server/Xi/exevents.c
@@ -1033,16 +1033,39 @@ ProcessOtherEvent(InternalEvent *ev, DeviceIntPtr device)
break;
}
-#if 0
- /* FIXME: I'm broken. Please fix me. Thanks */
if (DeviceEventCallback) {
- DeviceEventInfoRec eventinfo;
+ DeviceEventInfoRec eventinfo;
+ SpritePtr pSprite = device->spriteInfo->sprite;
+ xEvent *xi_events = NULL;
+ int count;
+
+ /* see comment in EnqueueEvents regarding the next three lines */
+ if (ev->any.type == ET_Motion)
+ ev->device_event.root =
+ WindowTable[pSprite->hotPhys.pScreen->myNum]->drawable.id;
+
+ /* SDs send XI events only. MDs send both an XI event and a core
+ * event.
+ */
+ EventToXI(ev, &xi_events, &count);
+
+ eventinfo.events = (xEventPtr)xi_events;
+ eventinfo.count = count;
+ ErrorF("POE xi root is %lx\n", xi_events->u.keyButtonPointer.root);
+ CallCallbacks(&DeviceEventCallback, (pointer) & eventinfo);
+ xfree(xi_events);
+
+ if (IsMaster(device))
+ {
+ xEvent core;
+ EventToCore(ev, &core);
+ eventinfo.events = (xEventPtr)&core;
+ eventinfo.count = 1;
+ ErrorF("POE core root is %lx\n", core.u.keyButtonPointer.root);
+ CallCallbacks(&DeviceEventCallback, (pointer) & eventinfo);
+ }
- eventinfo.events = (xEventPtr) xE;
- eventinfo.count = count;
- CallCallbacks(&DeviceEventCallback, (pointer) & eventinfo);
}
-#endif
grab = device->deviceGrab.grab;
switch(event->type)