xserver: Branch 'master' - 2 commits

Jeremy Huddleston jeremyhu at kemper.freedesktop.org
Wed Nov 19 10:55:39 PST 2008


 mi/mieq.c |   27 +++++++++++++--------------
 1 file changed, 13 insertions(+), 14 deletions(-)

New commits:
commit 19aac4274bbac55ce944acfaf3274a4403fe392e
Author: Jeremy Huddleston <jeremyhu at freedesktop.org>
Date:   Wed Nov 19 10:55:29 2008 -0800

    mi: Push screen-saver/DPMS handling to after the EQ pop operation.
    
    This way we on't need to hold the mutex during the dixSaveScreens() call.
    
    Signed-off-by: Jeremy Huddleston <jeremyhu at apple.com>
    Signed-off-by: Tiago Vignatti <vignatti at c3sl.ufpr.br>
    Signed-off-by: Peter Hutterer <peter.hutterer at redhat.com>

diff --git a/mi/mieq.c b/mi/mieq.c
index 7437966..82f0c66 100644
--- a/mi/mieq.c
+++ b/mi/mieq.c
@@ -314,16 +314,6 @@ mieqProcessInputEvents(void)
                  master = NULL;
 
     while (miEventQueue.head != miEventQueue.tail) {
-        if (screenIsSaved == SCREEN_SAVER_ON)
-            dixSaveScreens (serverClient, SCREEN_SAVER_OFF, ScreenSaverReset);
-#ifdef DPMSExtension
-        else if (DPMSPowerLevel != DPMSModeOn)
-            SetScreenSaverTimer();
-
-        if (DPMSPowerLevel != DPMSModeOn)
-            DPMSSet(serverClient, DPMSModeOn);
-#endif
-
         e = &miEventQueue.events[miEventQueue.head];
 
         /* GenericEvents always have nevents == 1 */
@@ -346,6 +336,16 @@ mieqProcessInputEvents(void)
         type    = event->u.u.type;
         master  = (!dev->isMaster && dev->u.master) ? dev->u.master : NULL;
 
+        if (screenIsSaved == SCREEN_SAVER_ON)
+            dixSaveScreens (serverClient, SCREEN_SAVER_OFF, ScreenSaverReset);
+#ifdef DPMSExtension
+        else if (DPMSPowerLevel != DPMSModeOn)
+            SetScreenSaverTimer();
+
+        if (DPMSPowerLevel != DPMSModeOn)
+            DPMSSet(serverClient, DPMSModeOn);
+#endif
+
         /* Custom event handler */
         handler = miEventQueue.handlers[type];
 
commit 56d1793c435abbaababab031860f1160f09fff06
Author: Jeremy Huddleston <jeremyhu at freedesktop.org>
Date:   Wed Nov 19 10:54:57 2008 -0800

    mi: Only increment tail (push) when the event data is actually in the queue
    
    Signed-off-by: Jeremy Huddleston <jeremyhu at apple.com>
    Signed-off-by: Tiago Vignatti <vignatti at c3sl.ufpr.br>
    Signed-off-by: Peter Hutterer <peter.hutterer at redhat.com>

diff --git a/mi/mieq.c b/mi/mieq.c
index 52bb841..7437966 100644
--- a/mi/mieq.c
+++ b/mi/mieq.c
@@ -122,7 +122,7 @@ mieqResizeEvents(int min_size)
 void
 mieqEnqueue(DeviceIntPtr pDev, xEvent *e)
 {
-    unsigned int           oldtail = miEventQueue.tail, newtail;
+    unsigned int           oldtail = miEventQueue.tail;
     EventListPtr           evt;
     int                    isMotion = 0;
     int                    evlen;
@@ -170,11 +170,10 @@ mieqEnqueue(DeviceIntPtr pDev, xEvent *e)
     }
     else {
 	static int stuck = 0;
-	newtail = (oldtail + 1) % QUEUE_SIZE;
 	/* Toss events which come in late.  Usually this means your server's
          * stuck in an infinite loop somewhere, but SIGIO is still getting
          * handled. */
-	if (newtail == miEventQueue.head) {
+	if (((oldtail + 1) % QUEUE_SIZE) == miEventQueue.head) {
             ErrorF("[mi] EQ overflowing. The server is probably stuck "
                    "in an infinite loop.\n");
 	    if (!stuck) {
@@ -184,7 +183,6 @@ mieqEnqueue(DeviceIntPtr pDev, xEvent *e)
 	    return;
         }
 	stuck = 0;
-	miEventQueue.tail = newtail;
     }
 
     evlen = sizeof(xEvent);
@@ -218,6 +216,7 @@ mieqEnqueue(DeviceIntPtr pDev, xEvent *e)
     miEventQueue.events[oldtail].pDev = pDev;
 
     miEventQueue.lastMotion = isMotion;
+    miEventQueue.tail = (oldtail + 1) % QUEUE_SIZE;
 }
 
 void


More information about the xorg-commit mailing list