Currently, if I build a JUCE static and link my plugins to it, all JACK client names will be “JuceJack”.
This is bad, so I’ve changed the code to register the JACK client name as the application name.
Patch below
[code]— a/source/src/native/linux/juce_linux_JackAudio.cpp
+++ b/source/src/native/linux/juce_linux_JackAudio.cpp
@@ -112,6 +112,15 @@ namespace
#define JUCE_JACK_CLIENT_NAME “JuceJack”
#endif
+static const char* getJackClientName()
+{
- String jackClientName = JUCEApplication::getInstance()->getApplicationName();
- if (jackClientName.isEmpty())
-
jackClientName = String(JUCE_JACK_CLIENT_NAME); - return jackClientName.toUTF8();
+}
//==============================================================================
class JackAudioIODevice : public AudioIODevice
{
@@ -130,7 +139,7 @@ public:
jassert (deviceName.isNotEmpty());
jack_status_t status;
-
client = JUCE_NAMESPACE::jack_client_open (JUCE_JACK_CLIENT_NAME, JackNoStartServer, &status);
-
client = JUCE_NAMESPACE::jack_client_open (getJackClientName(), JackNoStartServer, &status); if (client == 0) {
@@ -495,7 +504,7 @@ public:
String clientName (ports[j]);
clientName = clientName.upToFirstOccurrenceOf (":", false, false);
-
if (clientName != String (JUCE_JACK_CLIENT_NAME)
-
if (clientName != String (getJackClientName()) && ! inputNames.contains (clientName)) { inputNames.add (clientName);
@@ -519,7 +528,7 @@ public:
String clientName (ports[j]);
clientName = clientName.upToFirstOccurrenceOf (":", false, false);
-
if (clientName != String (JUCE_JACK_CLIENT_NAME)
-
if (clientName != String (getJackClientName()) && ! outputNames.contains (clientName)) { outputNames.add (clientName);
[/code]
Feel free to implement it.
The only flaw is that JACK can crash when using non-ascii client names.
