summaryrefslogtreecommitdiffstats
path: root/src/server/Engine.cpp
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2011-09-23 23:51:44 +0000
committerDavid Robillard <d@drobilla.net>2011-09-23 23:51:44 +0000
commit4cc5c82a87cf2316f425a9ea1de0fb29d0c24c8e (patch)
treed2b874fb8e7437cf7ea819fa6faca36e1c3ddc9d /src/server/Engine.cpp
parent41f1be0a68676f33dc1d7dfbb32c5d6440ebd4c9 (diff)
downloadingen-4cc5c82a87cf2316f425a9ea1de0fb29d0c24c8e.tar.gz
ingen-4cc5c82a87cf2316f425a9ea1de0fb29d0c24c8e.tar.bz2
ingen-4cc5c82a87cf2316f425a9ea1de0fb29d0c24c8e.zip
Fix memory leaks and errors.
git-svn-id: http://svn.drobilla.net/lad/trunk/ingen@3482 a436a847-0d15-0410-975c-d299462d15a1
Diffstat (limited to 'src/server/Engine.cpp')
-rw-r--r--src/server/Engine.cpp11
1 files changed, 8 insertions, 3 deletions
diff --git a/src/server/Engine.cpp b/src/server/Engine.cpp
index 3aa05eba..301d90e1 100644
--- a/src/server/Engine.cpp
+++ b/src/server/Engine.cpp
@@ -57,7 +57,6 @@ bool ThreadManager::single_threaded = true;
Engine::Engine(Ingen::Shared::World* a_world)
: _world(a_world)
, _broadcaster(new ClientBroadcaster())
- , _buffer_factory(new BufferFactory(*this, a_world->uris()))
, _control_bindings(new ControlBindings(*this))
, _maid(new Raul::Maid(event_queue_size()))
, _message_context(new MessageContext(*this))
@@ -66,9 +65,13 @@ Engine::Engine(Ingen::Shared::World* a_world)
, _quit_flag(false)
{
if (a_world->store()) {
- assert(PtrCast<EngineStore>(a_world->store()));
+ SharedPtr<EngineStore> estore = PtrCast<EngineStore>(a_world->store());
+ _buffer_factory = estore->buffer_factory().get();
} else {
- a_world->set_store(SharedPtr<Ingen::Shared::Store>(new EngineStore()));
+ _buffer_factory = new BufferFactory(*this, a_world->uris());
+ a_world->set_store(
+ SharedPtr<Ingen::Shared::Store>(
+ new EngineStore(SharedPtr<BufferFactory>(_buffer_factory))));
}
}
@@ -85,6 +88,8 @@ Engine::~Engine()
delete _maid;
delete _post_processor;
delete _node_factory;
+ delete _message_context;
+ delete _control_bindings;
delete _broadcaster;
munlockall();