From 417f4ffe53aea9f96b0e5e6588d61ef8811acbdb Mon Sep 17 00:00:00 2001 From: jules Date: Tue, 26 Mar 2013 11:57:13 +0000 Subject: [PATCH] Fixed some linux LADSPA and VST plugin paths. --- .../format_types/juce_LADSPAPluginFormat.cpp | 23 +++++++++++-------- .../format_types/juce_VSTPluginFormat.cpp | 4 +++- 2 files changed, 17 insertions(+), 10 deletions(-) diff --git a/modules/juce_audio_processors/format_types/juce_LADSPAPluginFormat.cpp b/modules/juce_audio_processors/format_types/juce_LADSPAPluginFormat.cpp index d4e2e93728..ec591b6591 100644 --- a/modules/juce_audio_processors/format_types/juce_LADSPAPluginFormat.cpp +++ b/modules/juce_audio_processors/format_types/juce_LADSPAPluginFormat.cpp @@ -119,7 +119,7 @@ class LADSPAPluginInstance : public AudioPluginInstance { public: LADSPAPluginInstance (const LADSPAModuleHandle::Ptr& m) - : plugin (nullptr), handle (0), initialised (false), + : plugin (nullptr), handle (nullptr), initialised (false), tempBuffer (1, 1), module (m) { ++insideLADSPACallback; @@ -159,14 +159,12 @@ public: jassert (insideLADSPACallback == 0); - // Must delete any editors before deleting the plugin instance! - jassert (getActiveEditor() == nullptr); - - if (plugin != nullptr && plugin->cleanup != nullptr) + if (handle != nullptr && plugin != nullptr && plugin->cleanup != nullptr) plugin->cleanup (handle); module = nullptr; plugin = nullptr; + handle = nullptr; } void initialise() @@ -285,7 +283,7 @@ public: { const int numSamples = buffer.getNumSamples(); - if (initialised && plugin != nullptr) + if (initialised && plugin != nullptr && handle != nullptr) { for (int i = 0; i < inputs.size(); ++i) plugin->connect_port (handle, inputs[i], @@ -461,6 +459,11 @@ public: return nullptr; } + bool isValid() const + { + return handle != nullptr; + } + LADSPAModuleHandle::Ptr module; const LADSPA_Descriptor* plugin; @@ -568,7 +571,7 @@ void LADSPAPluginFormat::findAllTypesForFile (OwnedArray & re ScopedPointer instance (dynamic_cast (createInstanceFromDescription (desc))); - if (instance == nullptr) + if (instance == nullptr || ! instance->isValid()) return; instance->fillInPluginDescription (desc); @@ -612,7 +615,7 @@ AudioPluginInstance* LADSPAPluginFormat::createInstanceFromDescription (const Pl result = new LADSPAPluginInstance (module); - if (result->plugin != nullptr) + if (result->plugin != nullptr && result->isValid()) result->initialise(); else deleteAndZero (result); @@ -672,7 +675,9 @@ void LADSPAPluginFormat::recursiveFileSearch (StringArray& results, const File& FileSearchPath LADSPAPluginFormat::getDefaultLocationsToSearch() { - return FileSearchPath ("/usr/lib/ladspa"); + return FileSearchPath (SystemStats::getEnvironmentVariable ("LADSPA_PATH", + "/usr/lib/ladspa;/usr/local/lib/ladspa;~/.ladspa") + .replace (":", ";")); } #endif diff --git a/modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp b/modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp index 13e911434f..f3612a4cb4 100644 --- a/modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp +++ b/modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp @@ -2844,7 +2844,9 @@ FileSearchPath VSTPluginFormat::getDefaultLocationsToSearch() #if JUCE_MAC return FileSearchPath ("~/Library/Audio/Plug-Ins/VST;/Library/Audio/Plug-Ins/VST"); #elif JUCE_LINUX - return FileSearchPath ("/usr/lib/vst"); + return FileSearchPath (SystemStats::getEnvironmentVariable ("VST_PATH", + "/usr/lib/vst;/usr/local/lib/vst;~/.vst") + .replace (":", ";")); #elif JUCE_WINDOWS const String programFiles (File::getSpecialLocation (File::globalApplicationsDirectory).getFullPathName());