mirror of
https://github.com/X11Libre/xserver.git
synced 2026-10-18 00:42:40 +00:00
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:
commit
e8777a91f3
280 changed files with 4649 additions and 5825 deletions
24
mi/mieq.c
24
mi/mieq.c
|
|
@ -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 ||
|
||||
|
|
|
|||
Loading…
Reference in a new issue