From 4cc5c82a87cf2316f425a9ea1de0fb29d0c24c8e Mon Sep 17 00:00:00 2001 From: David Robillard Date: Fri, 23 Sep 2011 23:51:44 +0000 Subject: Fix memory leaks and errors. git-svn-id: http://svn.drobilla.net/lad/trunk/ingen@3482 a436a847-0d15-0410-975c-d299462d15a1 --- src/server/Engine.cpp | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) (limited to 'src/server/Engine.cpp') 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(a_world->store())); + SharedPtr estore = PtrCast(a_world->store()); + _buffer_factory = estore->buffer_factory().get(); } else { - a_world->set_store(SharedPtr(new EngineStore())); + _buffer_factory = new BufferFactory(*this, a_world->uris()); + a_world->set_store( + SharedPtr( + new EngineStore(SharedPtr(_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(); -- cgit v1.2.1