From ea40fcf4344c6e918d3be34354528940b05a70f3 Mon Sep 17 00:00:00 2001 From: Jeremy Huddleston Date: Wed, 4 Jun 2008 11:18:52 -0700 Subject: XQuartz: Fork for trigger (cherry picked from commit dd0f8a0f59593d7831fe09a2a086fcd57c84910e) --- hw/xquartz/mach-startup/bundle-main.c | 26 +++----------------------- 1 file changed, 3 insertions(+), 23 deletions(-) diff --git a/hw/xquartz/mach-startup/bundle-main.c b/hw/xquartz/mach-startup/bundle-main.c index 943ec5454..67c338f21 100644 --- a/hw/xquartz/mach-startup/bundle-main.c +++ b/hw/xquartz/mach-startup/bundle-main.c @@ -79,12 +79,6 @@ static pthread_t create_thread(void *func, void *arg) { } #ifdef NEW_LAUNCH_METHOD -struct arg { - int argc; - char **argv; - char **envp; -}; - /*** Mach-O IPC Stuffs ***/ union MaxMsgSize { @@ -368,12 +362,6 @@ int main(int argc, char **argv, char **envp) { } #ifdef NEW_LAUNCH_METHOD -static void startup_trigger_thread(void *arg) { - struct arg args = *((struct arg *)arg); - free(arg); - startup_trigger(args.argc, args.argv, args.envp); -} - /*** Main ***/ int main(int argc, char **argv, char **envp) { Bool listenOnly = FALSE; @@ -400,21 +388,13 @@ int main(int argc, char **argv, char **envp) { * thread handle it. */ if(!listenOnly) { - struct arg *args = (struct arg*)malloc(sizeof(struct arg)); - if(!args) { - fprintf(stderr, "Memory allocation error.\n"); - return EXIT_FAILURE; + if(fork() == 0) { + return startup_trigger(argc, argv, envp); } - - args->argc = argc; - args->argv = argv; - args->envp = envp; - - create_thread(startup_trigger_thread, args); } /* Main event loop */ - fprintf(stderr, "Statrup coming...\n"); + fprintf(stderr, "Waiting for startup parameters via Mach IPC.\n"); kr = mach_msg_server(mach_startup_server, mxmsgsz, mp, 0); if (kr != KERN_SUCCESS) { fprintf(stderr, "org.x.X11(mp): %s\n", mach_error_string(kr)); -- cgit v1.2.3