diff --git a/common/JackAPIWrapper.cpp b/common/JackAPIWrapper.cpp index c9173fe8..c626e1f2 100644 --- a/common/JackAPIWrapper.cpp +++ b/common/JackAPIWrapper.cpp @@ -232,6 +232,18 @@ static void RewriteName(const char* name, char* new_name) new_name[i] = '\0'; } +static void jack_log(const char *fmt,...) +{ + /* + va_list ap; + va_start(ap, fmt); + f//printf(stderr,"Jack: "); + vfprintf(stderr, fmt, ap); + fprintf(stderr,"\n"); + va_end(ap); + */ +} + /* Exec the JACK server in this process. Does not return. */ static void start_server_aux(const char* server_name) { @@ -246,6 +258,8 @@ static void start_server_aux(const char* server_name) int i = 0; int good = 0; int ret; + + jack_log("start_server_aux"); snprintf(filename, 255, "%s/.jackdrc", getenv("HOME")); fp = fopen(filename, "r"); @@ -318,9 +332,13 @@ static void start_server_aux(const char* server_name) int start_server(const char* server_name, jack_options_t options) { + jack_log("start_server 0"); + if ((options & JackNoStartServer) || getenv("JACK_NO_START_SERVER")) { return 1; } + + jack_log("start_server 1"); /* The double fork() forces the server to become a child of * init, which will always clean up zombie process state on @@ -347,21 +365,10 @@ int start_server(const char* server_name, jack_options_t options) } /* only the original parent process goes here */ + sleep(1); return 0; /* (probably) successful */ } -static void jack_log(const char *fmt,...) -{ - /* - va_list ap; - va_start(ap, fmt); - f//printf(stderr,"Jack: "); - vfprintf(stderr, fmt, ap); - fprintf(stderr,"\n"); - va_end(ap); - */ -} - // Function definition typedef void* (*jack_port_get_buffer_fun_def)(jack_port_t* port, jack_nframes_t frames); @@ -1123,7 +1130,6 @@ EXPORT jack_status_t jack_internal_client_unload(jack_client_t* ext_client, jack return (*jack_internal_client_unload_fun)(ext_client, intclient); } - typedef jack_client_t * (*jack_client_open_aux_fun_def)(const char *ext_client_name, jack_options_t options, jack_status_t *status, va_list ap); static jack_client_open_aux_fun_def jack_client_open_aux_fun = 0; EXPORT jack_client_t * jack_client_open(const char *ext_client_name, jack_options_t options, jack_status_t *status, ...) @@ -1168,6 +1174,8 @@ EXPORT jack_client_t * jack_client_open(const char *ext_client_name, jack_option va_end(ap); if (start_server(va.server_name, options)) { + int my_status1 = *status | JackFailure | JackServerFailed; + *status = (jack_status_t)my_status1; return NULL; } else if (open_library()) { va_list ap; @@ -1198,9 +1206,13 @@ static jack_client_close_fun_def jack_client_close_fun = 0; EXPORT int jack_client_close(jack_client_t *client) { jack_log("jack_client_close"); - int res = (*jack_client_close_fun)(client); - close_library(); - return res; + if (client) { + int res = (*jack_client_close_fun)(client); + close_library(); + return res; + } else { + return -1; + } } // Library loader