From bd50ebb65df099d84fcf8978c7dc1db7db3b2917 Mon Sep 17 00:00:00 2001 From: David Robillard Date: Wed, 17 Jan 2018 00:10:50 +0100 Subject: Clean up Engine component memory management and trim include tree --- src/server/ingen_lv2.cpp | 24 +++++++++++------------- 1 file changed, 11 insertions(+), 13 deletions(-) (limited to 'src/server/ingen_lv2.cpp') diff --git a/src/server/ingen_lv2.cpp b/src/server/ingen_lv2.cpp index 8dfea405..1b6652ae 100644 --- a/src/server/ingen_lv2.cpp +++ b/src/server/ingen_lv2.cpp @@ -405,7 +405,7 @@ using namespace Ingen; using namespace Ingen::Server; static void -ingen_lv2_main(SPtr engine, LV2Driver* driver) +ingen_lv2_main(SPtr engine, const SPtr& driver) { while (true) { // Wait until there is work to be done @@ -551,8 +551,7 @@ ingen_instantiate(const LV2_Descriptor* descriptor, plugin->engine = engine; plugin->world->set_engine(engine); - SPtr interface = SPtr(engine->interface(), - NullDeleter); + SPtr interface = engine->interface(); plugin->world->set_interface(interface); @@ -600,9 +599,9 @@ ingen_connect_port(LV2_Handle instance, uint32_t port, void* data) { using namespace Ingen::Server; - IngenPlugin* me = (IngenPlugin*)instance; - Server::Engine* engine = (Server::Engine*)me->world->engine().get(); - LV2Driver* driver = (LV2Driver*)engine->driver(); + IngenPlugin* me = (IngenPlugin*)instance; + Server::Engine* engine = (Server::Engine*)me->world->engine().get(); + const SPtr& driver = static_ptr_cast(engine->driver()); if (port < driver->ports().size()) { driver->ports().at(port)->set_buffer(data); } else { @@ -613,10 +612,9 @@ ingen_connect_port(LV2_Handle instance, uint32_t port, void* data) static void ingen_activate(LV2_Handle instance) { - IngenPlugin* me = (IngenPlugin*)instance; - SPtr engine = dynamic_ptr_cast( - me->world->engine()); - LV2Driver* driver = (LV2Driver*)engine->driver(); + IngenPlugin* me = (IngenPlugin*)instance; + SPtr engine = static_ptr_cast(me->world->engine()); + const SPtr& driver = static_ptr_cast(engine->driver()); engine->activate(); me->main = new std::thread(ingen_lv2_main, engine, driver); } @@ -624,9 +622,9 @@ ingen_activate(LV2_Handle instance) static void ingen_run(LV2_Handle instance, uint32_t sample_count) { - IngenPlugin* me = (IngenPlugin*)instance; - Server::Engine* engine = (Server::Engine*)me->world->engine().get(); - LV2Driver* driver = (LV2Driver*)engine->driver(); + IngenPlugin* me = (IngenPlugin*)instance; + SPtr engine = static_ptr_cast(me->world->engine()); + const SPtr& driver = static_ptr_cast(engine->driver()); Server::ThreadManager::set_flag(Ingen::Server::THREAD_PROCESS); Server::ThreadManager::set_flag(Ingen::Server::THREAD_IS_REAL_TIME); -- cgit v1.2.1