diff options
Diffstat (limited to 'src/engine/Engine.cpp')
-rw-r--r-- | src/engine/Engine.cpp | 35 |
1 files changed, 9 insertions, 26 deletions
diff --git a/src/engine/Engine.cpp b/src/engine/Engine.cpp index b57fa542..538b967f 100644 --- a/src/engine/Engine.cpp +++ b/src/engine/Engine.cpp @@ -43,7 +43,6 @@ #include "PatchImpl.hpp" #include "PostProcessor.hpp" #include "ProcessContext.hpp" -#include "ProcessSlave.hpp" #include "QueuedEngineInterface.hpp" #include "ThreadManager.hpp" #include "tuning.hpp" @@ -67,7 +66,6 @@ Engine::Engine(Ingen::Shared::World* a_world) , _buffer_factory(new BufferFactory(*this, a_world->uris())) , _control_bindings(new ControlBindings(*this)) , _quit_flag(false) - , _activated(false) { if (a_world->store()) { assert(PtrCast<EngineStore>(a_world->store())); @@ -126,6 +124,13 @@ Engine::add_event_source(SharedPtr<EventSource> source) } +void +Engine::set_driver(SharedPtr<Driver> driver) +{ + _driver = driver; +} + + static void execute_and_delete_event(ProcessContext& context, QueuedEvent* ev) { @@ -139,19 +144,13 @@ execute_and_delete_event(ProcessContext& context, QueuedEvent* ev) bool Engine::activate() { - if (_activated) - return true; - assert(_driver); - //assert(ThreadManager::single_threaded == true); ThreadManager::single_threaded = true; _buffer_factory->set_block_length(_driver->block_length()); _message_context->Thread::start(); - uint32_t parallelism = _world->conf()->option("parallelism").get_int32(); - for (EventSources::iterator i = _event_sources.begin(); i != _event_sources.end(); ++i) (*i)->activate_source(); @@ -205,15 +204,8 @@ Engine::activate() } _driver->activate(); - - _process_slaves.clear(); - _process_slaves.reserve(parallelism); - for (size_t i=0; i < parallelism - 1; ++i) - _process_slaves.push_back(new ProcessSlave(*this, _driver->is_realtime())); - root_patch->enable(); - _activated = true; ThreadManager::single_threaded = false; return true; @@ -223,16 +215,12 @@ Engine::activate() void Engine::deactivate() { - if (!_activated) - return; - for (EventSources::iterator i = _event_sources.begin(); i != _event_sources.end(); ++i) (*i)->deactivate_source(); _driver->deactivate(); _driver->root_patch()->deactivate(); - _activated = false; ThreadManager::single_threaded = true; } @@ -240,16 +228,11 @@ Engine::deactivate() void Engine::process_events(ProcessContext& context) { + ThreadManager::assert_thread(THREAD_PROCESS); + for (EventSources::iterator i = _event_sources.begin(); i != _event_sources.end(); ++i) (*i)->process(*_post_processor, context); } -bool -Engine::activated() -{ - return _activated; -} - - } // namespace Ingen |