diff --git a/ChangeLog b/ChangeLog index c605e67a..66918190 100644 --- a/ChangeLog +++ b/ChangeLog @@ -23,6 +23,7 @@ Nedko Arnaudov * Fix engine real-time notification (was broken since ??). * Correct jack_client_open_aux, jack_client_open and jack_client_new. + * Correct jack_internal_client_load for wrapper layer. 2008-03-10 Stephane Letz diff --git a/common/JackAPI.cpp b/common/JackAPI.cpp index de25288a..3079a0d9 100644 --- a/common/JackAPI.cpp +++ b/common/JackAPI.cpp @@ -50,7 +50,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, ...); @@ -215,6 +215,11 @@ extern "C" const char *client_name, jack_options_t options, jack_status_t *status, ...); + EXPORT jack_intclient_t jack_internal_client_load_aux (jack_client_t *client, + const char *client_name, + jack_options_t options, + jack_status_t *status, va_list ap); + EXPORT jack_status_t jack_internal_client_unload (jack_client_t *client, jack_intclient_t intclient); @@ -1591,7 +1596,7 @@ EXPORT jack_intclient_t jack_internal_client_handle(jack_client_t* ext_client, c } } -EXPORT jack_intclient_t jack_internal_client_load(jack_client_t* ext_client, const char* client_name, jack_options_t options, jack_status_t* status, ...) +EXPORT jack_intclient_t jack_internal_client_load_aux(jack_client_t* ext_client, const char* client_name, jack_options_t options, jack_status_t* status, va_list ap) { #ifdef __CLIENTDEBUG__ JackLibGlobals::CheckContext(); @@ -1601,7 +1606,6 @@ EXPORT jack_intclient_t jack_internal_client_load(jack_client_t* ext_client, con jack_error("jack_internal_client_load called with a NULL client"); return 0; } else { - va_list ap; jack_varargs_t va; jack_status_t my_status; @@ -1617,14 +1621,20 @@ EXPORT jack_intclient_t jack_internal_client_load(jack_client_t* ext_client, con } /* parse variable arguments */ - va_start(ap, status); jack_varargs_parse(options, ap, &va); - va_end(ap); - return client->InternalClientLoad(client_name, options, status, &va); } } +EXPORT jack_intclient_t jack_internal_client_load(jack_client_t *client, const char *client_name, jack_options_t options, jack_status_t *status, ...) +{ + va_list ap; + va_start(ap, status); + jack_intclient_t res = jack_internal_client_load_aux(client, client_name, options, status, ap); + va_end(ap); + return res; +} + EXPORT jack_status_t jack_internal_client_unload(jack_client_t* ext_client, jack_intclient_t intclient) { #ifdef __CLIENTDEBUG__ diff --git a/common/JackAPIWrapper.cpp b/common/JackAPIWrapper.cpp index 3384b742..68f73db5 100644 --- a/common/JackAPIWrapper.cpp +++ b/common/JackAPIWrapper.cpp @@ -972,14 +972,14 @@ EXPORT jack_intclient_t jack_internal_client_handle(jack_client_t* ext_client, c return (*jack_internal_client_handle_fun)(ext_client, client_name, status); } -typedef jack_intclient_t (*jack_internal_client_load_fun_def)(jack_client_t* ext_client, const char* client_name, jack_options_t options, jack_status_t* status, ...); -static jack_internal_client_load_fun_def jack_internal_client_load_fun = 0; +typedef jack_intclient_t (*jack_internal_client_load_aux_fun_def)(jack_client_t* ext_client, const char* client_name, jack_options_t options, jack_status_t* status, va_list ap); +static jack_internal_client_load_aux_fun_def jack_internal_client_load_aux_fun = 0; EXPORT jack_intclient_t jack_internal_client_load(jack_client_t* ext_client, const char* client_name, jack_options_t options, jack_status_t* status, ...) { jack_log("jack_internal_client_load"); va_list ap; va_start(ap, status); - jack_intclient_t res = (*jack_internal_client_load_fun)(ext_client, client_name, options, status, ap); + jack_intclient_t res = (*jack_internal_client_load_aux_fun)(ext_client, client_name, options, status, ap); va_end(ap); return res; } @@ -1249,7 +1249,7 @@ static bool init_library() jack_drop_real_time_scheduling_fun = (jack_drop_real_time_scheduling_fun_def)dlsym(gLibrary, "jack_drop_real_time_scheduling"); jack_get_internal_client_name_fun = (jack_get_internal_client_name_fun_def)dlsym(gLibrary, "jack_get_internal_client_name"); jack_internal_client_handle_fun = (jack_internal_client_handle_fun_def)dlsym(gLibrary, "jack_internal_client_handle"); - jack_internal_client_load_fun = (jack_internal_client_load_fun_def)dlsym(gLibrary, "jack_internal_client_load"); + jack_internal_client_load_aux_fun = (jack_internal_client_load_aux_fun_def)dlsym(gLibrary, "jack_internal_client_load_aux"); jack_internal_client_unload_fun = (jack_internal_client_unload_fun_def)dlsym(gLibrary, "jack_internal_client_unload"); // Functions were kept...