From d045111ae90718b0281611febc664686394c8b9b Mon Sep 17 00:00:00 2001 From: paul Date: Sun, 7 Dec 2008 21:46:38 +0000 Subject: [PATCH] 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 --- jackd/clientengine.c | 17 +++++++++++------ 1 file 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 #include #include +#include #include #include -#include #include #include #include @@ -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); + } }