From 6f17500de124d4bc8fb7be50937970a04c8bf53c Mon Sep 17 00:00:00 2001 From: David Reveman Date: Sat, 2 Aug 2008 08:39:11 -0400 Subject: [PATCH] Make dmxBEDispatch reentrant. --- hw/dmx/dmxscrinit.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/hw/dmx/dmxscrinit.c b/hw/dmx/dmxscrinit.c index 2a2f5f024..bfbd3771a 100644 --- a/hw/dmx/dmxscrinit.c +++ b/hw/dmx/dmxscrinit.c @@ -777,7 +777,7 @@ dmxBEDispatch (ScreenPtr pScreen) xcb_generic_error_t *error; void *reply; - dmxScreen->inDispatch = TRUE; + dmxScreen->inDispatch++; while ((event = xcb_poll_for_event (dmxScreen->connection))) { @@ -813,6 +813,10 @@ dmxBEDispatch (ScreenPtr pScreen) if (reply) rep = (xcb_generic_reply_t *) reply; + dmxScreen->request.head = head->next; + if (!dmxScreen->request.head) + dmxScreen->request.tail = &dmxScreen->request.head; + if (!dmxScreenReplyCheckSync (pScreen, head->sequence, rep) && !dmxScreenReplyCheckInput (pScreen, head->sequence, rep)) { @@ -828,14 +832,10 @@ dmxBEDispatch (ScreenPtr pScreen) if (error) free (error); - dmxScreen->request.head = head->next; - if (!dmxScreen->request.head) - dmxScreen->request.tail = &dmxScreen->request.head; - free (head); } - dmxScreen->inDispatch = FALSE; + dmxScreen->inDispatch--; } static void