/* -------------------------------------------------------------------------- */
-Plugin::Plugin(juce::AudioPluginInstance* plugin, double samplerate, int buffersize)
+Plugin::Plugin(std::unique_ptr<juce::AudioPluginInstance> plugin, double samplerate, int buffersize)
: m_ui (nullptr),
- m_plugin(plugin),
+ m_plugin(std::move(plugin)),
m_id (m_idGenerator++),
m_bypass(false)
{
/* Init midiInParams. All values are empty (0x0): they will be filled during
midi learning process. */
- const OwnedArray<AudioProcessorParameter>& params = m_plugin->getParameters();
+ auto params = m_plugin->getParameters();
for (int i=0; i<params.size(); i++)
midiInParams.push_back(0x0);
{
public:
- Plugin(juce::AudioPluginInstance* p, double samplerate, int buffersize);
+ Plugin(std::unique_ptr<juce::AudioPluginInstance> p, double samplerate, int buffersize);
~Plugin();
/* getUniqueId
static int m_idGenerator;
juce::AudioProcessorEditor* m_ui; // gui
- juce::AudioPluginInstance* m_plugin; // core
+ std::unique_ptr<juce::AudioPluginInstance> m_plugin; // core
juce::AudioBuffer<float> m_buffer;
int m_id;
The following function simply drops the first hash code during comparison. */
-const juce::PluginDescription* findPluginDescription_(const string& id)
+std::unique_ptr<juce::PluginDescription> findPluginDescription_(const string& id)
{
vector<string> idParts = splitPluginDescription_(id);
- for (const juce::PluginDescription* pd : knownPluginList_) {
+ for (auto pd : knownPluginList_) {
vector<string> tmpIdParts = splitPluginDescription_(pd->createIdentifierString().toStdString());
if (idParts[0] == tmpIdParts[0] && idParts[2] == tmpIdParts[2])
- return pd;
+ return std::unique_ptr<juce::PluginDescription> (pd);
}
return nullptr;
}
int loadList(const string& filepath)
{
- juce::XmlElement* elem = juce::XmlDocument::parse(juce::File(filepath));
+ std::unique_ptr<juce::XmlElement> elem = juce::XmlDocument::parse(juce::File(filepath));
if (elem != nullptr) {
knownPluginList_.recreateFromXml(*elem);
- delete elem;
return 1;
}
return 0;
/* Initialize plugin. The default mode uses getTypeForIdentifierString,
falling back to getTypeForFile (deprecated) for old patches (< 0.14.4). */
- const juce::PluginDescription* pd = findPluginDescription_(fid);
+ auto pd = findPluginDescription_(fid);
if (pd == nullptr) {
gu_log("[pluginManager::makePlugin] no plugin found with fid=%s! Trying with "
"deprecated mode...\n", fid.c_str());
- pd = knownPluginList_.getTypeForFile(fid);
+ pd = std::move(knownPluginList_.getTypeForFile(fid));
if (pd == nullptr) {
gu_log("[pluginManager::makePlugin] still nothing to do, returning unknown plugin\n");
missingPlugins_ = true;
}
}
- juce::AudioPluginInstance* pi = pluginFormat_.createInstanceFromDescription(*pd, samplerate_, buffersize_);
+ auto pi = pluginFormat_.createInstanceFromDescription(*pd, samplerate_, buffersize_);
if (!pi) {
gu_log("[pluginManager::makePlugin] unable to create instance with fid=%s!\n", fid.c_str());
missingPlugins_ = true;
return {};
}
gu_log("[pluginManager::makePlugin] plugin instance with fid=%s created\n", fid.c_str());
-
- return std::make_unique<Plugin>(pi, samplerate_, buffersize_);
+ return std::make_unique<Plugin>(std::move(pi), samplerate_, buffersize_);
}