diff --git a/common/JackAudioAdapter.cpp b/common/JackAudioAdapter.cpp index e5a0919b..022a1fbc 100644 --- a/common/JackAudioAdapter.cpp +++ b/common/JackAudioAdapter.cpp @@ -20,6 +20,7 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. #include "JackAudioAdapter.h" #include "JackError.h" #include "JackExports.h" +#include "JackTools.h" #include "jslist.h" #include #include @@ -105,6 +106,7 @@ extern "C" #endif #include "JackCallbackAudioAdapter.h" +#include "driver_interface.h" #ifdef __linux__ #include "JackAlsaAdapter.h" @@ -121,6 +123,8 @@ extern "C" #define max(x,y) (((x)>(y)) ? (x) : (y)) #define min(x,y) (((x)<(y)) ? (x) : (y)) +using namespace Jack; + EXPORT int jack_internal_initialize(jack_client_t* jack_client, const JSList* params) { Jack::JackAudioAdapter* adapter; @@ -173,8 +177,15 @@ extern "C" EXPORT int jack_initialize(jack_client_t* jack_client, const char* load_init) { - const JSList* params = NULL; - // TODO : convert load_init to params + JSList* params = NULL; + jack_driver_desc_t *desc = jack_get_descriptor(); + JackArgParser parser(load_init); + + if (parser.GetArgc() > 0) { + if (jack_parse_driver_params(desc, parser.GetArgc(), (char**)parser.GetArgv(), ¶ms) != 0) + jack_error("Internal client jack_parse_driver_params error"); + } + return jack_internal_initialize(jack_client, params); } diff --git a/common/JackDriverLoader.h b/common/JackDriverLoader.h index a8900761..22247f73 100644 --- a/common/JackDriverLoader.h +++ b/common/JackDriverLoader.h @@ -24,7 +24,7 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. #include "driver_interface.h" #include "control_types.h" #include "JackPlatformSynchro.h" -#include "jslist.h" + #ifdef WIN32 @@ -64,7 +64,6 @@ jack_driver_desc_t * jack_find_driver_descriptor (JSList * drivers, const char * jack_driver_desc_t * jack_drivers_get_descriptor (JSList * drivers, const char * sofile); JSList * jack_drivers_load (JSList * drivers); jack_driver_info_t * jack_load_driver (jack_driver_desc_t * driver_desc); -int jack_parse_driver_params (jack_driver_desc_t * desc, int argc, char* argv[], JSList ** param_ptr); EXPORT int jackctl_parse_driver_params (jackctl_driver * driver_ptr, int argc, char* argv[]); #endif diff --git a/common/JackTools.h b/common/JackTools.h index 61f617f6..795a0ed0 100644 --- a/common/JackTools.h +++ b/common/JackTools.h @@ -38,10 +38,12 @@ #include #include +#include "JackExports.h" + namespace Jack { -struct JackTools +struct EXPORT JackTools { static int GetPID(); @@ -71,6 +73,7 @@ class EXPORT JackArgParser int GetArgc(); const char** GetArgv(); }; + } #endif diff --git a/common/driver_interface.h b/common/driver_interface.h index 655b9696..0637a028 100644 --- a/common/driver_interface.h +++ b/common/driver_interface.h @@ -26,6 +26,8 @@ extern "C" #endif #include +#include "jslist.h" +#include "jackExports.h" #ifdef WIN32 #include "types.h" @@ -34,7 +36,6 @@ extern "C" #include #endif - #define JACK_DRIVER_NAME_MAX 15 #define JACK_DRIVER_PARAM_NAME_MAX 15 #define JACK_DRIVER_PARAM_STRING_MAX 63 @@ -88,6 +89,8 @@ extern "C" jack_driver_desc_t; +EXPORT int jack_parse_driver_params (jack_driver_desc_t * desc, int argc, char* argv[], JSList ** param_ptr); + #ifdef __cplusplus } #endif diff --git a/linux/alsa/JackAlsaAdapter.cpp b/linux/alsa/JackAlsaAdapter.cpp index e4249537..3b53dd56 100644 --- a/linux/alsa/JackAlsaAdapter.cpp +++ b/linux/alsa/JackAlsaAdapter.cpp @@ -101,9 +101,6 @@ extern "C" { #endif -#include "JackExports.h" -#include "driver_interface.h" - EXPORT jack_driver_desc_t* jack_get_descriptor() { jack_driver_desc_t *desc; diff --git a/linux/alsa/JackAlsaAdapter.h b/linux/alsa/JackAlsaAdapter.h index a854cc05..86b3055f 100644 --- a/linux/alsa/JackAlsaAdapter.h +++ b/linux/alsa/JackAlsaAdapter.h @@ -547,4 +547,18 @@ namespace Jack }; } +#ifdef __cplusplus +extern "C" +{ +#endif + +#include "JackExports.h" +#include "driver_interface.h" + +EXPORT jack_driver_desc_t* jack_get_descriptor(); + +#ifdef __cplusplus +} +#endif + #endif diff --git a/macosx/JackCoreAudioAdapter.cpp b/macosx/JackCoreAudioAdapter.cpp index 4d8bb908..4a543151 100644 --- a/macosx/JackCoreAudioAdapter.cpp +++ b/macosx/JackCoreAudioAdapter.cpp @@ -568,9 +568,6 @@ extern "C" { #endif -#include "JackExports.h" -#include "driver_interface.h" - EXPORT jack_driver_desc_t* jack_get_descriptor() { jack_driver_desc_t *desc; diff --git a/macosx/JackCoreAudioAdapter.h b/macosx/JackCoreAudioAdapter.h index 92456072..5d583a94 100644 --- a/macosx/JackCoreAudioAdapter.h +++ b/macosx/JackCoreAudioAdapter.h @@ -111,4 +111,18 @@ namespace Jack }; } +#ifdef __cplusplus +extern "C" +{ +#endif + +#include "JackExports.h" +#include "driver_interface.h" + +EXPORT jack_driver_desc_t* jack_get_descriptor(); + +#ifdef __cplusplus +} +#endif + #endif diff --git a/windows/JackPortAudioAdapter.cpp b/windows/JackPortAudioAdapter.cpp index 6e56d572..d9f67423 100644 --- a/windows/JackPortAudioAdapter.cpp +++ b/windows/JackPortAudioAdapter.cpp @@ -162,9 +162,6 @@ extern "C" { #endif -#include "JackExports.h" -#include "driver_interface.h" - EXPORT jack_driver_desc_t* jack_get_descriptor() { jack_driver_desc_t *desc; diff --git a/windows/JackPortAudioAdapter.h b/windows/JackPortAudioAdapter.h index 7513fb15..1bfad9ab 100644 --- a/windows/JackPortAudioAdapter.h +++ b/windows/JackPortAudioAdapter.h @@ -58,4 +58,18 @@ namespace Jack }; } +#ifdef __cplusplus +extern "C" +{ +#endif + +#include "JackExports.h" +#include "driver_interface.h" + +EXPORT jack_driver_desc_t* jack_get_descriptor(); + +#ifdef __cplusplus +} +#endif + #endif