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