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