diff --git a/ChangeLog b/ChangeLog index c90799a1..c605e67a 100644 --- a/ChangeLog +++ b/ChangeLog @@ -22,6 +22,7 @@ Nedko Arnaudov 2008-03-11 Stephane Letz * Fix engine real-time notification (was broken since ??). + * Correct jack_client_open_aux, jack_client_open and jack_client_new. 2008-03-10 Stephane Letz diff --git a/common/JackAPI.cpp b/common/JackAPI.cpp index f222c5a6..de25288a 100644 --- a/common/JackAPI.cpp +++ b/common/JackAPI.cpp @@ -269,7 +269,8 @@ EXPORT jack_client_t* jack_client_new(const char* client_name) int options = JackUseExactName; if (getenv("JACK_START_SERVER") == NULL) options |= JackNoStartServer; - return jack_client_open_aux(client_name, (jack_options_t)options, NULL); + va_list ap; + return jack_client_open_aux(client_name, (jack_options_t)options, NULL, ap); } EXPORT void* jack_port_get_buffer(jack_port_t* port, jack_nframes_t frames) diff --git a/common/JackLibAPI.cpp b/common/JackLibAPI.cpp index f7c568c1..a3307748 100644 --- a/common/JackLibAPI.cpp +++ b/common/JackLibAPI.cpp @@ -41,7 +41,7 @@ extern "C" EXPORT jack_client_t * jack_client_open_aux (const char *client_name, jack_options_t options, - jack_status_t *status, ...); + jack_status_t *status, va_list ap); EXPORT jack_client_t * jack_client_open (const char *client_name, jack_options_t options, jack_status_t *status, ...); @@ -54,9 +54,8 @@ extern "C" JackLibGlobals* JackLibGlobals::fGlobals = NULL; int JackLibGlobals::fClientCount = 0; -EXPORT jack_client_t* jack_client_open_aux(const char* ext_client_name, jack_options_t options, jack_status_t* status, ...) +EXPORT jack_client_t* jack_client_open_aux(const char* ext_client_name, jack_options_t options, jack_status_t* status, va_list ap) { - va_list ap; /* variable argument pointer */ jack_varargs_t va; /* variable arguments */ jack_status_t my_status; JackClient* client; @@ -76,10 +75,8 @@ EXPORT jack_client_t* jack_client_open_aux(const char* ext_client_name, jack_opt } /* parse variable arguments */ - va_start(ap, status); - jack_varargs_parse(options, ap, &va); - va_end(ap); - + if (ap) + jack_varargs_parse(options, ap, &va); jack_log("jack_client_open %s", client_name); if (client_name == NULL) { diff --git a/common/JackServerAPI.cpp b/common/JackServerAPI.cpp index 1c9928d4..30485786 100644 --- a/common/JackServerAPI.cpp +++ b/common/JackServerAPI.cpp @@ -44,7 +44,7 @@ extern "C" EXPORT jack_client_t * jack_client_open_aux (const char *client_name, jack_options_t options, - jack_status_t *status, ...); + jack_status_t *status, va_list ap); EXPORT jack_client_t * jack_client_open (const char *client_name, jack_options_t options, jack_status_t *status, ...); @@ -56,9 +56,8 @@ extern "C" using namespace Jack; -EXPORT jack_client_t* jack_client_open_aux(const char* ext_client_name, jack_options_t options, jack_status_t* status, ...) +EXPORT jack_client_t* jack_client_open_aux(const char* ext_client_name, jack_options_t options, jack_status_t* status, va_list ap) { - va_list ap; /* variable argument pointer */ jack_varargs_t va; /* variable arguments */ jack_status_t my_status; JackClient* client; @@ -78,10 +77,9 @@ EXPORT jack_client_t* jack_client_open_aux(const char* ext_client_name, jack_opt } /* parse variable arguments */ - va_start(ap, status); - jack_varargs_parse(options, ap, &va); - va_end(ap); - + if (ap) + jack_varargs_parse(options, ap, &va); + jack_log("jack_client_open %s", client_name); if (client_name == NULL) { jack_error("jack_client_open called with a NULL client_name");