/* -------------------------------------------------------------------------- */
-Plugin::Plugin(ID id, juce::AudioPluginInstance* plugin, double samplerate,
+Plugin::Plugin(ID id, std::unique_ptr<juce::AudioPluginInstance> plugin, double samplerate,
int buffersize)
: id (id),
valid (true),
- m_plugin (plugin),
+ m_plugin (std::move(plugin)),
m_bypass (false)
{
/* Initialize midiInParams vector, where midiInParams.size == number of
/* -------------------------------------------------------------------------- */
-Plugin::Plugin(const Plugin& o)
+Plugin::Plugin(Plugin& o)
: id (o.id),
+ midiInParams(o.midiInParams),
valid (o.valid),
- m_plugin (o.m_plugin),
- m_bypass (o.m_bypass.load()),
- midiInParams(o.midiInParams)
+ m_plugin (std::move(o.m_plugin)),
+ m_bypass (o.m_bypass.load())
{
}
public:
Plugin(ID id, const std::string& UID);
- Plugin(ID id, juce::AudioPluginInstance* p, double samplerate, int buffersize);
- Plugin(const Plugin& o);
+ Plugin(ID id, std::unique_ptr<juce::AudioPluginInstance> p, double samplerate, int buffersize);
+ Plugin(Plugin& o);
~Plugin();
/* getUniqueId
int countMainOutChannels() const;
- juce::AudioPluginInstance* m_plugin;
+ std::unique_ptr<juce::AudioPluginInstance> m_plugin;
juce::AudioBuffer<float> m_buffer;
std::atomic<bool> m_bypass;
The following function simply drops the first hash code during comparison. */
-const juce::PluginDescription* findPluginDescription_(const std::string& id)
+std::unique_ptr<juce::PluginDescription> findPluginDescription_(const std::string& id)
{
std::vector<std::string> idParts = splitPluginDescription_(id);
- for (const juce::PluginDescription* pd : knownPluginList_) {
+ for (auto pd : knownPluginList_) {
std::vector<std::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 std::string& filepath)
{
- std::unique_ptr<juce::XmlElement> elem(juce::XmlDocument::parse(juce::File(filepath)));
+ auto elem(juce::XmlDocument::parse(juce::File(filepath)));
if (elem == nullptr)
return 0;
knownPluginList_.recreateFromXml(*elem);
pluginId_.set(id);
- const juce::PluginDescription* pd = findPluginDescription_(fid);
+ auto pd = findPluginDescription_(fid);
if (pd == nullptr) {
u::log::print("[pluginManager::makePlugin] no plugin found with fid=%s!\n", fid.c_str());
missingPlugins_ = true;
return std::make_unique<Plugin>(pluginId_.get(id), fid); // Invalid plug-in
}
- juce::AudioPluginInstance* pi = pluginFormat_.createInstanceFromDescription(*pd, samplerate_, buffersize_);
+ auto pi = pluginFormat_.createInstanceFromDescription(*pd, samplerate_, buffersize_);
if (pi == nullptr) {
u::log::print("[pluginManager::makePlugin] unable to create instance with fid=%s!\n", fid.c_str());
missingPlugins_ = true;
}
u::log::print("[pluginManager::makePlugin] plugin instance with fid=%s created\n", fid.c_str());
- return std::make_unique<Plugin>(pluginId_.get(id), pi, samplerate_, buffersize_);
+ return std::make_unique<Plugin>(pluginId_.get(id), std::move(pi), samplerate_, buffersize_);
}