From 20f59c125afe31a8bdb0ae6a74dd408e5fa00237 Mon Sep 17 00:00:00 2001 From: marha Date: Thu, 7 Jan 2010 14:43:29 +0000 Subject: Added patches for bug http://bugs.freedesktop.org/show_bug.cgi?id=20500 0001-dix-EventToCore-needs-to-copy-the-root-window-too.patch 0001-Re-enable-the-RECORD-extension.patch --- xorg-server/Xi/exevents.c | 37 ++++++++++++++++++++++++++++++------- 1 file changed, 30 insertions(+), 7 deletions(-) (limited to 'xorg-server/Xi') diff --git a/xorg-server/Xi/exevents.c b/xorg-server/Xi/exevents.c index cb2452bb8..5f8e1fac5 100644 --- a/xorg-server/Xi/exevents.c +++ b/xorg-server/Xi/exevents.c @@ -1031,16 +1031,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) -- cgit v1.2.3