Xquartz: Xquartz stub now can send Mach IPC to start the server.

(cherry picked from commit 55a3bca8ea42f8677897f94bf0a429bdc08c6696)
This commit is contained in:
Jeremy Huddleston 2008-05-14 01:33:43 -07:00
parent 93c082a060
commit adc62f62b9
3 changed files with 10 additions and 5 deletions

View File

@ -1,6 +1,7 @@
AM_CPPFLAGS = \
-DBUILD_DATE=\"$(BUILD_DATE)\" \
-DXSERVER_VERSION=\"$(VERSION)\"
# -DNEW_LAUNCH_METHOD -DNEW_LAUNCH_METHOD_2
x11appdir = $(APPLE_APPLICATIONS_DIR)/X11.app/Contents/MacOS
x11app_PROGRAMS = X11

View File

@ -165,10 +165,11 @@ int main(int argc, char **argv, char **envp) {
mach_port_t mp;
kern_return_t kr;
fprintf(stderr, "X11.app: main(): argc=%d\n", argc);
for(i=1; i < argc; i++) {
fprintf(stderr, "\targv[%u] = %s\n", (unsigned)i, argv[i]);
if(!strcmp(argv[i], "--listenonly")) {
listenOnly = TRUE;
break;
}
}
@ -221,10 +222,12 @@ int main(int argc, char **argv, char **envp) {
const char *s;
size_t i;
#ifndef NEW_LAUNCH_METHOD
fprintf(stderr, "X11.app: main(): argc=%d\n", argc);
for(i=0; i < argc; i++) {
fprintf(stderr, "\targv[%u] = %s\n", (unsigned)i, argv[i]);
}
#endif
/* Take care of the case where we're called like a normal DDX */
if(argc > 1 && argv[1][0] == ':') {

View File

@ -115,6 +115,7 @@ int main(int argc, char **argv, char **envp) {
mach_port_t mp;
string_array_t newenvp;
string_array_t newargv;
size_t i;
#endif
if(argc == 2 && !strcmp(argv[1], "-version")) {
@ -127,7 +128,6 @@ int main(int argc, char **argv, char **envp) {
#ifdef NEW_LAUNCH_METHOD_2
kr = bootstrap_look_up(bootstrap_port, SERVER_BOOTSTRAP_NAME, &mp);
if(kr != KERN_SUCCESS) {
int i;
set_x11_path();
/* This forking is ugly and will be cleaned up later */
@ -142,19 +142,20 @@ int main(int argc, char **argv, char **envp) {
_argv[0] = x11_path;
_argv[1] = "--listenonly";
_argv[2] = NULL;
fprintf(stderr, "Starting X server: %s --listenonly\n", x11_path);
return execvp(x11_path, _argv);
}
/* Try connecting for 10 seconds */
for(i=0; i < 20; i++) {
usleep(500);
for(i=0; i < 40; i++) {
usleep(250000);
kr = bootstrap_look_up(bootstrap_port, SERVER_BOOTSTRAP_NAME, &mp);
if(kr == KERN_SUCCESS)
break;
}
if(kr != KERN_SUCCESS) {
fprintf(stderr, "bootstrap_look_up(): %s\n", bootstrap_strerror(kr));
fprintf(stderr, "bootstrap_look_up(): Timed out: %s\n", bootstrap_strerror(kr));
return EXIT_FAILURE;
}
}