Add patch for JUCE-5.4.4 compatibility
authorIOhannes m zmölnig <zmoelnig@umlautS.umlaeute.mur.at>
Tue, 20 Aug 2019 12:47:39 +0000 (14:47 +0200)
committerIOhannes m zmölnig <zmoelnig@umlautS.umlaeute.mur.at>
Tue, 20 Aug 2019 12:47:39 +0000 (14:47 +0200)
i'm not really sure whether this works..
but the alternative is to just drop VST-support, until giada supports VST3.
so nothing lost doing it this way...

debian/patches/0003-JUCE544-compat.patch [new file with mode: 0644]
debian/patches/series

diff --git a/debian/patches/0003-JUCE544-compat.patch b/debian/patches/0003-JUCE544-compat.patch
new file mode 100644 (file)
index 0000000..9ac236b
--- /dev/null
@@ -0,0 +1,123 @@
+From: =?utf-8?q?IOhannes_m_zm=C3=B6lnig?= <zmoelnig@umlautS.umlaeute.mur.at>
+Date: Tue, 20 Aug 2019 14:38:49 +0200
+Subject: JUCE544 compat
+
+---
+ src/core/plugin.cpp        |  6 +++---
+ src/core/plugin.h          |  4 ++--
+ 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;
+ /* -------------------------------------------------------------------------- */
+-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)
+ {
+@@ -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
+ {
+ public:
+-      Plugin(juce::AudioPluginInstance* p, double samplerate, int buffersize);
++      Plugin(std::unique_ptr<juce::AudioPluginInstance> p, double samplerate, int buffersize);
+       ~Plugin();
+       /* getUniqueId
+@@ -102,7 +102,7 @@ private:
+       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;
+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.:
+ 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;
+ }
+@@ -181,10 +181,9 @@ int saveList(const string& filepath)
+ 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;
+@@ -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). */
+-      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)
+               }
+       }
+-      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_);
+ }
index a5856f3d76d9b8a5ec5e542cb40daf53af1be04f..70fb040e1ed0dc8860cc363f58b2517580ebeac1 100644 (file)
@@ -1,2 +1,3 @@
 01-rtaudio5.patch
 02-rtmidi-pkgconfig.patch
+0003-JUCE544-compat.patch