diff --git a/configure.ac b/configure.ac index 774f192..81dd4cd 100644 --- a/configure.ac +++ b/configure.ac @@ -15,7 +15,7 @@ dnl changes are made dnl --- JACK_MAJOR_VERSION=0 JACK_MINOR_VERSION=99 -JACK_MICRO_VERSION=47 +JACK_MICRO_VERSION=48 dnl --- dnl HOWTO: updating the jack protocol version diff --git a/libjack/client.c b/libjack/client.c index 566c7e9..3b962a1 100644 --- a/libjack/client.c +++ b/libjack/client.c @@ -1611,14 +1611,19 @@ jack_activate (jack_client_t *client) int jack_deactivate (jack_client_t *client) - { jack_request_t req; - - req.type = DeactivateClient; - req.x.client_id = client->control->id; - - return jack_client_deliver_request (client, &req); + int rc = ESRCH; /* already shut down */ + + if (client && client->control) { /* not shut down? */ + rc = 0; + if (client->control->active) { /* still active? */ + req.type = DeactivateClient; + req.x.client_id = client->control->id; + rc = jack_client_deliver_request (client, &req); + } + } + return rc; } int @@ -1626,9 +1631,11 @@ jack_client_close (jack_client_t *client) { JSList *node; void *status; - - if (client->control->active) { - jack_deactivate (client); + int rc; + + rc = jack_deactivate (client); + if (rc == ESRCH) { /* already shut down? */ + return rc; } if (client->control->type == ClientExternal) { @@ -1698,7 +1705,7 @@ jack_client_close (jack_client_t *client) jack_slist_free (client->ports_ext); jack_client_free (client); - return 0; + return rc; } int