diff options
author | Taybin Rutkin <taybin@taybin.com> | 2006-08-03 17:17:38 +0000 |
---|---|---|
committer | Taybin Rutkin <taybin@taybin.com> | 2006-08-03 17:17:38 +0000 |
commit | 5fdfe49406db9de3431b099cd89a2233f43a6163 (patch) | |
tree | 6992819edab3e8bb1a355e9aa735255bb13a5d2f /libs/ardour/plugin_manager.cc | |
parent | e46924420fb60823b96cbe297c588a32fa5cce88 (diff) |
Most PluginManager refactoring is out of the way. Time to begin on AudioUnit support for real.
git-svn-id: svn://localhost/ardour2/trunk@752 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'libs/ardour/plugin_manager.cc')
-rw-r--r-- | libs/ardour/plugin_manager.cc | 70 |
1 files changed, 8 insertions, 62 deletions
diff --git a/libs/ardour/plugin_manager.cc b/libs/ardour/plugin_manager.cc index 0408764c96..5225b18fc4 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 @@ -49,8 +49,7 @@ using namespace PBD; PluginManager* PluginManager::_manager = 0; -PluginManager::PluginManager (AudioEngine& e) - : _engine (e) +PluginManager::PluginManager () { char* s; string lrdf_path; @@ -246,7 +245,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; @@ -276,60 +275,7 @@ PluginManager::ladspa_discover (string path) return 0; } -boost::shared_ptr<Plugin> -PluginManager::load (Session& session, PluginInfoPtr info) -{ - 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 (info->type == PluginInfo::LADSPA) { - void *module; - - 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())); - } - } else if (info->type == PluginInfo::AudioUnit) { - -#ifdef HAVE_COREAUDIO - -#else // !HAVE_COREAUDIO - error << _("This version of ardour has no support for AudioUnit plugins") << endmsg; - return boost::shared_ptr<Plugin> ((Plugin*) 0); -#endif - } - - plugin->set_info(*info); - return plugin; - } - - catch (failed_constructor &err) { - return boost::shared_ptr<Plugin> ((Plugin*) 0); - } -} - -boost::shared_ptr<Plugin> +PluginPtr ARDOUR::find_plugin(Session& session, string name, long unique_id, PluginInfo::Type type) { PluginManager *mgr = PluginManager::the_manager(); @@ -355,18 +301,18 @@ ARDOUR::find_plugin(Session& session, string name, long unique_id, PluginInfo::T #endif default: - return boost::shared_ptr<Plugin> ((Plugin *) 0); + return PluginPtr ((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); + (unique_id == 0 || (*i)->unique_id == unique_id)) { + return (*i)->load (session); } } - return boost::shared_ptr<Plugin> ((Plugin*) 0); + return PluginPtr ((Plugin*) 0); } string |