diff --git a/configure.ac b/configure.ac index 9968d3e..c83b07c 100644 --- a/configure.ac +++ b/configure.ac @@ -15,7 +15,7 @@ dnl changes are made dnl --- JACK_MAJOR_VERSION=0 JACK_MINOR_VERSION=99 -JACK_MICRO_VERSION=32 +JACK_MICRO_VERSION=33 dnl --- dnl HOWTO: updating the jack protocol version @@ -148,11 +148,15 @@ if test "x$TRY_POSIX_SHM" = "xyes" then AC_MSG_RESULT([POSIX shm_open().]) AC_DEFINE(USE_POSIX_SHM,1,[Use POSIX shared memory interface]) + JACK_SHM_TYPE='"POSIX"' USE_POSIX_SHM="true" else AC_MSG_RESULT([System V shmget().]) + JACK_SHM_TYPE='"System V"' USE_POSIX_SHM="false" fi +AC_DEFINE_UNQUOTED(JACK_SHM_TYPE, [$JACK_SHM_TYPE], + [JACK shared memory type]) AM_CONDITIONAL(USE_POSIX_SHM, $USE_POSIX_SHM) JACK_CORE_CFLAGS="-I\$(top_builddir)/config -I\$(top_srcdir) \ @@ -576,5 +580,6 @@ echo \| Build with CoreAudio support.......................... : $HAVE_COREAUDIO echo \| Build with PortAudio support.......................... : $HAVE_PA echo \| echo \| Default driver backend................................ : $JACK_DEFAULT_DRIVER +echo \| Shared memory interface............................... : $JACK_SHM_TYPE echo diff --git a/libjack/client.c b/libjack/client.c index 4ad0263..3799942 100644 --- a/libjack/client.c +++ b/libjack/client.c @@ -419,7 +419,7 @@ server_event_connect (jack_client_t *client, const char *server_name) /* Exec the JACK server in this process. Does not return. */ static void -_start_server (void) +_start_server (const char *server_name) { FILE* fp = 0; char filename[255]; @@ -473,12 +473,19 @@ _start_server (void) argv = (char **) malloc (255); while(1) { - /* insert -T into arguments */ + /* insert -T and -nserver_name in front of arguments */ if (i == 1) { - argv[i] = (char*)malloc(3); - strncpy(argv[i], "-T", 2); - argv[i][2] = '\0'; - ++i; + argv[i] = (char *) malloc(strlen ("-T") + 1); + strcpy (argv[i++], "-T"); + if (server_name) { + size_t optlen = strlen ("-n"); + char *buf = + malloc (optlen + + strlen (server_name) + 1); + strcpy (buf, "-n"); + strcpy (buf+optlen, server_name); + argv[i++] = buf; + } } result = strcspn(arguments+pos, " "); @@ -503,7 +510,7 @@ _start_server (void) } int -start_server (jack_options_t options) +start_server (const char *server_name, jack_options_t options) { if ((options & JackNoStartServer) || getenv("JACK_NO_START_SERVER")) { @@ -523,7 +530,7 @@ start_server (jack_options_t options) case 0: /* child process */ switch (fork()) { case 0: /* grandchild process */ - _start_server(); + _start_server(server_name); _exit (99); /* exec failed */ case -1: _exit (98); @@ -578,7 +585,7 @@ jack_request_client (ClientType type, if ((*req_fd = server_connect (va->server_name)) < 0) { int trys; - if (start_server(options)) { + if (start_server(va->server_name, options)) { *status |= (JackFailure|JackServerFailed); goto fail; } diff --git a/libjack/shm.c b/libjack/shm.c index aa1d98d..87b83cd 100644 --- a/libjack/shm.c +++ b/libjack/shm.c @@ -54,10 +54,8 @@ #ifdef USE_POSIX_SHM static jack_shmtype_t jack_shmtype = shm_POSIX; -static char *shmtype_name = "POSIX"; #else static jack_shmtype_t jack_shmtype = shm_SYSV; -static char *shmtype_name = "System V"; #endif /* interface-dependent forward declarations */ @@ -320,7 +318,7 @@ jack_register_server (const char *server_name) int i; pid_t my_pid = getpid (); - fprintf (stderr, "JACK compiled with %s SHM support.\n", shmtype_name); + fprintf (stderr, "JACK compiled with %s SHM support.\n", JACK_SHM_TYPE); jack_shm_lock_registry ();