diff options
author | David Robillard <d@drobilla.net> | 2017-02-11 15:55:58 +0100 |
---|---|---|
committer | David Robillard <d@drobilla.net> | 2017-02-12 11:11:14 +0100 |
commit | b6b8f7b3371c6c27055ec1fba970de56dd057a01 (patch) | |
tree | 9e8bd44a1c4196e962f87c0c68e8f0dc09554806 /src/server/Engine.cpp | |
parent | 740b0b7874c0393a14354eb447d689bc30da3eac (diff) | |
download | ingen-b6b8f7b3371c6c27055ec1fba970de56dd057a01.tar.gz ingen-b6b8f7b3371c6c27055ec1fba970de56dd057a01.tar.bz2 ingen-b6b8f7b3371c6c27055ec1fba970de56dd057a01.zip |
Fix memory leaks
Diffstat (limited to 'src/server/Engine.cpp')
-rw-r--r-- | src/server/Engine.cpp | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/src/server/Engine.cpp b/src/server/Engine.cpp index 1a9d82b0..e70d5522 100644 --- a/src/server/Engine.cpp +++ b/src/server/Engine.cpp @@ -151,7 +151,13 @@ Engine::~Engine() _post_processor->process(); } + delete _atom_interface; + + // Delete run contexts + _quit_flag = true; + _tasks_available.notify_all(); for (RunContext* ctx : _run_contexts) { + ctx->join(); delete ctx; } for (Raul::RingBuffer* ring : _notifications) { @@ -176,9 +182,11 @@ Engine::~Engine() delete _pre_processor; delete _post_processor; delete _undo_stack; + delete _redo_stack; delete _block_factory; delete _control_bindings; delete _broadcaster; + delete _sync_worker; delete _worker; delete _maid; @@ -227,8 +235,10 @@ Engine::pending_notifications() bool Engine::wait_for_tasks() { - std::unique_lock<std::mutex> lock(_tasks_mutex); - _tasks_available.wait(lock); + if (!_quit_flag) { + std::unique_lock<std::mutex> lock(_tasks_mutex); + _tasks_available.wait(lock); + } return !_quit_flag; } |