From bb64f80bb139314a06e0b22fddbea7a330b6e149 Mon Sep 17 00:00:00 2001 From: David Robillard Date: Sun, 18 Sep 2016 21:36:48 -0400 Subject: Preliminary parameter support work --- src/server/LV2Block.cpp | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) (limited to 'src/server/LV2Block.cpp') diff --git a/src/server/LV2Block.cpp b/src/server/LV2Block.cpp index 7dcfb362..6cb5c1f3 100644 --- a/src/server/LV2Block.cpp +++ b/src/server/LV2Block.cpp @@ -23,8 +23,9 @@ #include #include "lv2/lv2plug.in/ns/ext/morph/morph.h" -#include "lv2/lv2plug.in/ns/ext/presets/presets.h" #include "lv2/lv2plug.in/ns/ext/options/options.h" +#include "lv2/lv2plug.in/ns/ext/patch/patch.h" +#include "lv2/lv2plug.in/ns/ext/presets/presets.h" #include "lv2/lv2plug.in/ns/ext/resize-port/resize-port.h" #include "lv2/lv2plug.in/ns/ext/state/state.h" @@ -43,6 +44,7 @@ #include "LV2Block.hpp" #include "LV2Plugin.hpp" #include "OutputPort.hpp" +#include "Parameter.hpp" #include "RunContext.hpp" #include "Worker.hpp" @@ -428,6 +430,22 @@ LV2Block::instantiate(BufferFactory& bufs) lilv_node_free(lv2_connectionOptional); + // Discover properties + bool writable = true; + LilvNodes* properties = lilv_world_find_nodes( + world->lilv_world(), + lilv_plugin_get_uri(plug), + writable ? uris.patch_writable : uris.patch_readable, + NULL); + LILV_FOREACH(nodes, p, properties) { + const LilvNode* property = lilv_nodes_get(properties, p); + _parameters.push_back( + Parameter(world, uris, this, + Raul::URI(lilv_node_as_string(property)), + Raul::Symbol(lilv_node_as_string(lilv_world_get_symbol(world->lilv_world(), property))), + Atom())); + } + if (!ret) { delete _ports; _ports = NULL; -- cgit v1.2.1