Add plugins (activating them) after doing any latency_compute_run, as otherwise the latency_compute_run deactivates the plugins and an assert trips in LadspaPlugin::run_in_place.

git-svn-id: svn://localhost/ardour2/branches/3.0@9282 d708f5d6-7413-0410-9779-e7cbd77b26cf
This commit is contained in:
Carl Hetherington 2011-04-04 17:57:18 +00:00
parent 040e016137
commit 806b94bec1
1 changed files with 17 additions and 12 deletions

View File

@ -875,6 +875,23 @@ PluginInsert::set_state(const XMLNode& node, int version)
sscanf (prop->value().c_str(), "%u", &count);
}
/* Handle the node list for this Processor (or Insert if an A2 session).
* This needs to happen before the add_plugin_with_activation below, as
* the plugin set_state calls may themselves call latency_compute_run,
* which will leave the plugin deactivated whether it is currently
* activated or not.
*/
for (niter = nlist.begin(); niter != nlist.end(); ++niter) {
if ((*niter)->name() == plugin->state_node_name()) {
for (Plugins::iterator i = _plugins.begin(); i != _plugins.end(); ++i) {
(*i)->set_state (**niter, version);
}
break;
}
}
if (_plugins.size() != count) {
add_plugin_with_activation (plugin);
@ -889,18 +906,6 @@ PluginInsert::set_state(const XMLNode& node, int version)
set_control_ids (node, version);
}
/* Handle the node list for this Processor (or Insert if an A2 session) */
for (niter = nlist.begin(); niter != nlist.end(); ++niter) {
if ((*niter)->name() == plugin->state_node_name()) {
for (Plugins::iterator i = _plugins.begin(); i != _plugins.end(); ++i) {
(*i)->set_state (**niter, version);
}
break;
}
}
if (version < 3000) {
/* Only 2.X sessions need a call to set_parameter_state() - in 3.X and above