From 179200bf87a153e1103a3bbe6133c9f5339d62d2 Mon Sep 17 00:00:00 2001 From: David Robillard Date: Fri, 9 Oct 2015 22:00:54 +0000 Subject: Allow Jack client name to be set from command line git-svn-id: http://svn.drobilla.net/lad/trunk/jalv@5760 a436a847-0d15-0410-975c-d299462d15a1 --- src/jalv.c | 35 ++++++++++++++++++++++------------- 1 file changed, 22 insertions(+), 13 deletions(-) (limited to 'src/jalv.c') 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"); -- cgit v1.2.1