src/core/pluginManager.cpp | 18 ++++++++----------
3 files changed, 13 insertions(+), 15 deletions(-)
-diff --git a/src/core/plugin.cpp b/src/core/plugin.cpp
-index 32e9b88..26108ca 100644
---- a/src/core/plugin.cpp
-+++ b/src/core/plugin.cpp
-@@ -48,9 +48,9 @@ int Plugin::m_idGenerator = 1;
+--- giada.orig/src/core/plugin.cpp
++++ giada/src/core/plugin.cpp
+@@ -54,11 +54,11 @@
/* -------------------------------------------------------------------------- */
--Plugin::Plugin(juce::AudioPluginInstance* plugin, double samplerate, int buffersize)
-+Plugin::Plugin(std::unique_ptr<juce::AudioPluginInstance> plugin, double samplerate, int buffersize)
- : m_ui (nullptr),
+-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_id (m_idGenerator++),
m_bypass(false)
{
-@@ -59,7 +59,7 @@ Plugin::Plugin(juce::AudioPluginInstance* plugin, double samplerate, int buffers
/* 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);
-
-diff --git a/src/core/plugin.h b/src/core/plugin.h
-index a7cca04..1323b86 100644
---- a/src/core/plugin.h
-+++ b/src/core/plugin.h
-@@ -41,7 +41,7 @@ class Plugin
- {
+--- giada.orig/src/core/plugin.h
++++ giada/src/core/plugin.h
+@@ -45,7 +45,7 @@
public:
-- Plugin(juce::AudioPluginInstance* p, double samplerate, int buffersize);
-+ Plugin(std::unique_ptr<juce::AudioPluginInstance> p, double samplerate, int buffersize);
+ Plugin(ID id, const std::string& UID);
+- Plugin(ID id, juce::AudioPluginInstance* p, double samplerate, int buffersize);
++ Plugin(ID id, std::unique_ptr<juce::AudioPluginInstance> p, double samplerate, int buffersize);
+ Plugin(const Plugin& o);
~Plugin();
- /* getUniqueId
-@@ -102,7 +102,7 @@ private:
- static int m_idGenerator;
+@@ -119,7 +119,7 @@
- juce::AudioProcessorEditor* m_ui; // gui
-- juce::AudioPluginInstance* m_plugin; // core
-+ std::unique_ptr<juce::AudioPluginInstance> m_plugin; // core
- juce::AudioBuffer<float> m_buffer;
+ int countMainOutChannels() const;
- int m_id;
-diff --git a/src/core/pluginManager.cpp b/src/core/pluginManager.cpp
-index 4b6d1a1..53a6186 100644
---- a/src/core/pluginManager.cpp
-+++ b/src/core/pluginManager.cpp
-@@ -104,14 +104,14 @@ VSTs: their ID is based on the plug-in file location. E.g.:
+- juce::AudioPluginInstance* m_plugin;
++ std::unique_ptr<juce::AudioPluginInstance> m_plugin;
+ juce::AudioBuffer<float> m_buffer;
+
+ std::atomic<bool> m_bypass;
+--- giada.orig/src/core/pluginManager.cpp
++++ giada/src/core/pluginManager.cpp
+@@ -105,14 +105,14 @@
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)
+-const juce::PluginDescription* findPluginDescription_(const std::string& id)
++std::unique_ptr<juce::PluginDescription> findPluginDescription_(const std::string& id)
{
- vector<string> idParts = splitPluginDescription_(id);
+ std::vector<std::string> idParts = splitPluginDescription_(id);
- for (const juce::PluginDescription* pd : knownPluginList_) {
+ for (auto pd : knownPluginList_) {
- vector<string> tmpIdParts = splitPluginDescription_(pd->createIdentifierString().toStdString());
+ 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;
}
-@@ -181,10 +181,9 @@ int saveList(const string& filepath)
+@@ -184,7 +184,7 @@
- int loadList(const string& filepath)
+ int loadList(const std::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;
-@@ -199,11 +198,11 @@ std::unique_ptr<Plugin> makePlugin(const string& fid)
- /* Initialize plugin. The default mode uses getTypeForIdentifierString,
- falling back to getTypeForFile (deprecated) for old patches (< 0.14.4). */
+- 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);
+@@ -202,7 +202,7 @@
+
+ pluginId_.set(id);
- 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;
-@@ -212,15 +211,14 @@ std::unique_ptr<Plugin> makePlugin(const string& fid)
- }
+ u::log::print("[pluginManager::makePlugin] no plugin found with fid=%s!\n", fid.c_str());
+ missingPlugins_ = true;
+@@ -210,7 +210,7 @@
+ 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) {
- gu_log("[pluginManager::makePlugin] unable to create instance with fid=%s!\n", fid.c_str());
+ if (pi == nullptr) {
+ u::log::print("[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_);
- }
-
-