summaryrefslogtreecommitdiffstats
path: root/src/server/Engine.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/server/Engine.cpp')
-rw-r--r--src/server/Engine.cpp14
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;
}