diff --git a/source/jackbridge/JackBridge.hpp b/source/jackbridge/JackBridge.hpp index 0a8834256..163537d72 100644 --- a/source/jackbridge/JackBridge.hpp +++ b/source/jackbridge/JackBridge.hpp @@ -297,6 +297,8 @@ JACKBRIDGE_API char* jackbridge_client_get_uuid(jack_client_t* client); JACKBRIDGE_API char* jackbridge_get_uuid_for_client_name(jack_client_t* client, const char* name); JACKBRIDGE_API char* jackbridge_get_client_name_by_uuid(jack_client_t* client, const char* uuid); +JACKBRIDGE_API bool jackbridge_uuid_parse(const char* buf, jack_uuid_t* uuid); + JACKBRIDGE_API bool jackbridge_activate(jack_client_t* client); JACKBRIDGE_API bool jackbridge_deactivate(jack_client_t* client); JACKBRIDGE_API bool jackbridge_is_realtime(jack_client_t* client); diff --git a/source/jackbridge/JackBridge1.cpp b/source/jackbridge/JackBridge1.cpp index 7fe5ef6f7..6fce65ed6 100644 --- a/source/jackbridge/JackBridge1.cpp +++ b/source/jackbridge/JackBridge1.cpp @@ -68,6 +68,8 @@ typedef char* (JACKSYM_API *jacksym_client_get_uuid)(jack_client_t*); typedef char* (JACKSYM_API *jacksym_get_uuid_for_client_name)(jack_client_t*, const char*); typedef char* (JACKSYM_API *jacksym_get_client_name_by_uuid)(jack_client_t*, const char*); +typedef int (JACKBRIDGE_API *jacksym_uuid_parse)(const char*, jack_uuid_t*); + typedef int (JACKSYM_API *jacksym_activate)(jack_client_t*); typedef int (JACKSYM_API *jacksym_deactivate)(jack_client_t*); typedef int (JACKSYM_API *jacksym_is_realtime)(jack_client_t*); @@ -192,6 +194,8 @@ struct JackBridge { jacksym_get_uuid_for_client_name get_uuid_for_client_name_ptr; jacksym_get_client_name_by_uuid get_client_name_by_uuid_ptr; + jacksym_uuid_parse uuid_parse_ptr; + jacksym_activate activate_ptr; jacksym_deactivate deactivate_ptr; jacksym_is_realtime is_realtime_ptr; @@ -306,6 +310,7 @@ struct JackBridge { client_get_uuid_ptr(nullptr), get_uuid_for_client_name_ptr(nullptr), get_client_name_by_uuid_ptr(nullptr), + uuid_parse_ptr(nullptr), activate_ptr(nullptr), deactivate_ptr(nullptr), is_realtime_ptr(nullptr), @@ -429,6 +434,8 @@ struct JackBridge { LIB_SYMBOL(get_uuid_for_client_name) LIB_SYMBOL(get_client_name_by_uuid) + LIB_SYMBOL(uuid_parse) + LIB_SYMBOL(activate) LIB_SYMBOL(deactivate) LIB_SYMBOL(is_realtime) @@ -915,6 +922,20 @@ char* jackbridge_get_client_name_by_uuid(jack_client_t* client, const char* uuid // ----------------------------------------------------------------------------- +bool jackbridge_uuid_parse(const char* buf, jack_uuid_t* uuid) +{ +#if defined(JACKBRIDGE_DUMMY) +#elif defined(JACKBRIDGE_DIRECT) + return (jack_uuid_parse(buf, uuid) == 0); +#else + if (const jacksym_uuid_parse func = getBridgeInstance().uuid_parse_ptr) + return (func(buf, uuid) == 0); +#endif + return false; +} + +// ----------------------------------------------------------------------------- + bool jackbridge_activate(jack_client_t* client) { #if defined(JACKBRIDGE_DUMMY) diff --git a/source/jackbridge/JackBridge3.cpp b/source/jackbridge/JackBridge3.cpp index 755239a6a..a3b06f801 100644 --- a/source/jackbridge/JackBridge3.cpp +++ b/source/jackbridge/JackBridge3.cpp @@ -47,6 +47,7 @@ const JackBridgeExportedFunctions* JACKBRIDGE_API jackbridge_get_exported_functi funcs.client_get_uuid_ptr = jackbridge_client_get_uuid; funcs.get_uuid_for_client_name_ptr = jackbridge_get_uuid_for_client_name; funcs.get_client_name_by_uuid_ptr = jackbridge_get_client_name_by_uuid; + funcs.uuid_parse_ptr = jackbridge_uuid_parse; funcs.activate_ptr = jackbridge_activate; funcs.deactivate_ptr = jackbridge_deactivate; funcs.is_realtime_ptr = jackbridge_is_realtime; diff --git a/source/jackbridge/JackBridgeExport.cpp b/source/jackbridge/JackBridgeExport.cpp index 2ed17ff2d..515551c32 100644 --- a/source/jackbridge/JackBridgeExport.cpp +++ b/source/jackbridge/JackBridgeExport.cpp @@ -143,6 +143,11 @@ char* jackbridge_get_client_name_by_uuid(jack_client_t* client, const char* uuid return getBridgeInstance().get_client_name_by_uuid_ptr(client, uuid); } +bool jackbridge_uuid_parse(const char* buf, jack_uuid_t* uuid) +{ + return getBridgeInstance().uuid_parse_ptr(buf, uuid); +} + bool jackbridge_activate(jack_client_t* client) { return getBridgeInstance().activate_ptr(client); diff --git a/source/jackbridge/JackBridgeExport.hpp b/source/jackbridge/JackBridgeExport.hpp index 28d87cb00..f3fac94d2 100644 --- a/source/jackbridge/JackBridgeExport.hpp +++ b/source/jackbridge/JackBridgeExport.hpp @@ -30,6 +30,7 @@ typedef char* (JACKBRIDGE_API *jackbridgesym_get_client_name)(jack_client_t*); typedef char* (JACKBRIDGE_API *jackbridgesym_client_get_uuid)(jack_client_t*); typedef char* (JACKBRIDGE_API *jackbridgesym_get_uuid_for_client_name)(jack_client_t*, const char*); typedef char* (JACKBRIDGE_API *jackbridgesym_get_client_name_by_uuid)(jack_client_t*, const char*); +typedef bool (JACKBRIDGE_API *jackbridgesym_uuid_parse)(const char*, jack_uuid_t*); typedef bool (JACKBRIDGE_API *jackbridgesym_activate)(jack_client_t*); typedef bool (JACKBRIDGE_API *jackbridgesym_deactivate)(jack_client_t*); typedef bool (JACKBRIDGE_API *jackbridgesym_is_realtime)(jack_client_t*); @@ -137,6 +138,7 @@ struct _JackBridgeExportedFunctions { jackbridgesym_client_get_uuid client_get_uuid_ptr; jackbridgesym_get_uuid_for_client_name get_uuid_for_client_name_ptr; jackbridgesym_get_client_name_by_uuid get_client_name_by_uuid_ptr; + jackbridgesym_uuid_parse uuid_parse_ptr; jackbridgesym_activate activate_ptr; jackbridgesym_deactivate deactivate_ptr; jackbridgesym_is_realtime is_realtime_ptr;