diff --git a/include/audacity/ModuleInterface.h b/include/audacity/ModuleInterface.h index 1bdecec42..fd95811f1 100644 --- a/include/audacity/ModuleInterface.h +++ b/include/audacity/ModuleInterface.h @@ -84,7 +84,7 @@ public: // This function returns nonempty only when that is the case, and lists // the possible extensions of such files (an empty string in a nonempty // array means any file is a candidate). - virtual FileExtensions GetFileExtensions() = 0; + virtual const FileExtensions &GetFileExtensions() = 0; // Returns empty, or else, where to copy a plug-in file or bundle. // Drag-and-drop is supported only if GetFileExtensions() returns nonempty and diff --git a/src/PluginManager.cpp b/src/PluginManager.cpp index 019f8729c..e460e09e7 100644 --- a/src/PluginManager.cpp +++ b/src/PluginManager.cpp @@ -1787,7 +1787,7 @@ bool PluginManager::DropFile(const wxString &fileName) continue; const auto &ff = module->InstallPath(); - auto extensions = module->GetFileExtensions(); + const auto &extensions = module->GetFileExtensions(); if ( !ff.empty() && extensions.Index(src.GetExt(), false) != wxNOT_FOUND ) { wxString errMsg; diff --git a/src/commands/LoadCommands.cpp b/src/commands/LoadCommands.cpp index 783b7bd1d..b4f237eda 100644 --- a/src/commands/LoadCommands.cpp +++ b/src/commands/LoadCommands.cpp @@ -228,6 +228,12 @@ void BuiltinCommandsModule::Terminate() return; } +const FileExtensions &BuiltinCommandsModule::GetFileExtensions() +{ + static FileExtensions empty; + return empty; +} + bool BuiltinCommandsModule::AutoRegisterPlugins(PluginManagerInterface & pm) { wxString ignoredErrMsg; diff --git a/src/commands/LoadCommands.h b/src/commands/LoadCommands.h index c46a14c58..7a3811d76 100644 --- a/src/commands/LoadCommands.h +++ b/src/commands/LoadCommands.h @@ -40,7 +40,7 @@ public: bool Initialize() override; void Terminate() override; - FileExtensions GetFileExtensions() override { return {}; } + const FileExtensions &GetFileExtensions() override; FilePath InstallPath() override { return {}; } bool AutoRegisterPlugins(PluginManagerInterface & pm) override; diff --git a/src/effects/LoadEffects.cpp b/src/effects/LoadEffects.cpp index 4b8b94749..6594b54d5 100644 --- a/src/effects/LoadEffects.cpp +++ b/src/effects/LoadEffects.cpp @@ -293,6 +293,12 @@ void BuiltinEffectsModule::Terminate() return; } +const FileExtensions &BuiltinEffectsModule::GetFileExtensions() +{ + static FileExtensions empty; + return empty; +} + bool BuiltinEffectsModule::AutoRegisterPlugins(PluginManagerInterface & pm) { wxString ignoredErrMsg; diff --git a/src/effects/LoadEffects.h b/src/effects/LoadEffects.h index 4ca3157d6..a1cf30d25 100644 --- a/src/effects/LoadEffects.h +++ b/src/effects/LoadEffects.h @@ -39,7 +39,7 @@ public: bool Initialize() override; void Terminate() override; - FileExtensions GetFileExtensions() override { return {}; } + const FileExtensions &GetFileExtensions() override; FilePath InstallPath() override { return {}; } bool AutoRegisterPlugins(PluginManagerInterface & pm) override; diff --git a/src/effects/VST/VSTEffect.cpp b/src/effects/VST/VSTEffect.cpp index fec818fda..2e9b64c29 100644 --- a/src/effects/VST/VSTEffect.cpp +++ b/src/effects/VST/VSTEffect.cpp @@ -370,9 +370,10 @@ void VSTEffectsModule::Terminate() return; } -FileExtensions VSTEffectsModule::GetFileExtensions() +const FileExtensions &VSTEffectsModule::GetFileExtensions() { - return {{ _T("vst") }}; + static FileExtensions result{{ _T("vst") }}; + return result; } FilePath VSTEffectsModule::InstallPath() diff --git a/src/effects/VST/VSTEffect.h b/src/effects/VST/VSTEffect.h index edc9277be..64ac039a1 100644 --- a/src/effects/VST/VSTEffect.h +++ b/src/effects/VST/VSTEffect.h @@ -416,7 +416,7 @@ public: bool Initialize() override; void Terminate() override; - FileExtensions GetFileExtensions() override; + const FileExtensions &GetFileExtensions() override; FilePath InstallPath() override; bool AutoRegisterPlugins(PluginManagerInterface & pm) override; diff --git a/src/effects/audiounits/AudioUnitEffect.cpp b/src/effects/audiounits/AudioUnitEffect.cpp index e189d7a98..a2ffadd3a 100644 --- a/src/effects/audiounits/AudioUnitEffect.cpp +++ b/src/effects/audiounits/AudioUnitEffect.cpp @@ -137,9 +137,10 @@ wxString AudioUnitEffectsModule::GetDescription() // ModuleInterface implementation // ============================================================================ -FileExtensions AudioUnitEffectsModule::GetFileExtensions() +const FileExtensions &AudioUnitEffectsModule::GetFileExtensions() { - return {{ _T("au") }}; + static FileExtensions result{{ _T("au") }}; + return result; } bool AudioUnitEffectsModule::Initialize() diff --git a/src/effects/audiounits/AudioUnitEffect.h b/src/effects/audiounits/AudioUnitEffect.h index df7888170..06ddd0279 100644 --- a/src/effects/audiounits/AudioUnitEffect.h +++ b/src/effects/audiounits/AudioUnitEffect.h @@ -241,7 +241,7 @@ public: bool Initialize() override; void Terminate() override; - FileExtensions GetFileExtensions() override; + const FileExtensions &GetFileExtensions() override; FilePath InstallPath() override { return {}; } bool AutoRegisterPlugins(PluginManagerInterface & pm) override; diff --git a/src/effects/ladspa/LadspaEffect.cpp b/src/effects/ladspa/LadspaEffect.cpp index 78d8b1b0b..86a31987c 100644 --- a/src/effects/ladspa/LadspaEffect.cpp +++ b/src/effects/ladspa/LadspaEffect.cpp @@ -156,9 +156,9 @@ void LadspaEffectsModule::Terminate() return; } -FileExtensions LadspaEffectsModule::GetFileExtensions() +const FileExtensions &LadspaEffectsModule::GetFileExtensions() { - return {{ + static FileExtensions result{{ #ifdef __WXMSW__ @@ -176,6 +176,7 @@ FileExtensions LadspaEffectsModule::GetFileExtensions() #endif }}; + return result; } FilePath LadspaEffectsModule::InstallPath() diff --git a/src/effects/ladspa/LadspaEffect.h b/src/effects/ladspa/LadspaEffect.h index af8d94647..68a70ca30 100644 --- a/src/effects/ladspa/LadspaEffect.h +++ b/src/effects/ladspa/LadspaEffect.h @@ -222,7 +222,7 @@ public: bool Initialize() override; void Terminate() override; - FileExtensions GetFileExtensions() override; + const FileExtensions &GetFileExtensions() override; FilePath InstallPath() override; bool AutoRegisterPlugins(PluginManagerInterface & pm) override; diff --git a/src/effects/lv2/LoadLV2.cpp b/src/effects/lv2/LoadLV2.cpp index 8363eadf2..ea335c9ab 100644 --- a/src/effects/lv2/LoadLV2.cpp +++ b/src/effects/lv2/LoadLV2.cpp @@ -207,6 +207,12 @@ void LV2EffectsModule::Terminate() return; } +const FileExtensions &LV2EffectsModule::GetFileExtensions() +{ + static FileExtensions empty; + return empty; +} + bool LV2EffectsModule::AutoRegisterPlugins(PluginManagerInterface & WXUNUSED(pm)) { return false; diff --git a/src/effects/lv2/LoadLV2.h b/src/effects/lv2/LoadLV2.h index 491a3f2f6..8f07e06d4 100644 --- a/src/effects/lv2/LoadLV2.h +++ b/src/effects/lv2/LoadLV2.h @@ -86,7 +86,7 @@ public: bool Initialize() override; void Terminate() override; - FileExtensions GetFileExtensions() override { return {}; } + const FileExtensions &GetFileExtensions() override; FilePath InstallPath() override { return {}; } bool AutoRegisterPlugins(PluginManagerInterface & pm) override; diff --git a/src/effects/nyquist/LoadNyquist.cpp b/src/effects/nyquist/LoadNyquist.cpp index 55488bfda..16bf8e849 100644 --- a/src/effects/nyquist/LoadNyquist.cpp +++ b/src/effects/nyquist/LoadNyquist.cpp @@ -156,9 +156,10 @@ void NyquistEffectsModule::Terminate() return; } -FileExtensions NyquistEffectsModule::GetFileExtensions() +const FileExtensions &NyquistEffectsModule::GetFileExtensions() { - return {{ _T("ny") }}; + static FileExtensions result{{ _T("ny") }}; + return result; } FilePath NyquistEffectsModule::InstallPath() diff --git a/src/effects/nyquist/LoadNyquist.h b/src/effects/nyquist/LoadNyquist.h index fc0ad49c0..f11b0ec7c 100644 --- a/src/effects/nyquist/LoadNyquist.h +++ b/src/effects/nyquist/LoadNyquist.h @@ -37,7 +37,7 @@ public: bool Initialize() override; void Terminate() override; - FileExtensions GetFileExtensions() override; + const FileExtensions &GetFileExtensions() override; FilePath InstallPath() override; bool AutoRegisterPlugins(PluginManagerInterface & pm) override; diff --git a/src/effects/vamp/LoadVamp.cpp b/src/effects/vamp/LoadVamp.cpp index 1f5b41d3f..43dece7d5 100644 --- a/src/effects/vamp/LoadVamp.cpp +++ b/src/effects/vamp/LoadVamp.cpp @@ -112,9 +112,10 @@ void VampEffectsModule::Terminate() return; } -FileExtensions VampEffectsModule::GetFileExtensions() +const FileExtensions &VampEffectsModule::GetFileExtensions() { - return {}; + static FileExtensions empty; + return empty; } bool VampEffectsModule::AutoRegisterPlugins(PluginManagerInterface & WXUNUSED(pm)) diff --git a/src/effects/vamp/LoadVamp.h b/src/effects/vamp/LoadVamp.h index 7c4eb9e3d..23a18cc29 100644 --- a/src/effects/vamp/LoadVamp.h +++ b/src/effects/vamp/LoadVamp.h @@ -45,7 +45,7 @@ public: bool Initialize() override; void Terminate() override; - FileExtensions GetFileExtensions() override; + const FileExtensions &GetFileExtensions() override; FilePath InstallPath() override { return {}; } bool AutoRegisterPlugins(PluginManagerInterface & pm) override;