summaryrefslogtreecommitdiff
path: root/libs
diff options
context:
space:
mode:
Diffstat (limited to 'libs')
-rw-r--r--libs/ardour/ardour/lv2_plugin.h1
-rw-r--r--libs/ardour/lv2_plugin.cc12
2 files changed, 12 insertions, 1 deletions
diff --git a/libs/ardour/ardour/lv2_plugin.h b/libs/ardour/ardour/lv2_plugin.h
index 66c44884ea..d62ddb140e 100644
--- a/libs/ardour/ardour/lv2_plugin.h
+++ b/libs/ardour/ardour/lv2_plugin.h
@@ -237,6 +237,7 @@ class LV2Plugin : public ARDOUR::Plugin, public ARDOUR::Workee
LV2_Feature _log_feature;
LV2_Feature _work_schedule_feature;
LV2_Feature _options_feature;
+ LV2_Feature _def_state_feature;
// Options passed to plugin
int32_t _block_length;
diff --git a/libs/ardour/lv2_plugin.cc b/libs/ardour/lv2_plugin.cc
index d368d1d9ab..d464ed6f2e 100644
--- a/libs/ardour/lv2_plugin.cc
+++ b/libs/ardour/lv2_plugin.cc
@@ -288,6 +288,8 @@ LV2Plugin::init(const void* c_plugin, framecnt_t rate)
_log_feature.URI = LV2_LOG__log;
_work_schedule_feature.URI = LV2_WORKER__schedule;
_work_schedule_feature.data = NULL;
+ _def_state_feature.URI = LV2_STATE_PREFIX "loadDefaultState"; // Post LV2-1.2.0
+ _def_state_feature.data = NULL;
const LilvPlugin* plugin = _impl->plugin;
@@ -309,10 +311,11 @@ LV2Plugin::init(const void* c_plugin, framecnt_t rate)
_features[4] = _uri_map.urid_map_feature();
_features[5] = _uri_map.urid_unmap_feature();
_features[6] = &_log_feature;
+ _features[7] = &_def_state_feature;
lv2_atom_forge_init(&_impl->forge, _uri_map.urid_map());
- unsigned n_features = 7;
+ unsigned n_features = 8;
#ifdef HAVE_NEW_LV2
LV2_URID atom_Int = _uri_map.uri_to_id(LV2_ATOM__Int);
LV2_Options_Option options[] = {
@@ -384,6 +387,13 @@ LV2Plugin::init(const void* c_plugin, framecnt_t rate)
throw failed_constructor();
}
+ // Load default state
+ LilvState* state = lilv_state_new_from_world(
+ _world.world, _uri_map.urid_map(), lilv_plugin_get_uri(_impl->plugin));
+ if (state) {
+ lilv_state_restore(state, _impl->instance, NULL, NULL, 0, NULL);
+ }
+
_sample_rate = rate;
const uint32_t num_ports = this->num_ports();