summaryrefslogtreecommitdiff
path: root/jackd
diff options
context:
space:
mode:
authortorben <torben@0c269be4-1314-0410-8aa9-9f06e86f4224>2011-05-29 00:47:05 +0000
committertorben <torben@0c269be4-1314-0410-8aa9-9f06e86f4224>2011-05-29 00:47:05 +0000
commit93e9a2927444a0ded0b9afb6135a080926b8bf22 (patch)
treef0181b4fcb1a32de8ad7d2da69a70e760c630b74 /jackd
parent19dc6322ae458311410df69d03439136554b62d5 (diff)
downloadjack1-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.c1
-rw-r--r--jackd/engine.c41
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);