diff options
author | David Robillard <d@drobilla.net> | 2007-10-11 02:31:34 +0000 |
---|---|---|
committer | David Robillard <d@drobilla.net> | 2007-10-11 02:31:34 +0000 |
commit | 8defdcb32f4421c9d124767d1c677c05791ead55 (patch) | |
tree | d323293739b2c0ec78f0cf776265d882941c2e52 /src/libs/engine/Engine.cpp | |
parent | c7f3a28390e651e03a68b664086351788a6a2d73 (diff) | |
download | ingen-8defdcb32f4421c9d124767d1c677c05791ead55.tar.gz ingen-8defdcb32f4421c9d124767d1c677c05791ead55.tar.bz2 ingen-8defdcb32f4421c9d124767d1c677c05791ead55.zip |
Fix Gtk rendering corruption problems when running monolithic (internal engine).
Reduce Gtk main loop overhead when running monolithic.
Fix crash on importing certain Om patches.
git-svn-id: http://svn.drobilla.net/lad/ingen@870 a436a847-0d15-0410-975c-d299462d15a1
Diffstat (limited to 'src/libs/engine/Engine.cpp')
-rw-r--r-- | src/libs/engine/Engine.cpp | 27 |
1 files changed, 12 insertions, 15 deletions
diff --git a/src/libs/engine/Engine.cpp b/src/libs/engine/Engine.cpp index 44cac86c..004de200 100644 --- a/src/libs/engine/Engine.cpp +++ b/src/libs/engine/Engine.cpp @@ -120,10 +120,7 @@ Engine::main() } cout << "[Main] Done main loop." << endl; - _event_source->deactivate(); - - if (_activated) - deactivate(); + deactivate(); return 0; } @@ -152,23 +149,21 @@ Engine::main_iteration() void Engine::start_jack_driver() { - if (_audio_driver) - cerr << "[Engine] Warning: replaced audio driver" << endl; - - _audio_driver = SharedPtr<AudioDriver>(new JackAudioDriver(*this)); + if ( ! _audio_driver) + _audio_driver = SharedPtr<AudioDriver>(new JackAudioDriver(*this)); + else + cerr << "[Engine::start_jack_driver] Audio driver already running" << endl; } void Engine::start_osc_driver(int port) { - if (_event_source) - cerr << "[Engine] Warning: replaced event source (engine interface)" << endl; - - _event_source = SharedPtr<EventSource>(new OSCEngineReceiver( - *this, pre_processor_queue_size, port)); - - //_osc_driver = _event_source; + if ( ! _event_source) + _event_source = SharedPtr<EventSource>(new OSCEngineReceiver( + *this, pre_processor_queue_size, port)); + else + cerr << "[Engine::start_osc_driver] Event source already running" << endl; } @@ -247,6 +242,8 @@ Engine::deactivate() { if (!_activated) return; + + _event_source->deactivate(); /*for (Tree<GraphObject*>::iterator i = _object_store->objects().begin(); i != _object_store->objects().end(); ++i) |