From a89572072e172d355fb3c96d088d57c276d96a9d Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Thu, 13 Oct 2011 18:40:47 +0000 Subject: [PATCH] avoid listing duplicate LXVST plugins that are discovered along LXVST_PATH or otherwise (from linuxdsp) git-svn-id: svn://localhost/ardour2/branches/3.0@10208 d708f5d6-7413-0410-9779-e7cbd77b26cf --- libs/ardour/plugin_manager.cc | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/libs/ardour/plugin_manager.cc b/libs/ardour/plugin_manager.cc index 613fc85c6d..7072e073ba 100644 --- a/libs/ardour/plugin_manager.cc +++ b/libs/ardour/plugin_manager.cc @@ -719,6 +719,22 @@ PluginManager::lxvst_discover (string path) info->n_outputs.set_audio (finfo->numOutputs); info->n_inputs.set_midi (finfo->wantMidi ? 1 : 0); info->type = ARDOUR::LXVST; + + /* Make sure we don't find the same plugin in more than one place along + the LXVST_PATH We can't use a simple 'find' because the path is included + in the PluginInfo, and that is the one thing we can be sure MUST be + different if a duplicate instance is found. So we just compare the type + and unique ID (which for some VSTs isn't actually unique...) + */ + + if (!_lxvst_plugin_info->empty()) { + for (PluginInfoList::iterator i =_lxvst_plugin_info->begin(); i != _lxvst_plugin_info->end(); ++i) { + if ((info->type == (*i)->type)&&(info->unique_id == (*i)->unique_id)) { + vstfx_free_info(finfo); + return 0; + } + } + } _lxvst_plugin_info->push_back (info); vstfx_free_info (finfo);