diff --git a/mi/mieq.c b/mi/mieq.c index 60c2a7583..6559158f6 100644 --- a/mi/mieq.c +++ b/mi/mieq.c @@ -237,6 +237,14 @@ mieqProcessInputEvents(void) pthread_mutex_lock(&miEventQueueMutex); #endif while (miEventQueue.head != miEventQueue.tail) { + memcpy(&e, &miEventQueue.events[miEventQueue.head], sizeof(EventRec)); + handler = miEventQueue.handlers[e.event[0].u.u.type]; + miEventQueue.head = (miEventQueue.head + 1) % QUEUE_SIZE; + +#ifdef XQUARTZ + pthread_mutex_unlock(&miEventQueueMutex); +#endif + if (screenIsSaved == SCREEN_SAVER_ON) SaveScreens (SCREEN_SAVER_OFF, ScreenSaverReset); #ifdef DPMSExtension @@ -247,14 +255,6 @@ mieqProcessInputEvents(void) DPMSSet(DPMSModeOn); #endif - memcpy(&e, &miEventQueue.events[miEventQueue.head], sizeof(EventRec)); - handler = miEventQueue.handlers[e.event[0].u.u.type]; - miEventQueue.head = (miEventQueue.head + 1) % QUEUE_SIZE; - -#ifdef XQUARTZ - pthread_mutex_unlock(&miEventQueueMutex); -#endif - if (handler) { /* If someone's registered a custom event handler, let them * steal it. */