comparison 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
comparison
equal deleted inserted replaced
1829:51fd27fbce9a 1830:5f8fbbde08ff
42 42
43 const std::vector<QString> &getPluginIdentifiers() const override; 43 const std::vector<QString> &getPluginIdentifiers() const override;
44 44
45 void enumeratePlugins(std::vector<QString> &list) override; 45 void enumeratePlugins(std::vector<QString> &list) override;
46 46
47 const RealTimePluginDescriptor *getPluginDescriptor(QString identifier) const override; 47 RealTimePluginDescriptor getPluginDescriptor(QString identifier)
48 const override;
48 49
49 RealTimePluginInstance *instantiatePlugin(QString identifier, 50 std::shared_ptr<RealTimePluginInstance>
50 int clientId, 51 instantiatePlugin(QString identifier,
51 int position, 52 int clientId,
52 sv_samplerate_t sampleRate, 53 int position,
53 int blockSize, 54 sv_samplerate_t sampleRate,
54 int channels) override; 55 int blockSize,
56 int channels) override;
55 57
56 QString getPluginCategory(QString identifier) override; 58 QString getPluginCategory(QString identifier) override;
57 59
58 QString getPluginLibraryPath(QString identifier) override; 60 QString getPluginLibraryPath(QString identifier) override;
59 61
77 79
78 virtual void discoverPluginsFrom(QString soName); 80 virtual void discoverPluginsFrom(QString soName);
79 virtual void generateTaxonomy(QString uri, QString base); 81 virtual void generateTaxonomy(QString uri, QString base);
80 virtual void generateFallbackCategories(); 82 virtual void generateFallbackCategories();
81 83
82 void releasePlugin(RealTimePluginInstance *, QString) override;
83
84 virtual const LADSPA_Descriptor *getLADSPADescriptor(QString identifier); 84 virtual const LADSPA_Descriptor *getLADSPADescriptor(QString identifier);
85 85
86 void loadLibrary(QString soName); 86 void loadLibrary(QString soName);
87 void unloadLibrary(QString soName); 87 void unloadLibrary(QString soName);
88 void unloadUnusedLibraries(); 88 void unloadUnusedLibraries();
89 89
90 std::vector<QString> m_identifiers; 90 std::vector<QString> m_identifiers;
91 std::map<QString, QString> m_libraries; // identifier -> full file path 91 std::map<QString, QString> m_libraries; // identifier -> full file path
92 std::map<QString, RealTimePluginDescriptor *> m_rtDescriptors; 92 std::map<QString, RealTimePluginDescriptor> m_rtDescriptors;
93 93
94 std::map<QString, QString> m_taxonomy; 94 std::map<QString, QString> m_taxonomy;
95 std::map<unsigned long, QString> m_lrdfTaxonomy; 95 std::map<unsigned long, QString> m_lrdfTaxonomy;
96 std::map<unsigned long, std::map<int, float> > m_portDefaults; 96 std::map<unsigned long, std::map<int, float> > m_portDefaults;
97 97
98 std::set<RealTimePluginInstance *> m_instances; 98 std::set<std::weak_ptr<RealTimePluginInstance>,
99 std::owner_less<std::weak_ptr<RealTimePluginInstance>>> m_instances;
99 100
100 typedef std::map<QString, void *> LibraryHandleMap; 101 typedef std::map<QString, void *> LibraryHandleMap;
101 LibraryHandleMap m_libraryHandles; 102 LibraryHandleMap m_libraryHandles;
102 }; 103 };
103 104