diff options
-rw-r--r-- | src/World.cpp | 3 | ||||
-rw-r--r-- | src/server/Engine.cpp | 11 | ||||
-rw-r--r-- | src/server/events/SetPortValue.hpp | 2 |
3 files changed, 12 insertions, 4 deletions
diff --git a/src/World.cpp b/src/World.cpp index 1e0f82c0..c91724a6 100644 --- a/src/World.cpp +++ b/src/World.cpp @@ -165,13 +165,12 @@ public: serialiser.reset(); parser.reset(); interface.reset(); - store.reset(); engine.reset(); + store.reset(); interface_factories.clear(); script_runners.clear(); - delete rdf_world; delete lv2_features; delete uris; diff --git a/src/server/Engine.cpp b/src/server/Engine.cpp index a7d77736..1f6fd70c 100644 --- a/src/server/Engine.cpp +++ b/src/server/Engine.cpp @@ -16,6 +16,8 @@ #include <sys/mman.h> +#include <limits> + #include "lv2/lv2plug.in/ns/ext/buf-size/buf-size.h" #include "events/CreatePort.hpp" @@ -95,6 +97,13 @@ Engine::~Engine() _root_graph = NULL; deactivate(); + // Process all pending events + const FrameTime end = std::numeric_limits<FrameTime>::max(); + _process_context.locate(_process_context.end(), end - _process_context.end()); + _post_processor->set_end_time(end); + _pre_processor->process(_process_context, *_post_processor, false); + _post_processor->process(); + const SPtr<Store> store = this->store(); if (store) { for (auto& s : *store.get()) { @@ -107,7 +116,6 @@ Engine::~Engine() _world->set_store(SPtr<Ingen::Store>()); - delete _maid; delete _pre_processor; delete _post_processor; delete _block_factory; @@ -115,6 +123,7 @@ Engine::~Engine() delete _broadcaster; delete _event_writer; delete _worker; + delete _maid; _driver.reset(); diff --git a/src/server/events/SetPortValue.hpp b/src/server/events/SetPortValue.hpp index 0c4e8b11..852c694e 100644 --- a/src/server/events/SetPortValue.hpp +++ b/src/server/events/SetPortValue.hpp @@ -54,7 +54,7 @@ private: void apply(Context& context); PortImpl* _port; - const Atom _value; + const Atom _value; ControlBindings::Key _binding; }; |