From c30e8abc94999a420f0954249e4ecade5cc9842e Mon Sep 17 00:00:00 2001 From: pbd Date: Fri, 4 Apr 2003 18:19:48 +0000 Subject: [PATCH] rt thread re-fix from stephane git-svn-id: svn+ssh://jackaudio.org/trunk/jack@364 0c269be4-1314-0410-8aa9-9f06e86f4224 --- configure.in | 4 ++-- jackd/engine.c | 54 ++++++++++++++++++++++++++---------------------- libjack/client.c | 2 ++ 3 files changed, 33 insertions(+), 27 deletions(-) diff --git a/configure.in b/configure.in index 64d4bd8..906258a 100644 --- a/configure.in +++ b/configure.in @@ -14,7 +14,7 @@ dnl changes are made dnl --- JACK_MAJOR_VERSION=0 JACK_MINOR_VERSION=66 -JACK_MICRO_VERSION=3 +JACK_MICRO_VERSION=4 dnl --- dnl HOWTO: updating the jack protocal version @@ -41,7 +41,7 @@ dnl slacker than this, and closer to those for the JACK version dnl number. dnl --- JACK_API_CURRENT=0 -JACK_API_REVISION=17 +JACK_API_REVISION=18 JACK_API_AGE=0 AC_SUBST(JACK_MAJOR_VERSION) diff --git a/jackd/engine.c b/jackd/engine.c index fb2d807..e8ee302 100644 --- a/jackd/engine.c +++ b/jackd/engine.c @@ -275,6 +275,15 @@ make_sockets (int fd[2]) return 0; } +static void +jack_register_shm (char *shm_name, char *addr) +{ + if (jack_shm_id_cnt < MAX_SHM_ID) { + snprintf (jack_shm_registry[jack_shm_id_cnt++].name, sizeof (shm_name_t), "%s", shm_name); + jack_shm_registry[jack_shm_id_cnt].address = addr; + } +} + static int jack_initialize_shm () { @@ -297,19 +306,12 @@ jack_initialize_shm () jack_shm_registry = (jack_shm_registry_entry_t *) addr; jack_shm_id_cnt = 0; + + jack_register_shm("/jack-shm-registry", addr); return 0; } -static void -jack_register_shm (char *shm_name, char *addr) -{ - if (jack_shm_id_cnt < MAX_SHM_ID) { - snprintf (jack_shm_registry[jack_shm_id_cnt++].name, sizeof (shm_name_t), "%s", shm_name); - jack_shm_registry[jack_shm_id_cnt].address = addr; - } -} - void jack_cleanup_shm () { @@ -413,7 +415,7 @@ jack_resize_port_segment (jack_engine_t *engine, jack_port_type_info_t *port_typ if (port_type->shm_info.size == 0) { - snprintf (port_type->shm_info.shm_name, sizeof(port_type->shm_info.shm_name), "/jack-[%s]", port_type->type_name); + snprintf (port_type->shm_info.shm_name, sizeof(port_type->shm_info.shm_name), "/jck-[%s]", port_type->type_name); if ((addr = jack_get_shm (port_type->shm_info.shm_name, size, (O_RDWR|O_CREAT|O_TRUNC), 0666, PROT_READ|PROT_WRITE)) == MAP_FAILED) { @@ -2089,21 +2091,6 @@ jack_main_thread (void *arg) } pthread_setcanceltype (PTHREAD_CANCEL_ASYNCHRONOUS, NULL); -#ifdef HAVE_ON_EXIT - on_exit (cancel_cleanup, engine); -#else -#ifdef HAVE_ATEXIT - global_engine = engine; - atexit (cancel_cleanup); -#else -#error "Don't know how to install an exit handler" -#endif /* HAVE_ATEXIT */ -#endif /* HAVE_ON_EXIT */ - - if (driver->start (driver)) { - jack_error ("cannot start driver"); - pthread_exit (0); - } consecutive_excessive_delays = 0; engine->watchdog_check = 1; /* really needed here ? */ @@ -2147,10 +2134,27 @@ jack_main_thread (void *arg) int jack_run (jack_engine_t *engine) { + +#ifdef HAVE_ON_EXIT + on_exit (cancel_cleanup, engine); +#else +#ifdef HAVE_ATEXIT + global_engine = engine; + atexit (cancel_cleanup); +#else +#error "Don't know how to install an exit handler" +#endif /* HAVE_ATEXIT */ +#endif /* HAVE_ON_EXIT */ + if (engine->driver == NULL) { jack_error ("engine driver not set; cannot start"); return -1; } + + if (engine->driver->start (engine->driver)) { + jack_error ("cannot start driver"); + return -1; + } return pthread_create (&engine->main_thread, 0, jack_main_thread, engine); } diff --git a/libjack/client.c b/libjack/client.c index c3da0dd..8357776 100644 --- a/libjack/client.c +++ b/libjack/client.c @@ -393,6 +393,8 @@ jack_request_client (ClientType type, const char* client_name, const char* so_na *req_fd = -1; + memset (&req, 0, sizeof (req)); + if (strlen (client_name) > sizeof (req.name) - 1) { jack_error ("\"%s\" is too long to be used as a JACK client name.\n" "Please use %lu characters or less.",