From d9b6760c4ed486db5d92d0b796a4ec8b05de8ce4 Mon Sep 17 00:00:00 2001 From: letz Date: Tue, 4 May 2004 10:26:16 +0000 Subject: [PATCH] Fix for MacOSX version git-svn-id: svn+ssh://jackaudio.org/trunk/jack@716 0c269be4-1314-0410-8aa9-9f06e86f4224 --- jackd/engine.c | 14 ++++++++++++++ libjack/client.c | 8 +++++--- 2 files changed, 19 insertions(+), 3 deletions(-) diff --git a/jackd/engine.c b/jackd/engine.c index ebb29ac..4887979 100644 --- a/jackd/engine.c +++ b/jackd/engine.c @@ -1213,10 +1213,15 @@ jack_engine_load_driver (jack_engine_t *engine, jack_driver_desc_t * driver_desc engine->driver_params = driver_params; if (engine->control->real_time) { + /* Stephane Letz : letz@grame.fr + Watch dog thread is not needed on MacOSX since CoreAudio drivers already contains a similar mechanism. + */ + #ifndef JACK_USE_MACH_THREADS if (jack_start_watchdog (engine)) { return -1; } engine->watchdog_check = 1; + #endif } return 0; } @@ -1813,6 +1818,8 @@ jack_server_thread (void *arg) while (!done) { DEBUG ("start while"); + + pthread_testcancel(); /* XXX race here with new external clients causing engine->pfd to be reallocated. @@ -2170,6 +2177,7 @@ jack_watchdog_thread (void *arg) engine->watchdog_check = 0; while (1) { + pthread_testcancel(); usleep (5000000); if ( engine->watchdog_check == 0) { @@ -2480,8 +2488,14 @@ jack_engine_delete (jack_engine_t *engine) * but 2.4 works OK. */ VERBOSE (engine, "stopping watchdog thread\n"); + + /* Stephane Letz : letz@grame.fr + Watch dog thread is not needed on MacOSX since CoreAudio drivers already contains a similar mechanism. + */ +#ifndef JACK_USE_MACH_THREADS pthread_cancel (engine->watchdog_thread); pthread_join (engine->watchdog_thread, NULL); +#endif /* free engine control shm segment */ engine->control = NULL; diff --git a/libjack/client.c b/libjack/client.c index d1160ea..0864225 100644 --- a/libjack/client.c +++ b/libjack/client.c @@ -435,6 +435,8 @@ _start_server (void) } } +// steph +#define JACK_LOCATION if (!good) { #if defined(USE_CAPABILITIES) command = JACK_LOCATION "/jackstart"; @@ -978,8 +980,10 @@ jack_client_thread (void *arg) } while (err == 0) { + + pthread_testcancel(); - if (client->engine->engine_ok == 0) { + if (client->engine->engine_ok == 0) { if (client->on_shutdown) client->on_shutdown (client->on_shutdown_arg); else @@ -1012,8 +1016,6 @@ jack_client_thread (void *arg) client->pollfd[0].revents, client->pollfd[1].revents); - pthread_testcancel(); - if ((client->pollfd[0].revents & ~POLLIN) || client->control->dead) { goto zombie;