From 9e70a3cf58c205948f6a415e203d825e9b660d9d Mon Sep 17 00:00:00 2001 From: Jeremy Huddleston Date: Wed, 3 Sep 2008 09:33:39 -0700 Subject: [PATCH] mieqProcessInputEvents: Check custom event handlers first. --- mi/mieq.c | 29 +++++++++++++---------------- 1 file changed, 13 insertions(+), 16 deletions(-) diff --git a/mi/mieq.c b/mi/mieq.c index e7e16ab5a..48628fc89 100644 --- a/mi/mieq.c +++ b/mi/mieq.c @@ -315,10 +315,21 @@ mieqProcessInputEvents(void) #endif e = &miEventQueue.events[miEventQueue.head]; - /* Assumption - screen switching can only occur on motion events. */ miEventQueue.head = (miEventQueue.head + 1) % QUEUE_SIZE; - if (e->pScreen != DequeueScreen(e->pDev)) { + if ((handler = miEventQueue.handlers[e->events->event->u.u.type])) + { + /* If someone's registered a custom event handler, let them + * steal it. */ + handler(DequeueScreen(e->pDev)->myNum, e->events->event, + e->pDev, e->nevents); + if (!e->pDev->isMaster && e->pDev->u.master) + { + handler(DequeueScreen(e->pDev->u.master)->myNum, + e->events->event, e->pDev->u.master, e->nevents); + } + } else if (e->pScreen != DequeueScreen(e->pDev)) { + /* Assumption - screen switching can only occur on motion events. */ DequeueScreen(e->pDev) = e->pScreen; x = e->events[0].event->u.keyButtonPointer.rootX; y = e->events[0].event->u.keyButtonPointer.rootY; @@ -353,19 +364,6 @@ mieqProcessInputEvents(void) } else master_event = NULL; - /* If someone's registered a custom event handler, let them - * steal it. */ - if ((handler = miEventQueue.handlers[e->events->event->u.u.type])) - { - handler(DequeueScreen(e->pDev)->myNum, e->events->event, - e->pDev, e->nevents); - if (!e->pDev->isMaster && e->pDev->u.master) - { - handler(DequeueScreen(e->pDev->u.master)->myNum, - e->events->event, e->pDev->u.master, e->nevents); - } - } else - { /* process slave first, then master */ e->pDev->public.processInputProc(event, e->pDev, e->nevents); @@ -374,7 +372,6 @@ mieqProcessInputEvents(void) e->pDev->u.master->public.processInputProc(master_event, e->pDev->u.master, e->nevents); } - } if (e->nevents > 1) xfree(event);