summaryrefslogtreecommitdiff
path: root/jackd/clientengine.c
diff options
context:
space:
mode:
authorpaul <paul@0c269be4-1314-0410-8aa9-9f06e86f4224>2008-12-07 21:46:38 +0000
committerpaul <paul@0c269be4-1314-0410-8aa9-9f06e86f4224>2008-12-07 21:46:38 +0000
commitd045111ae90718b0281611febc664686394c8b9b (patch)
tree5b82300e23d5d8ef1343ee613d3f8c2814c59537 /jackd/clientengine.c
parentf568569b9fd3cac914606ffa3720fdc5ddf0c52f (diff)
downloadjack1-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.c17
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);
+
}
}