diff options
author | David Robillard <d@drobilla.net> | 2012-05-18 18:03:24 +0000 |
---|---|---|
committer | David Robillard <d@drobilla.net> | 2012-05-18 18:03:24 +0000 |
commit | ec4fd6dd3809a055b66c28f841df277e4cd9f62e (patch) | |
tree | 229dbb5f8046753c433853c890c32b1fdac97a48 /src/server/Engine.cpp | |
parent | da03dbe262f38fa0cc5eaacd176a4d8efe5029db (diff) | |
download | ingen-ec4fd6dd3809a055b66c28f841df277e4cd9f62e.tar.gz ingen-ec4fd6dd3809a055b66c28f841df277e4cd9f62e.tar.bz2 ingen-ec4fd6dd3809a055b66c28f841df277e4cd9f62e.zip |
Beginnings of a test framework.
git-svn-id: http://svn.drobilla.net/lad/trunk/ingen@4427 a436a847-0d15-0410-975c-d299462d15a1
Diffstat (limited to 'src/server/Engine.cpp')
-rw-r--r-- | src/server/Engine.cpp | 25 |
1 files changed, 21 insertions, 4 deletions
diff --git a/src/server/Engine.cpp b/src/server/Engine.cpp index 69ad435b..9359bacf 100644 --- a/src/server/Engine.cpp +++ b/src/server/Engine.cpp @@ -14,7 +14,6 @@ along with Ingen. If not, see <http://www.gnu.org/licenses/>. */ -#include <cassert> #include <sys/mman.h> #include <unistd.h> @@ -31,6 +30,7 @@ #include "Broadcaster.hpp" #include "BufferFactory.hpp" +#include "DirectDriver.hpp" #include "ControlBindings.hpp" #include "Driver.hpp" #include "Engine.hpp" @@ -142,14 +142,24 @@ execute_and_delete_event(ProcessContext& context, Event* ev) delete ev; } +void +Engine::init(double sample_rate, uint32_t block_length) +{ + set_driver(SharedPtr<Driver>(new DirectDriver(sample_rate, block_length))); +} + bool Engine::activate() { - assert(_driver); + if (!_driver) { + return false; + } + ThreadManager::single_threaded = true; _buffer_factory->set_block_length(_driver->block_length()); + _pre_processor->start(); _message_context.Thread::start(); const Ingen::Shared::URIs& uris = world()->uris(); @@ -226,8 +236,15 @@ Engine::activate() void Engine::deactivate() { - _driver->deactivate(); - _root_patch->deactivate(); + _pre_processor->stop(); + + if (_driver) { + _driver->deactivate(); + } + + if (_root_patch) { + _root_patch->deactivate(); + } ThreadManager::single_threaded = true; } |