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

Jeremy Huddleston jeremyhu at kemper.freedesktop.org
Sat Dec 8 00:16:43 PST 2007


 hw/xquartz/Makefile.am          |    2 +
 hw/xquartz/bundle/Info.plist    |   30 +++++++++++----------
 hw/xquartz/bundle/bundle-main.c |   57 +++++++++++++++++-----------------------
 hw/xquartz/darwin.c             |    5 +++
 hw/xquartz/quartzStartup.c      |    3 ++
 5 files changed, 51 insertions(+), 46 deletions(-)

New commits:
commit 0502955a2af487b51bf22916ac02e497c2d96aba
Author: Jeremy Huddleston <jeremy at yuffie.local>
Date:   Sat Dec 8 00:13:47 2007 -0800

    XQuartz: Fixed "Multiple Dock Icons"
    BAM!

diff --git a/hw/xquartz/Makefile.am b/hw/xquartz/Makefile.am
index 66d1b9b..46b6d8e 100644
--- a/hw/xquartz/Makefile.am
+++ b/hw/xquartz/Makefile.am
@@ -30,6 +30,7 @@ libXquartz_la_SOURCES = \
 	quartz.c \
 	quartzAudio.c \
 	quartzCocoa.m \
+	quartzForeground.c \
 	quartzKeyboard.c \
 	quartzPasteboard.c \
 	quartzStartup.c
@@ -47,5 +48,6 @@ EXTRA_DIST = \
 	quartzCommon.h \
 	quartzCursor.c \
 	quartzCursor.h \
+	quartzForeground.h \
 	quartz.h \
 	quartzPasteboard.h
diff --git a/hw/xquartz/bundle/Info.plist b/hw/xquartz/bundle/Info.plist
index 9437f77..3d07da9 100644
--- a/hw/xquartz/bundle/Info.plist
+++ b/hw/xquartz/bundle/Info.plist
@@ -3,35 +3,37 @@
 <plist version="1.0">
 <dict>
 	<key>CFBundleDevelopmentRegion</key>
-	<string>English</string>
+		<string>English</string>
 	<key>CFBundleExecutable</key>
-	<string>X11</string>
+		<string>X11</string>
 	<key>CFBundleGetInfoString</key>
-	<string>X11</string>
+		<string>X11</string>
 	<key>CFBundleIconFile</key>
-	<string>X11.icns</string>
+		<string>X11.icns</string>
 	<key>CFBundleIdentifier</key>
-	<string>org.x.X11</string>
+		<string>org.x.X11</string>
 	<key>CFBundleInfoDictionaryVersion</key>
-	<string>6.0</string>
+		<string>6.0</string>
 	<key>CFBundleName</key>
-	<string>X11</string>
+		<string>X11</string>
 	<key>CFBundlePackageType</key>
-	<string>APPL</string>
+		<string>APPL</string>
 	<key>CFBundleShortVersionString</key>
-	<string>2.1.0</string>
+		<string>2.1.1</string>
 	<key>CFBundleSignature</key>
-	<string>x11a</string>
+		<string>x11a</string>
 	<key>CSResourcesFileMapped</key>
-	<true/>
+		<true/>
 	<key>NSHumanReadableCopyright</key>
-	<string>Copyright © 2003-2007, Apple Inc.
+		<string>Copyright © 2003-2007, Apple Inc.
 Copyright © 2003, XFree86 Project, Inc.
 Copyright © 2003-2007, X.org Project, Inc.
 </string>
 	<key>NSMainNibFile</key>
-	<string>main</string>
+		<string>main</string>
 	<key>NSPrincipalClass</key>
-	<string>X11Application</string>
+		<string>X11Application</string>
+	<key>LSBackgroundOnly</key>
+		<true/>
 </dict>
 </plist>
diff --git a/hw/xquartz/bundle/bundle-main.c b/hw/xquartz/bundle/bundle-main.c
index 6f9744c..fc64850 100644
--- a/hw/xquartz/bundle/bundle-main.c
+++ b/hw/xquartz/bundle/bundle-main.c
@@ -37,46 +37,39 @@ int launcher_main(int argc, char **argv);
 int server_main(int argc, char **argv);
 
 int main(int argc, char **argv) {
-    Display *display;
-  
+    int launchd = 0;
+    size_t i;
+    int retval;  
+
     fprintf(stderr, "X11.app: main(): argc=%d\n", argc);
-    int i;
     for(i=0; i < argc; i++) {
-        fprintf(stderr, "\targv[%d] = %s\n", i, argv[i]);
+        fprintf(stderr, "\targv[%u] = %s\n", (unsigned)i, argv[i]);
     }
     
     /* First check if launchd started us */
-    if(argc == 2 && !strncmp(argv[1], "-launchd", 8)) {
-        argc--;
-        argv[1] = argv[0];
-        argv++;
-        fprintf(stderr, "X11.app: main(): launchd called us, running server_main()");
-        return server_main(argc, argv);
+    for(i=1; i < argc; i++) {
+        if(!strncmp(argv[i], "-launchd", 8)) {
+            launchd = 1;
+            break;
+        }
     }
 
-    /* If we have a process serial number and it's our only arg, act as if
-     * the user double clicked the app bundle: launch app_to_run if possible
-     */
-    if(argc == 1 || (argc == 2 && !strncmp(argv[1], "-psn_", 5))) {
-        /* Now, try to open a display, if so, run the launcher */
-        display = XOpenDisplay(NULL);
-        if(display) {
-            fprintf(stderr, "X11.app: main(): closing the display");
-            /* Could open the display, start the launcher */
-            XCloseDisplay(display);
+    /* Start the server */
+    fprintf(stderr, "X11.app: main(): running server_main()");
+    retval = server_main(argc, argv);
+    if(retval != 0)
+        return retval;
 
-            /* Give 2 seconds for the server to start... 
-             * TODO: *Really* fix this race condition
-             */
-            usleep(2000);
-            fprintf(stderr, "X11.app: main(): running launcher_main()");
-            return launcher_main(argc, argv);
-        }
+    /* If we weren't started by launcd, then run the launcher. */
+    if(!launchd) {
+        /* Give 2 seconds for the server to start... 
+         * TODO: *Really* fix this race condition
+         */
+        usleep(2000);
+        fprintf(stderr, "X11.app: main(): running launcher_main()");
+        return launcher_main(argc, argv);
     }
 
-    /* Couldn't open the display or we were called with arguments,
-     * just want to start a server.
-     */
-    fprintf(stderr, "X11.app: main(): running server_main()");
-    return server_main(argc, argv);
+    return 0;
 }
+
diff --git a/hw/xquartz/darwin.c b/hw/xquartz/darwin.c
index 3631804..427761c 100644
--- a/hw/xquartz/darwin.c
+++ b/hw/xquartz/darwin.c
@@ -708,6 +708,11 @@ void ddxInitGlobals(void)
  */
 int ddxProcessArgument( int argc, char *argv[], int i )
 {
+    if( !strcmp( argv[i], "-launchd" ) ) {
+        ErrorF( "Launchd command line argument noticed.\n" );
+        return 1;
+    }
+
     if ( !strcmp( argv[i], "-fullscreen" ) ) {
         ErrorF( "Running full screen in parallel with Mac OS X Quartz window server.\n" );
         return 1;
diff --git a/hw/xquartz/quartzStartup.c b/hw/xquartz/quartzStartup.c
index e20c16b..87bcada 100644
--- a/hw/xquartz/quartzStartup.c
+++ b/hw/xquartz/quartzStartup.c
@@ -34,6 +34,7 @@
 #include <fcntl.h>
 #include <unistd.h>
 #include <CoreFoundation/CoreFoundation.h>
+#include "quartzForeground.h"
 #include "quartzCommon.h"
 #include "darwin.h"
 #include "quartz.h"
@@ -76,6 +77,8 @@ void DarwinHandleGUI(
     int         i;
     int         fd[2];
 
+    QuartzMoveToForeground();
+    
     if (been_here) {
         return;
     }


More information about the xorg-commit mailing list