diff options
author | torben <torben@0c269be4-1314-0410-8aa9-9f06e86f4224> | 2011-05-29 00:47:05 +0000 |
---|---|---|
committer | torben <torben@0c269be4-1314-0410-8aa9-9f06e86f4224> | 2011-05-29 00:47:05 +0000 |
commit | 93e9a2927444a0ded0b9afb6135a080926b8bf22 (patch) | |
tree | f0181b4fcb1a32de8ad7d2da69a70e760c630b74 /jackd | |
parent | 19dc6322ae458311410df69d03439136554b62d5 (diff) | |
download | jack1-93e9a2927444a0ded0b9afb6135a080926b8bf22.tar.gz |
[controlAPI] factor out jack_stop_watchdog, and use it during switch_master
git-svn-id: svn+ssh://jackaudio.org/trunk/jack@4425 0c269be4-1314-0410-8aa9-9f06e86f4224
Diffstat (limited to 'jackd')
-rw-r--r-- | jackd/controlapi.c | 1 | ||||
-rw-r--r-- | jackd/engine.c | 41 |
2 files changed, 30 insertions, 12 deletions
diff --git a/jackd/controlapi.c b/jackd/controlapi.c index b31fba8..053715c 100644 --- a/jackd/controlapi.c +++ b/jackd/controlapi.c @@ -1503,6 +1503,7 @@ bool jackctl_server_switch_master(jackctl_server_t * server_ptr, jackctl_driver_ jack_unlock_graph (server_ptr->engine); pthread_mutex_unlock( &server_ptr->engine->request_lock ); + jack_stop_watchdog (server_ptr->engine); server_ptr->engine->driver = NULL; jack_driver_unload( old_driver ); diff --git a/jackd/engine.c b/jackd/engine.c index f6d0111..adf4a50 100644 --- a/jackd/engine.c +++ b/jackd/engine.c @@ -950,6 +950,16 @@ jack_start_watchdog (jack_engine_t *engine) return 0; } +void +jack_stop_watchdog (jack_engine_t *engine) +{ + /* Stephane Letz : letz@grame.fr Watch dog thread is + * not needed on MacOSX since CoreAudio drivers + * already contains a similar mechanism. + */ + return; +} + #else static void * @@ -1005,6 +1015,23 @@ jack_start_watchdog (jack_engine_t *engine) return 0; } + +void +jack_stop_watchdog (jack_engine_t *engine) +{ + /* Cancel the watchdog thread and wait for it to terminate. + * + * The watchdog thread is not used on MacOSX since CoreAudio + * drivers already contain a similar mechanism. + */ + if (engine->control->real_time && engine->watchdog_thread) { + VERBOSE (engine, "stopping watchdog thread"); + pthread_cancel (engine->watchdog_thread); + pthread_join (engine->watchdog_thread, NULL); + } + + return; +} #endif /* !JACK_USE_MACH_THREADS */ @@ -2587,18 +2614,8 @@ jack_engine_delete (jack_engine_t *engine) pthread_join (engine->server_thread, NULL); #endif -#ifndef JACK_USE_MACH_THREADS - /* Cancel the watchdog thread and wait for it to terminate. - * - * The watchdog thread is not used on MacOSX since CoreAudio - * drivers already contain a similar mechanism. - */ - if (engine->control->real_time && engine->watchdog_thread) { - VERBOSE (engine, "stopping watchdog thread"); - pthread_cancel (engine->watchdog_thread); - pthread_join (engine->watchdog_thread, NULL); - } -#endif + jack_stop_watchdog (engine); + VERBOSE (engine, "last xrun delay: %.3f usecs", engine->control->xrun_delayed_usecs); |