diff options
author | Robin Gareus <robin@gareus.org> | 2019-05-25 01:56:23 +0200 |
---|---|---|
committer | Robin Gareus <robin@gareus.org> | 2019-05-25 01:56:23 +0200 |
commit | c97884d257ede3097a1665274038a8c68e27bb4e (patch) | |
tree | d95626d79e5d89b2790df77be4b39fb9ac494775 /libs/ardour/plugin_manager.cc | |
parent | a18c54ce943f1bd36140ccd9934fb6bd032f9c49 (diff) |
Add preference to hide LADSPA plugin if LV2 exists
Diffstat (limited to 'libs/ardour/plugin_manager.cc')
-rw-r--r-- | libs/ardour/plugin_manager.cc | 32 |
1 files changed, 30 insertions, 2 deletions
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; } } |