summaryrefslogtreecommitdiffstats
path: root/src/server/Engine.cpp
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2016-12-06 11:03:35 -0500
committerDavid Robillard <d@drobilla.net>2016-12-13 19:15:26 -0500
commit0752556bde5659a933744658cdf63509000a5080 (patch)
tree0ab580ab247f55886515ad23e1bd89a51063acd9 /src/server/Engine.cpp
parent6502a2505fc390e3099331b5ea521efd56812aaa (diff)
downloadingen-0752556bde5659a933744658cdf63509000a5080.tar.gz
ingen-0752556bde5659a933744658cdf63509000a5080.tar.bz2
ingen-0752556bde5659a933744658cdf63509000a5080.zip
Fix some real-time safety issues
Diffstat (limited to 'src/server/Engine.cpp')
-rw-r--r--src/server/Engine.cpp11
1 files changed, 10 insertions, 1 deletions
diff --git a/src/server/Engine.cpp b/src/server/Engine.cpp
index 6e61f463..1a9d82b0 100644
--- a/src/server/Engine.cpp
+++ b/src/server/Engine.cpp
@@ -99,7 +99,9 @@ Engine::Engine(Ingen::World* world)
_control_bindings = new ControlBindings(*this);
for (int i = 0; i < world->conf().option("threads").get<int32_t>(); ++i) {
- _run_contexts.push_back(new RunContext(*this, i, i > 0));
+ Raul::RingBuffer* ring = new Raul::RingBuffer(24 * event_queue_size());
+ _notifications.push_back(ring);
+ _run_contexts.push_back(new RunContext(*this, ring, i, i > 0));
}
_world->lv2_features().add_feature(_worker->schedule_feature());
@@ -149,6 +151,13 @@ Engine::~Engine()
_post_processor->process();
}
+ for (RunContext* ctx : _run_contexts) {
+ delete ctx;
+ }
+ for (Raul::RingBuffer* ring : _notifications) {
+ delete ring;
+ }
+
const SPtr<Store> store = this->store();
if (store) {
for (auto& s : *store.get()) {