summaryrefslogtreecommitdiff
path: root/libs/backends/jack/jack_audiobackend.cc
diff options
context:
space:
mode:
authorRobin Gareus <robin@gareus.org>2015-01-30 01:25:54 +0100
committerRobin Gareus <robin@gareus.org>2015-01-30 01:28:52 +0100
commit66eef257d8d4ec4661aba83b878acfd4a94b7d11 (patch)
tree8b50adcf4e1fdc87973a5281c96d739766dfb746 /libs/backends/jack/jack_audiobackend.cc
parent55ba5208b91b4855d99a4fcefbc4fa7229ea6e19 (diff)
fix jack thread joining
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.
Diffstat (limited to 'libs/backends/jack/jack_audiobackend.cc')
-rw-r--r--libs/backends/jack/jack_audiobackend.cc9
1 files 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<void()> f)
int
JACKAudioBackend::join_process_threads ()
{
- GET_PRIVATE_JACK_POINTER_RET (_priv_jack, -1);
-
int ret = 0;
for (std::vector<jack_native_thread_t>::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;
}