xserver: Branch 'xorg-server-1.4-apple'

Jeremy Huddleston jeremyhu at kemper.freedesktop.org
Wed Dec 31 14:12:50 PST 2008


 hw/xquartz/X11Application.m |   16 ++++++++++++++--
 1 file changed, 14 insertions(+), 2 deletions(-)

New commits:
commit 9eec2d3e3b4da2427a1c3a26538d36c4e8a7f1ed
Author: Jeremy Huddleston <jeremyhu at freedesktop.org>
Date:   Wed Dec 31 14:11:47 2008 -0800

    XQuartz: Ignore mach IPC until the appkit thread is ready to avoid possible deadlock (this can be reversed once pbproxy uses server API)

diff --git a/hw/xquartz/X11Application.m b/hw/xquartz/X11Application.m
index 50212dc..8530118 100644
--- a/hw/xquartz/X11Application.m
+++ b/hw/xquartz/X11Application.m
@@ -69,6 +69,8 @@ static NSEventType keyState[NUM_KEYCODES];
 int X11EnableKeyEquivalents = TRUE, quartzFullscreenMenu = FALSE;
 int quartzHasRoot = FALSE, quartzEnableRootless = TRUE;
 
+static Bool appkitReady = FALSE;
+
 extern Bool noTestExtensions;
 
 #if MAC_OS_X_VERSION_MIN_REQUIRED >= 1050
@@ -121,7 +123,15 @@ static void init_ports (void) {
 static void message_kit_thread (SEL selector, NSObject *arg) {
     message msg;
     kern_return_t r;
-	
+
+    if(!appkitReady) {
+#if 0
+        ErrorF("%s: mach_msg failed: Appkit thread not ready\n", __FUNCTION__);
+        spewCallStack();
+#endif
+        return;
+    }
+
     msg.hdr.msgh_bits = MACH_MSGH_BITS (MACH_MSG_TYPE_MAKE_SEND, 0);
     msg.hdr.msgh_size = sizeof (msg);
     msg.hdr.msgh_remote_port = _port;
@@ -926,7 +936,9 @@ void X11ApplicationMain (int argc, char **argv, char **envp) {
     
     if(!xpbproxy_init())
         fprintf(stderr, "Error initializing xpbproxy\n");
-           
+
+    appkitReady = TRUE;
+
     [NSApp run];
     /* not reached */
 }


More information about the xorg-commit mailing list