From 987710474b824cb92d83ff6fa7a090f50e10756f Mon Sep 17 00:00:00 2001 From: David Robillard Date: Sat, 16 Apr 2011 05:05:32 +0000 Subject: Hide process slave stuff from Engine.hpp. git-svn-id: http://svn.drobilla.net/lad/trunk/ingen@3151 a436a847-0d15-0410-975c-d299462d15a1 --- src/engine/Engine.cpp | 35 +++++++++-------------------------- 1 file changed, 9 insertions(+), 26 deletions(-) (limited to 'src/engine/Engine.cpp') 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(a_world->store())); @@ -126,6 +124,13 @@ Engine::add_event_source(SharedPtr source) } +void +Engine::set_driver(SharedPtr 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 -- cgit v1.2.1