summaryrefslogtreecommitdiffstats
path: root/src/libs/engine/Engine.cpp
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2007-10-11 02:31:34 +0000
committerDavid Robillard <d@drobilla.net>2007-10-11 02:31:34 +0000
commit8defdcb32f4421c9d124767d1c677c05791ead55 (patch)
treed323293739b2c0ec78f0cf776265d882941c2e52 /src/libs/engine/Engine.cpp
parentc7f3a28390e651e03a68b664086351788a6a2d73 (diff)
downloadingen-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.cpp27
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)