summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2008-11-16 18:20:28 +0000
committerDavid Robillard <d@drobilla.net>2008-11-16 18:20:28 +0000
commit77fc40827ed8d713e9cbd8eded2db46aa47ce2d9 (patch)
tree8b14fc81c51e534a71cb3d1a75002fd58cafdc14
parent7ef7533bba52f687e4d311aca2e687264249d0c6 (diff)
downloadingen-77fc40827ed8d713e9cbd8eded2db46aa47ce2d9.tar.gz
ingen-77fc40827ed8d713e9cbd8eded2db46aa47ce2d9.tar.bz2
ingen-77fc40827ed8d713e9cbd8eded2db46aa47ce2d9.zip
Shut down JACK cleanly.
git-svn-id: http://svn.drobilla.net/lad/trunk/ingen@1729 a436a847-0d15-0410-975c-d299462d15a1
-rw-r--r--src/engine/Engine.cpp4
-rw-r--r--src/engine/JackAudioDriver.cpp18
2 files changed, 8 insertions, 14 deletions
diff --git a/src/engine/Engine.cpp b/src/engine/Engine.cpp
index eb9e2aa8..b5cbfdb4 100644
--- a/src/engine/Engine.cpp
+++ b/src/engine/Engine.cpp
@@ -234,13 +234,13 @@ Engine::deactivate()
if ((*i)->as_node() != NULL && (*i)->as_node()->parent() == NULL)
(*i)->as_node()->deactivate();*/
+ _audio_driver->deactivate();
+
if (_midi_driver != NULL) {
_midi_driver->deactivate();
delete _midi_driver;
_midi_driver = NULL;
}
-
- _audio_driver->deactivate();
_audio_driver->root_patch()->deactivate();
diff --git a/src/engine/JackAudioDriver.cpp b/src/engine/JackAudioDriver.cpp
index 23577e33..3f39f363 100644
--- a/src/engine/JackAudioDriver.cpp
+++ b/src/engine/JackAudioDriver.cpp
@@ -185,18 +185,11 @@ void
JackAudioDriver::deactivate()
{
if (_is_activated) {
-
- //for (Raul::List<JackAudioPort*>::iterator i = _ports.begin(); i != _ports.end(); ++i)
- // jack_port_unregister(_client, (*i)->jack_port());
-
- jack_deactivate(_client);
_is_activated = false;
-
+ jack_deactivate(_client);
+ _jack_thread->stop();
_ports.clear();
-
cout << "[JackAudioDriver] Deactivated Jack client." << endl;
-
- //_engine.post_processor()->stop();
}
}
@@ -327,14 +320,15 @@ JackAudioDriver::_process_cb(jack_nframes_t nframes)
(*i)->prepare_buffer(nframes);
}
- assert(_engine.midi_driver());
- _engine.midi_driver()->pre_process(_process_context);
+ if (_engine.midi_driver())
+ _engine.midi_driver()->pre_process(_process_context);
// Run root patch
if (_root_patch)
_root_patch->process(_process_context);
- _engine.midi_driver()->post_process(_process_context);
+ if (_engine.midi_driver())
+ _engine.midi_driver()->post_process(_process_context);
_engine.post_processor()->set_end_time(_process_context.end());