diff options
author | David Robillard <d@drobilla.net> | 2016-03-14 20:42:36 -0400 |
---|---|---|
committer | David Robillard <d@drobilla.net> | 2016-03-14 20:42:36 -0400 |
commit | 9da2840ce1fc9de08d3bd052fc535c925416c45a (patch) | |
tree | ed29b9dcde19b064dae9ff482b236525ef688ff0 /src/server/LV2Block.cpp | |
parent | 4ee3f2666d79256a69ed66d511cbe64b83e4de5f (diff) | |
download | ingen-9da2840ce1fc9de08d3bd052fc535c925416c45a.tar.gz ingen-9da2840ce1fc9de08d3bd052fc535c925416c45a.tar.bz2 ingen-9da2840ce1fc9de08d3bd052fc535c925416c45a.zip |
Load default plugin state
Based on a patch from Hanspeter Portner.
Diffstat (limited to 'src/server/LV2Block.cpp')
-rw-r--r-- | src/server/LV2Block.cpp | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/src/server/LV2Block.cpp b/src/server/LV2Block.cpp index f7627416..e1f67897 100644 --- a/src/server/LV2Block.cpp +++ b/src/server/LV2Block.cpp @@ -74,6 +74,20 @@ LV2Block::~LV2Block() delete _instances; } +void +LV2Block::load_default_state() +{ + const LilvPlugin* lplug = _lv2_plugin->lilv_plugin(); + const LilvNode* uri_node = lilv_plugin_get_uri(lplug); + const Raul::URI uri(lilv_node_as_string(uri_node)); + + LilvState* default_state = load_preset(_lv2_plugin->uri()); + if (default_state) { + apply_state(default_state); + lilv_state_free(default_state); + } +} + SPtr<LilvInstance> LV2Block::make_instance(URIs& uris, SampleRate rate, @@ -431,6 +445,8 @@ LV2Block::instantiate(BufferFactory& bufs) } } + load_default_state(); + // FIXME: Polyphony + worker? if (lilv_plugin_has_feature(plug, uris.work_schedule)) { _worker_iface = (const LV2_Worker_Interface*) |