13
0

fix LV2 plugin state for copied plugins.

This commit is contained in:
Robin Gareus 2015-12-10 19:31:00 +01:00
parent 699f9b097d
commit 5630332797
2 changed files with 9 additions and 1 deletions

View File

@ -1664,7 +1664,13 @@ LV2Plugin::work_response(uint32_t size, const void* data)
void
LV2Plugin::set_insert_id(PBD::ID id)
{
if (_insert_id == "0") {
_insert_id = id;
} else if (_insert_id != id) {
lilv_state_free(_impl->state);
_impl->state = NULL;
_insert_id = id;
}
}
int

View File

@ -952,6 +952,7 @@ PluginInsert::state (bool full)
node.add_child_nocopy (* _configured_in.state (X_("ConfiguredInput")));
node.add_child_nocopy (* _configured_out.state (X_("ConfiguredOutput")));
_plugins[0]->set_insert_id(this->id());
node.add_child_nocopy (_plugins[0]->get_state());
for (Controls::iterator c = controls().begin(); c != controls().end(); ++c) {
@ -1123,6 +1124,7 @@ PluginInsert::set_state(const XMLNode& node, int version)
if ((*niter)->name() == plugin->state_node_name()) {
for (Plugins::iterator i = _plugins.begin(); i != _plugins.end(); ++i) {
(*i)->set_insert_id (this->id());
(*i)->set_state (**niter, version);
}