summaryrefslogtreecommitdiff
path: root/libs/ardour/lv2_plugin.cc
diff options
context:
space:
mode:
authorRobin Gareus <robin@gareus.org>2015-05-22 18:25:07 +0200
committerRobin Gareus <robin@gareus.org>2015-05-22 18:25:07 +0200
commite44e0b2c9a00035608c10b02696e53cc8d0e535e (patch)
tree7f9b622921cf6c1c8d03627bae415e17d94614e4 /libs/ardour/lv2_plugin.cc
parent18b54e6a8568756dbf35bd576d8b28b4b41d0e6d (diff)
LV2: delete existing preset before replacing it
Diffstat (limited to 'libs/ardour/lv2_plugin.cc')
-rw-r--r--libs/ardour/lv2_plugin.cc12
1 files changed, 12 insertions, 0 deletions
diff --git a/libs/ardour/lv2_plugin.cc b/libs/ardour/lv2_plugin.cc
index 729e891138..243312f95b 100644
--- a/libs/ardour/lv2_plugin.cc
+++ b/libs/ardour/lv2_plugin.cc
@@ -1082,6 +1082,18 @@ LV2Plugin::do_save_preset(string name)
Glib::get_home_dir(),
Glib::build_filename(".lv2", prefix + "_" + base_name + ".lv2"));
+#ifdef HAVE_LILV_0_21_3
+ /* delete reference to old preset (if any) */
+ const PresetRecord* r = preset_by_label(name);
+ if (r) {
+ LilvNode* pset = lilv_new_uri (_world.world, r->uri.c_str());
+ if (pset) {
+ lilv_world_unload_resource (_world.world, pset);
+ lilv_node_free(pset);
+ }
+ }
+#endif
+
LilvState* state = lilv_state_new_from_instance(
_impl->plugin,
_impl->instance,