From 66eef257d8d4ec4661aba83b878acfd4a94b7d11 Mon Sep 17 00:00:00 2001 From: Robin Gareus Date: Fri, 30 Jan 2015 01:25:54 +0100 Subject: [PATCH] fix jack thread joining MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit at the time the graph gets around to takes down client threads, the jack-backend’s jack_client has been reset. But never mind: libjack does not care about it, anyway. --- libs/backends/jack/jack_audiobackend.cc | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/libs/backends/jack/jack_audiobackend.cc b/libs/backends/jack/jack_audiobackend.cc index 64991c1623..a51c385fa4 100644 --- a/libs/backends/jack/jack_audiobackend.cc +++ b/libs/backends/jack/jack_audiobackend.cc @@ -833,19 +833,20 @@ JACKAudioBackend::create_process_thread (boost::function f) int JACKAudioBackend::join_process_threads () { - GET_PRIVATE_JACK_POINTER_RET (_priv_jack, -1); - int ret = 0; for (std::vector::const_iterator i = _jack_threads.begin (); i != _jack_threads.end(); i++) { #if defined(USING_JACK2_EXPANSION_OF_JACK_API) || defined(PLATFORM_WINDOWS) - if (jack_client_stop_thread (_priv_jack, *i) != 0) { + // jack_client is not used by JACK2's implementation + // also jack_client_close() leaves threads active + if (jack_client_stop_thread ((jack_client_t)NULL, *i) != 0) #else void* status; - if (pthread_join (*i, &status) != 0) { + if (pthread_join (*i, &status) != 0) #endif + { error << "AudioEngine: cannot stop process thread" << endmsg; ret += -1; }