summaryrefslogtreecommitdiff
path: root/libs
diff options
context:
space:
mode:
authorCarl Hetherington <carl@carlh.net>2009-11-28 02:39:16 +0000
committerCarl Hetherington <carl@carlh.net>2009-11-28 02:39:16 +0000
commit1e424e11460812262df89c08c6af521a935760cf (patch)
tree41469973abcca18a62a8cba73d8d13f188948731 /libs
parent673a995e5c718bc6aa994c50a70deb6f96e3eb59 (diff)
All plugin activate() method when required for copy & paste operations. Fixes segfaults on drag and drop of plugins between routes.
git-svn-id: svn://localhost/ardour2/branches/3.0@6203 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'libs')
-rw-r--r--libs/ardour/plugin_insert.cc5
-rw-r--r--libs/ardour/route.cc4
2 files changed, 6 insertions, 3 deletions
diff --git a/libs/ardour/plugin_insert.cc b/libs/ardour/plugin_insert.cc
index 6957d55f57..f41d6bbc25 100644
--- a/libs/ardour/plugin_insert.cc
+++ b/libs/ardour/plugin_insert.cc
@@ -89,6 +89,8 @@ PluginInsert::PluginInsert (Session& s, const XMLNode& node)
throw failed_constructor();
}
+ _pending_active = _active;
+
{
Glib::Mutex::Lock em (_session.engine().process_lock());
IO::PortCountChanged (max(input_streams(), output_streams()));
@@ -718,7 +720,6 @@ PluginInsert::set_state(const XMLNode& node, int version)
}
if (prop->value() == X_("ladspa") || prop->value() == X_("Ladspa")) { /* handle old school sessions */
- cout << "- LADSPA\n";
type = ARDOUR::LADSPA;
} else if (prop->value() == X_("lv2")) {
type = ARDOUR::LV2;
@@ -752,8 +753,6 @@ PluginInsert::set_state(const XMLNode& node, int version)
}
}
- cout << "- ID " << prop->value() << "\n";
-
boost::shared_ptr<Plugin> plugin;
plugin = find_plugin (_session, prop->value(), type);
diff --git a/libs/ardour/route.cc b/libs/ardour/route.cc
index 1b8dfaec46..facc507133 100644
--- a/libs/ardour/route.cc
+++ b/libs/ardour/route.cc
@@ -1014,6 +1014,10 @@ Route::add_processors (const ProcessorList& others, ProcessorList::iterator iter
_processors.insert (iter, *i);
+ if ((*i)->active()) {
+ (*i)->activate ();
+ }
+
if (configure_processors_unlocked (err)) {
++existing_end;
_processors.erase (existing_end, _processors.end());