diff options
author | paul <paul@0c269be4-1314-0410-8aa9-9f06e86f4224> | 2008-12-07 21:46:38 +0000 |
---|---|---|
committer | paul <paul@0c269be4-1314-0410-8aa9-9f06e86f4224> | 2008-12-07 21:46:38 +0000 |
commit | d045111ae90718b0281611febc664686394c8b9b (patch) | |
tree | 5b82300e23d5d8ef1343ee613d3f8c2814c59537 /jackd/clientengine.c | |
parent | f568569b9fd3cac914606ffa3720fdc5ddf0c52f (diff) | |
download | jack1-d045111ae90718b0281611febc664686394c8b9b.tar.gz |
proper cleanup of "temporary" JACK server, by killing the wait thread with SIGUSR2
git-svn-id: svn+ssh://jackaudio.org/trunk/jack@3194 0c269be4-1314-0410-8aa9-9f06e86f4224
Diffstat (limited to 'jackd/clientengine.c')
-rw-r--r-- | jackd/clientengine.c | 17 |
1 files changed, 11 insertions, 6 deletions
diff --git a/jackd/clientengine.c b/jackd/clientengine.c index a7afebc..5de971f 100644 --- a/jackd/clientengine.c +++ b/jackd/clientengine.c @@ -27,10 +27,10 @@ #include <stdio.h> #include <unistd.h> #include <string.h> +#include <signal.h> #include <jack/internal.h> #include <jack/engine.h> -#include <jack/driver.h> #include <jack/messagebuffer.h> #include <jack/version.h> #include <sysdeps/poll.h> @@ -143,12 +143,17 @@ jack_remove_client (jack_engine_t *engine, jack_client_internal_t *client) /* ignore the driver, which counts as a client. */ if (engine->temporary && (jack_slist_length(engine->clients) <= 1)) { - if (engine->driver) { - // engine->driver->stop (engine->driver); - // engine->driver->detach (engine->driver, engine); - // engine->driver = 0; + if (engine->wait_pid >= 0) { + /* tell the waiter we're done + to initiate a normal shutdown. + */ + VERBOSE (engine, "Kill wait pid to stop"); + kill (engine->wait_pid, SIGUSR2); + sleep (-1); + } else { + exit (0); } - exit (0); + } } |