summaryrefslogtreecommitdiff
path: root/libs/ardour/plugin_manager.cc
diff options
context:
space:
mode:
authorTaybin Rutkin <taybin@taybin.com>2006-08-03 17:17:38 +0000
committerTaybin Rutkin <taybin@taybin.com>2006-08-03 17:17:38 +0000
commit5fdfe49406db9de3431b099cd89a2233f43a6163 (patch)
tree6992819edab3e8bb1a355e9aa735255bb13a5d2f /libs/ardour/plugin_manager.cc
parente46924420fb60823b96cbe297c588a32fa5cce88 (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.cc70
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