xserver: Branch 'xorg-server-1.5-apple' - 2 commits

Jeremy Huddleston jeremyhu at kemper.freedesktop.org
Thu Nov 6 14:49:58 PST 2008


 hw/xquartz/bundle/Info.plist |    6 ++---
 mi/mieq.c                    |   50 +++++++++++++++++++++++++++----------------
 2 files changed, 35 insertions(+), 21 deletions(-)

New commits:
commit 43f3dfbbd69da6f8acd4d5c09db170b76fd82411
Author: Jeremy Huddleston <jeremyhu at freedesktop.org>
Date:   Thu Nov 6 14:41:55 2008 -0800

    XQuartz: Make LS parse our version properly... it didn't like our CFBundleVersion
    (cherry picked from commit 980df1b4ff7d4dab9dc1462dc086542265b1fb1b)

diff --git a/hw/xquartz/bundle/Info.plist b/hw/xquartz/bundle/Info.plist
index 208f8e5..ae3687e 100644
--- a/hw/xquartz/bundle/Info.plist
+++ b/hw/xquartz/bundle/Info.plist
@@ -19,11 +19,11 @@
 	<key>CFBundlePackageType</key>
 		<string>APPL</string>
 	<key>CFBundleShortVersionString</key>
-		<string>2.3.1.91.3</string>
+		<string>2.3.2_beta3</string>
 	<key>CFBundleVersion</key>
-		<string>2.3.1.91.3</string>
+		<string>2.3.2</string>
 	<key>CFBundleVersionString</key>
-		<string>2.3.1.91.3</string>
+		<string>2.3.2_beta3</string>
 	<key>CFBundleSignature</key>
 		<string>x11a</string>
 	<key>CSResourcesFileMapped</key>
commit 90999af8826e641c7083f98b2fe625f338605b7e
Author: Jeremy Huddleston <jeremyhu at freedesktop.org>
Date:   Thu Nov 6 14:49:32 2008 -0800

    mi: Re-added locking to mieqProcessInputEvents
    
    because mieqEnqueue can thrash it still...
    (cherry picked from commit 69cc358026d092826de45cdafde651ad7783e405)

diff --git a/mi/mieq.c b/mi/mieq.c
index 74133ed..a0a3b8d 100644
--- a/mi/mieq.c
+++ b/mi/mieq.c
@@ -113,7 +113,7 @@ mieqEnqueue(DeviceIntPtr pDev, xEvent *e)
 #ifdef XQUARTZ
     pthread_mutex_lock(&miEventQueueMutex);
 #endif
-    unsigned int           oldtail = miEventQueue.tail, newtail;
+    unsigned int           oldtail = miEventQueue.tail;
     int                    isMotion = 0;
     deviceValuator         *v = (deviceValuator *) e;
     EventPtr               laste = &miEventQueue.events[(oldtail - 1) %
@@ -159,30 +159,29 @@ mieqEnqueue(DeviceIntPtr pDev, xEvent *e)
 
     if (isMotion && isMotion == miEventQueue.lastMotion &&
         oldtail != miEventQueue.head) {
-	oldtail = (oldtail - 1) % QUEUE_SIZE;
+        oldtail = (oldtail - 1) % QUEUE_SIZE;
     }
     else {
-	static int stuck = 0;
-	newtail = (oldtail + 1) % QUEUE_SIZE;
-	/* Toss events which come in late.  Usually this means your server's
+        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) {
-		xorg_backtrace();
-		stuck = 1;
-	    }
+            if (!stuck) {
+                xorg_backtrace();
+                stuck = 1;
+            }
 #ifdef XQUARTZ
             pthread_mutex_unlock(&miEventQueueMutex);
 #endif
-	    return;
+            return;
         }
-	stuck = 0;
-	miEventQueue.tail = newtail;
+        stuck = 0;
     }
-
+    
     memcpy(&(miEventQueue.events[oldtail].event[0]), e, sizeof(xEvent));
     miEventQueue.events[oldtail].nevents = 1;
 
@@ -199,6 +198,7 @@ mieqEnqueue(DeviceIntPtr pDev, xEvent *e)
     miEventQueue.events[oldtail].pDev = pDev;
 
     miEventQueue.lastMotion = isMotion;
+	miEventQueue.tail = (oldtail + 1) % QUEUE_SIZE;
 #ifdef XQUARTZ
     pthread_mutex_unlock(&miEventQueueMutex);
 #endif
@@ -238,10 +238,14 @@ mieqSetHandler(int event, mieqHandler handler)
 void
 mieqProcessInputEvents(void)
 {
+    mieqHandler handler;
     EventRec e;
     int x = 0, y = 0;
     DeviceIntPtr dev = NULL;
 
+#ifdef XQUARTZ
+    pthread_mutex_lock(&miEventQueueMutex);
+#endif
     while (miEventQueue.head != miEventQueue.tail) {
         if (screenIsSaved == SCREEN_SAVER_ON)
             dixSaveScreens (serverClient, SCREEN_SAVER_OFF, ScreenSaverReset);
@@ -254,14 +258,17 @@ mieqProcessInputEvents(void)
 #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;
 
-        if (miEventQueue.handlers[e.event[0].u.u.type]) {
+#ifdef XQUARTZ
+        pthread_mutex_unlock(&miEventQueueMutex);
+#endif
+        
+        if (handler) {
             /* If someone's registered a custom event handler, let them
              * steal it. */
-            miEventQueue.handlers[e.event[0].u.u.type](e.pScreen->myNum,
-                                                       e.event, e.pDev,
-                                                       e.nevents);
+            handler(e.pScreen->myNum, e.event, e.pDev, e.nevents);
         }
         else if (e.pScreen != miEventQueue.pDequeueScreen) {
             /* Assumption - screen switching can only occur on motion events. */
@@ -290,5 +297,12 @@ mieqProcessInputEvents(void)
 
             dev->public.processInputProc(e.event, dev, e.nevents);
         }
+
+#ifdef XQUARTZ
+        pthread_mutex_lock(&miEventQueueMutex);
+#endif
     }
+#ifdef XQUARTZ
+    pthread_mutex_unlock(&miEventQueueMutex);
+#endif
 }


More information about the xorg-commit mailing list