aboutsummaryrefslogtreecommitdiffstats
path: root/src/jalv.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/jalv.c')
-rw-r--r--src/jalv.c35
1 files changed, 22 insertions, 13 deletions
diff --git a/src/jalv.c b/src/jalv.c
index 0853b81..c125a52 100644
--- a/src/jalv.c
+++ b/src/jalv.c
@@ -1152,34 +1152,43 @@ main(int argc, char** argv)
/* Create port structures (jalv.ports) */
jalv_create_ports(&jalv);
- /* Get the plugin's name */
- LilvNode* name = lilv_plugin_get_name(jalv.plugin);
- const char* name_str = lilv_node_as_string(name);
-
- /* Truncate plugin name to suit JACK (if necessary) */
+ /* Determine the name of the JACK client */
char* jack_name = NULL;
- if (strlen(name_str) >= (unsigned)jack_client_name_size() - 1) {
- jack_name = (char*)calloc(jack_client_name_size(), 1);
- strncpy(jack_name, name_str, jack_client_name_size() - 1);
+ if (jalv.opts.name) {
+ /* Name given on command line */
+ jack_name = jalv_strdup(jalv.opts.name);
} else {
- jack_name = jalv_strdup(name_str);
+ /* Use plugin name */
+ LilvNode* name = lilv_plugin_get_name(jalv.plugin);
+ jack_name = jalv_strdup(lilv_node_as_string(name));
+ lilv_node_free(name);
+ }
+
+ /* Truncate client name to suit JACK if necessary */
+ if (strlen(jack_name) >= (unsigned)jack_client_name_size() - 1) {
+ jack_name[jack_client_name_size() - 1] = '\0';
}
/* Connect to JACK */
printf("JACK Name: %s\n", jack_name);
#ifdef JALV_JACK_SESSION
if (jalv.opts.uuid) {
- jalv.jack_client = jack_client_open(jack_name, JackSessionID, NULL,
- jalv.opts.uuid);
+ jalv.jack_client = jack_client_open(
+ jack_name,
+ JackSessionID | (jalv.opts.name_exact ? JackUseExactName : 0),
+ NULL,
+ jalv.opts.uuid);
}
#endif
if (!jalv.jack_client) {
- jalv.jack_client = jack_client_open(jack_name, JackNullOption, NULL);
+ jalv.jack_client = jack_client_open(
+ jack_name,
+ (jalv.opts.name_exact ? JackUseExactName : JackNullOption),
+ NULL);
}
free(jack_name);
- lilv_node_free(name);
if (!jalv.jack_client)
die("Failed to connect to JACK.\n");