diff options
author | David Robillard <d@drobilla.net> | 2018-01-17 00:10:50 +0100 |
---|---|---|
committer | David Robillard <d@drobilla.net> | 2018-01-17 00:10:50 +0100 |
commit | bd50ebb65df099d84fcf8978c7dc1db7db3b2917 (patch) | |
tree | d9d842e08c82dcb92ca4b4494b52953735cbb851 /src/server/ingen_lv2.cpp | |
parent | 3441b4268a070418b6d7b7266d93b265ba79f45f (diff) | |
download | ingen-bd50ebb65df099d84fcf8978c7dc1db7db3b2917.tar.gz ingen-bd50ebb65df099d84fcf8978c7dc1db7db3b2917.tar.bz2 ingen-bd50ebb65df099d84fcf8978c7dc1db7db3b2917.zip |
Clean up Engine component memory management and trim include tree
Diffstat (limited to 'src/server/ingen_lv2.cpp')
-rw-r--r-- | src/server/ingen_lv2.cpp | 24 |
1 files changed, 11 insertions, 13 deletions
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> engine, LV2Driver* driver) +ingen_lv2_main(SPtr<Engine> engine, const SPtr<LV2Driver>& 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> interface = SPtr<Interface>(engine->interface(), - NullDeleter<Interface>); + SPtr<Interface> 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<LV2Driver>& driver = static_ptr_cast<LV2Driver>(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<Server::Engine> engine = dynamic_ptr_cast<Server::Engine>( - me->world->engine()); - LV2Driver* driver = (LV2Driver*)engine->driver(); + IngenPlugin* me = (IngenPlugin*)instance; + SPtr<Server::Engine> engine = static_ptr_cast<Server::Engine>(me->world->engine()); + const SPtr<LV2Driver>& driver = static_ptr_cast<LV2Driver>(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<Server::Engine> engine = static_ptr_cast<Server::Engine>(me->world->engine()); + const SPtr<LV2Driver>& driver = static_ptr_cast<LV2Driver>(engine->driver()); Server::ThreadManager::set_flag(Ingen::Server::THREAD_PROCESS); Server::ThreadManager::set_flag(Ingen::Server::THREAD_IS_REAL_TIME); |