summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobin Gareus <robin@gareus.org>2016-01-07 17:17:49 +0100
committerRobin Gareus <robin@gareus.org>2016-01-07 17:23:39 +0100
commitd5dbdc9ea5c3d1a34b2b1809e28931a864f55c3e (patch)
tree38d9a4b1279251545d04565b2615d74d3e142a70
parent8a84caf4a449bde38624b5d27598011fcb73648e (diff)
Add API to allow querying plugin-presets without instantiating the plugin
-rw-r--r--libs/ardour/ardour/plugin.h2
-rw-r--r--libs/ardour/plugin.cc10
2 files changed, 12 insertions, 0 deletions
diff --git a/libs/ardour/ardour/plugin.h b/libs/ardour/ardour/plugin.h
index 9f4ec85746..de7637ef2f 100644
--- a/libs/ardour/ardour/plugin.h
+++ b/libs/ardour/ardour/plugin.h
@@ -336,6 +336,8 @@ class LIBARDOUR_API PluginInfo {
virtual bool is_instrument() const;
virtual bool in_category (const std::string &) const { return false; }
+ virtual std::vector<Plugin::PresetRecord> get_presets(Session& session);
+
/* NOTE: this block of virtual methods looks like the interface
to a Processor, but Plugin does not inherit from Processor.
It is therefore not required that these precisely match
diff --git a/libs/ardour/plugin.cc b/libs/ardour/plugin.cc
index d6c9a48805..92fe289e0c 100644
--- a/libs/ardour/plugin.cc
+++ b/libs/ardour/plugin.cc
@@ -86,6 +86,16 @@ PluginInfo::is_instrument () const
return (n_inputs.n_midi() != 0) && (n_outputs.n_audio() > 0);
}
+std::vector<Plugin::PresetRecord>
+PluginInfo::get_presets(Session& session) {
+ PluginPtr plugin = load (session);
+ if (plugin) {
+ return plugin->get_presets();
+ } else {
+ return std::vector<Plugin::PresetRecord> ();
+ }
+}
+
Plugin::Plugin (AudioEngine& e, Session& s)
: _engine (e)
, _session (s)