Mercurial > hg > svcore
comparison plugin/RealTimePluginFactory.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 |
---|---|
22 #ifndef SV_REALTIME_PLUGIN_FACTORY_H | 22 #ifndef SV_REALTIME_PLUGIN_FACTORY_H |
23 #define SV_REALTIME_PLUGIN_FACTORY_H | 23 #define SV_REALTIME_PLUGIN_FACTORY_H |
24 | 24 |
25 #include <QString> | 25 #include <QString> |
26 #include <vector> | 26 #include <vector> |
27 #include <memory> | |
27 | 28 |
28 #include "base/Debug.h" | 29 #include "base/Debug.h" |
29 #include "base/BaseTypes.h" | 30 #include "base/BaseTypes.h" |
30 | 31 |
31 class RealTimePluginInstance; | 32 class RealTimePluginInstance; |
78 virtual void enumeratePlugins(std::vector<QString> &list) = 0; | 79 virtual void enumeratePlugins(std::vector<QString> &list) = 0; |
79 | 80 |
80 /** | 81 /** |
81 * Get some basic information about a plugin (rapidly). | 82 * Get some basic information about a plugin (rapidly). |
82 */ | 83 */ |
83 virtual const RealTimePluginDescriptor *getPluginDescriptor(QString identifier) const = 0; | 84 virtual RealTimePluginDescriptor getPluginDescriptor(QString identifier) const = 0; |
84 | 85 |
85 /** | 86 /** |
86 * Instantiate a plugin. | 87 * Instantiate a plugin. |
87 */ | 88 */ |
88 virtual RealTimePluginInstance *instantiatePlugin(QString identifier, | 89 virtual std::shared_ptr<RealTimePluginInstance> instantiatePlugin(QString identifier, |
89 int clientId, | 90 int clientId, |
90 int position, | 91 int position, |
91 sv_samplerate_t sampleRate, | 92 sv_samplerate_t sampleRate, |
92 int blockSize, | 93 int blockSize, |
93 int channels) = 0; | 94 int channels) = 0; |
106 virtual QString getPluginLibraryPath(QString identifier) = 0; | 107 virtual QString getPluginLibraryPath(QString identifier) = 0; |
107 | 108 |
108 protected: | 109 protected: |
109 RealTimePluginFactory() { } | 110 RealTimePluginFactory() { } |
110 | 111 |
111 // for call by RealTimePluginInstance dtor | |
112 virtual void releasePlugin(RealTimePluginInstance *, QString identifier) = 0; | |
113 friend class RealTimePluginInstance; | |
114 | |
115 static sv_samplerate_t m_sampleRate; | 112 static sv_samplerate_t m_sampleRate; |
116 }; | 113 }; |
117 | 114 |
118 #endif | 115 #endif |