diff options
author | David Robillard <d@drobilla.net> | 2007-01-06 19:39:56 +0000 |
---|---|---|
committer | David Robillard <d@drobilla.net> | 2007-01-06 19:39:56 +0000 |
commit | 69c5e7fe16b7d9d08db81a6d5e2762f0be3b081f (patch) | |
tree | 68fd1ea83beedaaaa97846ed09240a3585b2d931 /src/libs/engine/JackAudioDriver.cpp | |
parent | 2122a857662203936a04a39df7d0e1ad1db82853 (diff) | |
download | ingen-69c5e7fe16b7d9d08db81a6d5e2762f0be3b081f.tar.gz ingen-69c5e7fe16b7d9d08db81a6d5e2762f0be3b081f.tar.bz2 ingen-69c5e7fe16b7d9d08db81a6d5e2762f0be3b081f.zip |
Added ability to get Raul Thread for current calling context.
Strong threading assertions.
Flowcanvas port removal fixes.
Patch port destruction.
Code cleanups, bug fixes.
git-svn-id: http://svn.drobilla.net/lad/ingen@234 a436a847-0d15-0410-975c-d299462d15a1
Diffstat (limited to 'src/libs/engine/JackAudioDriver.cpp')
-rw-r--r-- | src/libs/engine/JackAudioDriver.cpp | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/src/libs/engine/JackAudioDriver.cpp b/src/libs/engine/JackAudioDriver.cpp index 082afe5a..58834139 100644 --- a/src/libs/engine/JackAudioDriver.cpp +++ b/src/libs/engine/JackAudioDriver.cpp @@ -22,6 +22,7 @@ #include "Engine.h" #include "util.h" #include "Event.h" +#include "ThreadManager.h" #include "QueuedEvent.h" #include "EventSource.h" #include "PostProcessor.h" @@ -122,6 +123,7 @@ JackAudioDriver::JackAudioDriver(Engine& engine, std::string server_name, jack_client_t* jack_client) : _engine(engine), + _jack_thread(NULL), _client(jack_client), _buffer_size(jack_client ? jack_get_buffer_size(jack_client) : 0), _sample_rate(jack_client ? jack_get_sample_rate(jack_client) : 0), @@ -159,6 +161,7 @@ JackAudioDriver::JackAudioDriver(Engine& engine, jack_on_shutdown(_client, shutdown_cb, this); + jack_set_thread_init_callback(_client, thread_init_cb, this); jack_set_sample_rate_callback(_client, sample_rate_cb, this); jack_set_buffer_size_callback(_client, buffer_size_cb, this); } @@ -310,10 +313,21 @@ JackAudioDriver::_process_cb(jack_nframes_t nframes) void +JackAudioDriver::_thread_init_cb() +{ + // Initialize thread specific data + _jack_thread = Thread::create_for_this_thread("Jack"); + assert(&Thread::get() == _jack_thread); + _jack_thread->set_context(THREAD_PROCESS); + assert(ThreadManager::current_thread_id() == THREAD_PROCESS); +} + +void JackAudioDriver::_shutdown_cb() { cout << "[JackAudioDriver] Jack shutdown. Exiting." << endl; _engine.quit(); + _jack_thread = NULL; } |