Merge branch 'master' into mpx

Conflicts:

	Xi/closedev.c
	Xi/exevents.c
	Xi/extinit.c
	Xi/listdev.c
	dix/window.c
	hw/xfree86/common/xf86Xinput.c
	include/extinit.h
	mi/mipointer.c
This commit is contained in:
Peter Hutterer 2007-04-02 15:36:26 +09:30
commit e8777a91f3
280 changed files with 4649 additions and 5825 deletions

View file

@ -81,6 +81,7 @@ typedef struct _EventQueue {
EventRec events[QUEUE_SIZE]; /* static allocation for signals */
ScreenPtr pEnqueueScreen; /* screen events are being delivered to */
ScreenPtr pDequeueScreen; /* screen events are being dispatched to */
mieqHandler handlers[128]; /* custom event handler */
} EventQueueRec, *EventQueuePtr;
static EventQueueRec miEventQueue;
@ -88,11 +89,15 @@ static EventQueueRec miEventQueue;
Bool
mieqInit()
{
int i;
miEventQueue.head = miEventQueue.tail = 0;
miEventQueue.lastEventTime = GetTimeInMillis ();
miEventQueue.lastMotion = FALSE;
miEventQueue.pEnqueueScreen = screenInfo.screens[0];
miEventQueue.pDequeueScreen = miEventQueue.pEnqueueScreen;
for (i = 0; i < 128; i++)
miEventQueue.handlers[i] = NULL;
SetInputCheck(&miEventQueue.head, &miEventQueue.tail);
return TRUE;
}
@ -188,6 +193,16 @@ mieqSwitchScreen(ScreenPtr pScreen, Bool fromDIX)
miEventQueue.pDequeueScreen = pScreen;
}
void
mieqSetHandler(int event, mieqHandler handler)
{
if (handler && miEventQueue.handlers[event])
ErrorF("mieq: warning: overriding existing handler %p with %p for "
"event %d\n", miEventQueue.handlers[event], handler, event);
miEventQueue.handlers[event] = handler;
}
/* Call this from ProcessInputEvents(). */
void
mieqProcessInputEvents()
@ -225,6 +240,15 @@ mieqProcessInputEvents()
else
++miEventQueue.head;
/* If someone's registered a custom event handler, let them
* steal it. */
if (miEventQueue.handlers[e->event->u.u.type]) {
miEventQueue.handlers[e->event->u.u.type](miEventQueue.pDequeueScreen->myNum,
e->event, dev,
e->nevents);
return;
}
/* If this is a core event, make sure our keymap, et al, is
* changed to suit. */
if (e->event[0].u.u.type == KeyPress ||