Mercurial > hg > svcore
diff plugin/NativeVampPluginFactory.cpp @ 1830:5f8fbbde08ff audio-source-refactor
Use shared_ptr for plugin instances throughout
author | Chris Cannam |
---|---|
date | Fri, 20 Mar 2020 16:30:33 +0000 |
parents | 5750b9e60818 |
children |
line wrap: on
line diff
--- a/plugin/NativeVampPluginFactory.cpp Fri Mar 20 16:30:16 2020 +0000 +++ b/plugin/NativeVampPluginFactory.cpp Fri Mar 20 16:30:33 2020 +0000 @@ -297,13 +297,13 @@ } } -Vamp::Plugin * +std::shared_ptr<Vamp::Plugin> NativeVampPluginFactory::instantiatePlugin(QString identifier, sv_samplerate_t inputSampleRate) { Profiler profiler("NativeVampPluginFactory::instantiatePlugin"); - Vamp::Plugin *rv = nullptr; + std::shared_ptr<Vamp::Plugin> rv = nullptr; Vamp::PluginHostAdapter *plugin = nullptr; const VampPluginDescriptor *descriptor = nullptr; @@ -363,7 +363,8 @@ if (plugin) { m_handleMap[plugin] = libraryHandle; - rv = new PluginDeletionNotifyAdapter(plugin, this); + rv = std::shared_ptr<Vamp::Plugin> + (new PluginDeletionNotifyAdapter(plugin, this)); } #ifdef DEBUG_PLUGIN_SCAN_AND_INSTANTIATE @@ -384,7 +385,7 @@ } void -NativeVampPluginFactory::pluginDeleted(Vamp::Plugin *plugin) +NativeVampPluginFactory::pluginDeleted(Vamp::Plugin* plugin) { void *handle = m_handleMap[plugin]; if (!handle) return; @@ -480,15 +481,13 @@ catlist.push_back(s.toStdString()); } - Vamp::Plugin *p = instantiatePlugin(identifier, 44100); + std::shared_ptr<Vamp::Plugin> p = instantiatePlugin(identifier, 44100); if (!p) return {}; auto psd = piper_vamp::PluginStaticData::fromPlugin(pluginKey, catlist, - p); + p.get()); - delete p; - m_pluginData[identifier] = psd; return psd; }