summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--libs/ardour/ardour/plugin_insert.h1
-rw-r--r--libs/ardour/ladspa_plugin.cc3
-rw-r--r--libs/ardour/plugin_insert.cc15
3 files changed, 16 insertions, 3 deletions
diff --git a/libs/ardour/ardour/plugin_insert.h b/libs/ardour/ardour/plugin_insert.h
index 3b76d2588f..d9b85fe9c9 100644
--- a/libs/ardour/ardour/plugin_insert.h
+++ b/libs/ardour/ardour/plugin_insert.h
@@ -140,6 +140,7 @@ class PluginInsert : public Processor
int32_t count_for_configuration (ChanCount in, ChanCount out) const;
boost::shared_ptr<Plugin> plugin_factory (boost::shared_ptr<Plugin>);
+ void add_plugin_with_activation (boost::shared_ptr<Plugin>);
};
} // namespace ARDOUR
diff --git a/libs/ardour/ladspa_plugin.cc b/libs/ardour/ladspa_plugin.cc
index d9a1ad074b..cc532c61ca 100644
--- a/libs/ardour/ladspa_plugin.cc
+++ b/libs/ardour/ladspa_plugin.cc
@@ -634,6 +634,9 @@ LadspaPlugin::run_in_place (nframes_t nframes)
_control_data[i] = _shadow_data[i];
}
}
+
+ assert (_was_activated);
+
_descriptor->run (_handle, nframes);
}
diff --git a/libs/ardour/plugin_insert.cc b/libs/ardour/plugin_insert.cc
index 7174963ca8..650c929afb 100644
--- a/libs/ardour/plugin_insert.cc
+++ b/libs/ardour/plugin_insert.cc
@@ -92,7 +92,7 @@ PluginInsert::set_count (uint32_t num)
uint32_t diff = num - _plugins.size();
for (uint32_t n = 0; n < diff; ++n) {
- _plugins.push_back (plugin_factory (_plugins[0]));
+ add_plugin_with_activation (_plugins[0]);
if (require_state) {
/* XXX do something */
@@ -762,10 +762,10 @@ PluginInsert::set_state(const XMLNode& node, int version)
if (_plugins.size() != count) {
- _plugins.push_back (plugin);
+ add_plugin_with_activation (plugin);
for (uint32_t n = 1; n < count; ++n) {
- _plugins.push_back (plugin_factory (plugin));
+ add_plugin_with_activation (plugin_factory (plugin));
}
}
@@ -1003,3 +1003,12 @@ PluginInsert::collect_signal_for_analysis(nframes_t nframes)
_signal_analysis_collect_nframes_max = nframes;
}
+/** Add a plugin to our list and activate it if we have already been activated */
+void
+PluginInsert::add_plugin_with_activation (boost::shared_ptr<Plugin> plugin)
+{
+ _plugins.push_back (plugin);
+ if (active()) {
+ plugin->activate ();
+ }
+}