diff options
Diffstat (limited to 'libs/ardour/plugin_manager.cc')
-rw-r--r-- | libs/ardour/plugin_manager.cc | 96 |
1 files changed, 7 insertions, 89 deletions
diff --git a/libs/ardour/plugin_manager.cc b/libs/ardour/plugin_manager.cc index 06a944189a..2a753617e8 100644 --- a/libs/ardour/plugin_manager.cc +++ b/libs/ardour/plugin_manager.cc @@ -1,5 +1,5 @@ /* - Copyright (C) 2000-2004 Paul Davis + Copyright (C) 2000-2006 Paul Davis This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -36,8 +36,10 @@ #include <ardour/plugin_manager.h> #include <ardour/plugin.h> #include <ardour/ladspa_plugin.h> + +#ifdef VST_SUPPORT #include <ardour/vst_plugin.h> -#include <ardour/audio_unit.h> +#endif #include <pbd/error.h> #include <pbd/stl_delete.h> @@ -49,8 +51,7 @@ using namespace PBD; PluginManager* PluginManager::_manager = 0; -PluginManager::PluginManager (AudioEngine& e) - : _engine (e) +PluginManager::PluginManager () { char* s; string lrdf_path; @@ -97,10 +98,6 @@ PluginManager::refresh () vst_refresh (); } #endif // VST_SUPPORT - -#ifdef HAVE_COREAUDIO - _au_plugin_info = AUPluginInfo::discover (); -#endif // HAVE_COREAUDIO } void @@ -250,7 +247,7 @@ PluginManager::ladspa_discover (string path) break; } - PluginInfoPtr info(new PluginInfo); + PluginInfoPtr info(new LadspaPluginInfo); info->name = descriptor->Name; info->category = get_ladspa_category(descriptor->UniqueID); info->path = path; @@ -280,85 +277,6 @@ PluginManager::ladspa_discover (string path) return 0; } -boost::shared_ptr<Plugin> -PluginManager::load (Session& session, PluginInfoPtr info) -{ - void *module; - - try { - boost::shared_ptr<Plugin> plugin; - - if (info->type == PluginInfo::VST) { - -#ifdef VST_SUPPORT - if (Config->get_use_vst()) { - FSTHandle* handle; - - if ((handle = fst_load (info->path.c_str())) == 0) { - error << string_compose(_("VST: cannot load module from \"%1\""), info->path) << endmsg; - } else { - plugin.reset (new VSTPlugin (_engine, session, handle)); - } - } else { - error << _("You asked ardour to not use any VST plugins") << endmsg; - } -#else // !VST_SUPPORT - error << _("This version of ardour has no support for VST plugins") << endmsg; - return boost::shared_ptr<Plugin> ((Plugin*) 0); -#endif // !VST_SUPPORT - - } else { - - if ((module = dlopen (info->path.c_str(), RTLD_NOW)) == 0) { - error << string_compose(_("LADSPA: cannot load module from \"%1\""), info->path) << endmsg; - error << dlerror() << endmsg; - } else { - plugin.reset (new LadspaPlugin (module, _engine, session, info->index, session.frame_rate())); - } - } - - plugin->set_info(*info); - return plugin; - } - - catch (failed_constructor &err) { - return boost::shared_ptr<Plugin> ((Plugin*) 0); - } -} - -boost::shared_ptr<Plugin> -ARDOUR::find_plugin(Session& session, string name, long unique_id, PluginInfo::Type type) -{ - PluginManager *mgr = PluginManager::the_manager(); - PluginInfoList* plugs = 0; - - switch (type) { - case PluginInfo::LADSPA: - plugs = &mgr->ladspa_plugin_info(); - break; - case PluginInfo::VST: - plugs = &mgr->vst_plugin_info(); - unique_id = 0; // VST plugins don't have a unique id. - break; - case PluginInfo::AudioUnit: - plugs = &mgr->au_plugin_info(); - unique_id = 0; - break; - default: - return boost::shared_ptr<Plugin> ((Plugin *) 0); - } - - PluginInfoList::iterator i; - for (i = plugs->begin(); i != plugs->end(); ++i) { - if ((name == "" || (*i)->name == name) && - (unique_id == 0 || (*i)->unique_id == unique_id)) { - return mgr->load (session, *i); - } - } - - return boost::shared_ptr<Plugin> ((Plugin*) 0); -} - string PluginManager::get_ladspa_category (uint32_t plugin_id) { @@ -464,7 +382,7 @@ PluginManager::vst_discover (string path) << endl; } - PluginInfoPtr info(new PluginInfo); + PluginInfoPtr info(new VSTPluginInfo); /* what a goddam joke freeware VST is */ |