diff options
-rw-r--r-- | libs/ardour/ardour/plugin_manager.h | 3 | ||||
-rw-r--r-- | libs/ardour/ardour/rc_configuration_vars.h | 1 | ||||
-rw-r--r-- | libs/ardour/plugin_manager.cc | 32 |
3 files changed, 33 insertions, 3 deletions
diff --git a/libs/ardour/ardour/plugin_manager.h b/libs/ardour/ardour/plugin_manager.h index 80b578c20f..7189e6ed79 100644 --- a/libs/ardour/ardour/plugin_manager.h +++ b/libs/ardour/ardour/plugin_manager.h @@ -73,7 +73,8 @@ public: enum PluginStatusType { Normal = 0, Favorite, - Hidden + Hidden, + Concealed }; std::string user_plugin_metadata_dir () const; diff --git a/libs/ardour/ardour/rc_configuration_vars.h b/libs/ardour/ardour/rc_configuration_vars.h index 8b6c26c725..9a5eda5b0f 100644 --- a/libs/ardour/ardour/rc_configuration_vars.h +++ b/libs/ardour/ardour/rc_configuration_vars.h @@ -239,6 +239,7 @@ CONFIG_VARIABLE (bool, use_lxvst, "use-lxvst", true) CONFIG_VARIABLE (bool, use_macvst, "use-macvst", true) CONFIG_VARIABLE (bool, discover_vst_on_start, "discover-vst-on-start", false) CONFIG_VARIABLE (bool, verbose_plugin_scan, "verbose-plugin-scan", false) +CONFIG_VARIABLE (bool, conceal_lv1_if_lv2_exists, "conceal-lv1-if-lv2-exists", true) CONFIG_VARIABLE (int, vst_scan_timeout, "vst-scan-timeout", 1200) /* deciseconds, per plugin, <= 0 no timeout */ CONFIG_VARIABLE (bool, discover_audio_units, "discover-audio-units", false) CONFIG_VARIABLE (bool, ask_replace_instrument, "ask-replace-instrument", true) diff --git a/libs/ardour/plugin_manager.cc b/libs/ardour/plugin_manager.cc index c5f27367f5..fbda7fc6ea 100644 --- a/libs/ardour/plugin_manager.cc +++ b/libs/ardour/plugin_manager.cc @@ -277,6 +277,27 @@ PluginManager::refresh (bool cache_only) #ifdef LV2_SUPPORT BootMessage (_("Scanning LV2 Plugins")); lv2_refresh (); + + if (Config->get_conceal_lv1_if_lv2_exists()) { + for (PluginInfoList::const_iterator i = _ladspa_plugin_info->begin(); i != _ladspa_plugin_info->end(); ++i) { + for (PluginInfoList::const_iterator j = _lv2_plugin_info->begin(); j != _lv2_plugin_info->end(); ++j) { + if ((*i)->creator == (*j)->creator && (*i)->name == (*j)->name) { + PluginStatus ps (LADSPA, (*i)->unique_id, Concealed); + if (find (statuses.begin(), statuses.end(), ps) == statuses.end()) { + statuses.erase (ps); + statuses.insert (ps); + } + } + } + } + } else { + for (PluginStatusList::iterator i = statuses.begin(); i != statuses.end();) { + PluginStatusList::iterator j = i++; + if ((*j).status == Concealed) { + statuses.erase (j); + } + } + } #endif #ifdef WINDOWS_VST_SUPPORT if (Config->get_use_windows_vst()) { @@ -1293,6 +1314,9 @@ PluginManager::save_statuses () stringstream ofs; for (PluginStatusList::iterator i = statuses.begin(); i != statuses.end(); ++i) { + if ((*i).status == Concealed) { + continue; + } switch ((*i).type) { case LADSPA: ofs << "LADSPA"; @@ -1329,6 +1353,10 @@ PluginManager::save_statuses () case Hidden: ofs << "Hidden"; break; + case Concealed: + ofs << "Hidden"; + assert (0); + break; } ofs << ' '; @@ -1422,7 +1450,7 @@ PluginManager::set_status (PluginType t, string id, PluginStatusType status) PluginStatus ps (t, id, status); statuses.erase (ps); - if (status != Normal) { + if (status != Normal && status != Concealed) { statuses.insert (ps); } @@ -1683,7 +1711,7 @@ PluginManager::get_all_tags (TagFilter tag_filter) const if (tag_filter == NoHidden) { PluginStatus stat ((*pt).type, (*pt).unique_id); PluginStatusList::const_iterator i = find (statuses.begin(), statuses.end(), stat); - if ((i != statuses.end()) && (i->status == Hidden)) { + if ((i != statuses.end()) && ((i->status == Hidden) || (i->status == Concealed))) { continue; } } |