Mercurial > hg > svcore
diff plugin/LADSPAPluginFactory.h @ 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 | ad5f892c0c4d |
children |
line wrap: on
line diff
--- a/plugin/LADSPAPluginFactory.h Fri Mar 20 16:30:16 2020 +0000 +++ b/plugin/LADSPAPluginFactory.h Fri Mar 20 16:30:33 2020 +0000 @@ -44,14 +44,16 @@ void enumeratePlugins(std::vector<QString> &list) override; - const RealTimePluginDescriptor *getPluginDescriptor(QString identifier) const override; + RealTimePluginDescriptor getPluginDescriptor(QString identifier) + const override; - RealTimePluginInstance *instantiatePlugin(QString identifier, - int clientId, - int position, - sv_samplerate_t sampleRate, - int blockSize, - int channels) override; + std::shared_ptr<RealTimePluginInstance> + instantiatePlugin(QString identifier, + int clientId, + int position, + sv_samplerate_t sampleRate, + int blockSize, + int channels) override; QString getPluginCategory(QString identifier) override; @@ -79,8 +81,6 @@ virtual void generateTaxonomy(QString uri, QString base); virtual void generateFallbackCategories(); - void releasePlugin(RealTimePluginInstance *, QString) override; - virtual const LADSPA_Descriptor *getLADSPADescriptor(QString identifier); void loadLibrary(QString soName); @@ -89,13 +89,14 @@ std::vector<QString> m_identifiers; std::map<QString, QString> m_libraries; // identifier -> full file path - std::map<QString, RealTimePluginDescriptor *> m_rtDescriptors; + std::map<QString, RealTimePluginDescriptor> m_rtDescriptors; std::map<QString, QString> m_taxonomy; std::map<unsigned long, QString> m_lrdfTaxonomy; std::map<unsigned long, std::map<int, float> > m_portDefaults; - std::set<RealTimePluginInstance *> m_instances; + std::set<std::weak_ptr<RealTimePluginInstance>, + std::owner_less<std::weak_ptr<RealTimePluginInstance>>> m_instances; typedef std::map<QString, void *> LibraryHandleMap; LibraryHandleMap m_libraryHandles;