XQuartz: Fixed "Multiple Dock Icons"

BAM!
This commit is contained in:
Jeremy Huddleston 2007-12-08 00:13:47 -08:00
parent 6b74c535dc
commit 0502955a2a
5 changed files with 52 additions and 47 deletions

View file

@ -30,6 +30,7 @@ libXquartz_la_SOURCES = \
quartz.c \ quartz.c \
quartzAudio.c \ quartzAudio.c \
quartzCocoa.m \ quartzCocoa.m \
quartzForeground.c \
quartzKeyboard.c \ quartzKeyboard.c \
quartzPasteboard.c \ quartzPasteboard.c \
quartzStartup.c quartzStartup.c
@ -47,5 +48,6 @@ EXTRA_DIST = \
quartzCommon.h \ quartzCommon.h \
quartzCursor.c \ quartzCursor.c \
quartzCursor.h \ quartzCursor.h \
quartzForeground.h \
quartz.h \ quartz.h \
quartzPasteboard.h quartzPasteboard.h

View file

@ -19,7 +19,7 @@
<key>CFBundlePackageType</key> <key>CFBundlePackageType</key>
<string>APPL</string> <string>APPL</string>
<key>CFBundleShortVersionString</key> <key>CFBundleShortVersionString</key>
<string>2.1.0</string> <string>2.1.1</string>
<key>CFBundleSignature</key> <key>CFBundleSignature</key>
<string>x11a</string> <string>x11a</string>
<key>CSResourcesFileMapped</key> <key>CSResourcesFileMapped</key>
@ -33,5 +33,7 @@ Copyright © 2003-2007, X.org Project, Inc.
<string>main</string> <string>main</string>
<key>NSPrincipalClass</key> <key>NSPrincipalClass</key>
<string>X11Application</string> <string>X11Application</string>
<key>LSBackgroundOnly</key>
<true/>
</dict> </dict>
</plist> </plist>

View file

@ -37,34 +37,31 @@ int launcher_main(int argc, char **argv);
int server_main(int argc, char **argv); int server_main(int argc, char **argv);
int 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); fprintf(stderr, "X11.app: main(): argc=%d\n", argc);
int i;
for(i=0; i < argc; 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 */ /* First check if launchd started us */
if(argc == 2 && !strncmp(argv[1], "-launchd", 8)) { for(i=1; i < argc; i++) {
argc--; if(!strncmp(argv[i], "-launchd", 8)) {
argv[1] = argv[0]; launchd = 1;
argv++; break;
fprintf(stderr, "X11.app: main(): launchd called us, running server_main()"); }
return server_main(argc, argv);
} }
/* If we have a process serial number and it's our only arg, act as if /* Start the server */
* the user double clicked the app bundle: launch app_to_run if possible fprintf(stderr, "X11.app: main(): running server_main()");
*/ retval = server_main(argc, argv);
if(argc == 1 || (argc == 2 && !strncmp(argv[1], "-psn_", 5))) { if(retval != 0)
/* Now, try to open a display, if so, run the launcher */ return retval;
display = XOpenDisplay(NULL);
if(display) {
fprintf(stderr, "X11.app: main(): closing the display");
/* Could open the display, start the launcher */
XCloseDisplay(display);
/* If we weren't started by launcd, then run the launcher. */
if(!launchd) {
/* Give 2 seconds for the server to start... /* Give 2 seconds for the server to start...
* TODO: *Really* fix this race condition * TODO: *Really* fix this race condition
*/ */
@ -72,11 +69,7 @@ int main(int argc, char **argv) {
fprintf(stderr, "X11.app: main(): running launcher_main()"); fprintf(stderr, "X11.app: main(): running launcher_main()");
return launcher_main(argc, argv); return launcher_main(argc, argv);
} }
return 0;
} }
/* 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);
}

View file

@ -708,6 +708,11 @@ void ddxInitGlobals(void)
*/ */
int ddxProcessArgument( int argc, char *argv[], int i ) 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" ) ) { if ( !strcmp( argv[i], "-fullscreen" ) ) {
ErrorF( "Running full screen in parallel with Mac OS X Quartz window server.\n" ); ErrorF( "Running full screen in parallel with Mac OS X Quartz window server.\n" );
return 1; return 1;

View file

@ -34,6 +34,7 @@
#include <fcntl.h> #include <fcntl.h>
#include <unistd.h> #include <unistd.h>
#include <CoreFoundation/CoreFoundation.h> #include <CoreFoundation/CoreFoundation.h>
#include "quartzForeground.h"
#include "quartzCommon.h" #include "quartzCommon.h"
#include "darwin.h" #include "darwin.h"
#include "quartz.h" #include "quartz.h"
@ -76,6 +77,8 @@ void DarwinHandleGUI(
int i; int i;
int fd[2]; int fd[2];
QuartzMoveToForeground();
if (been_here) { if (been_here) {
return; return;
} }