summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gtk2_ardour/processor_box.cc5
-rw-r--r--libs/ardour/ardour/plugin_insert.h1
-rw-r--r--libs/ardour/plugin_insert.cc9
3 files changed, 13 insertions, 2 deletions
diff --git a/gtk2_ardour/processor_box.cc b/gtk2_ardour/processor_box.cc
index 71435fe9e4..a059f32a05 100644
--- a/gtk2_ardour/processor_box.cc
+++ b/gtk2_ardour/processor_box.cc
@@ -2155,9 +2155,10 @@ ProcessorBox::paste_processor_state (const XMLNodeList& nlist, boost::shared_ptr
/* XXX its a bit limiting to assume that everything else
is a plugin.
*/
-
p.reset (new PluginInsert (*_session));
- p->set_state (**niter, Stateful::current_state_version);
+ PBD::ID id = p->id();
+ p->set_state (**niter, Stateful::current_state_version);
+ boost::dynamic_pointer_cast<PluginInsert>(p)->update_id (id);
}
copies.push_back (p);
diff --git a/libs/ardour/ardour/plugin_insert.h b/libs/ardour/ardour/plugin_insert.h
index e01f56d8bf..7504478e87 100644
--- a/libs/ardour/ardour/plugin_insert.h
+++ b/libs/ardour/ardour/plugin_insert.h
@@ -53,6 +53,7 @@ class LIBARDOUR_API PluginInsert : public Processor
XMLNode& state(bool);
XMLNode& get_state(void);
int set_state(const XMLNode&, int version);
+ void update_id (PBD::ID);
void run (BufferSet& in, framepos_t start_frame, framepos_t end_frame, pframes_t nframes, bool);
void silence (framecnt_t nframes);
diff --git a/libs/ardour/plugin_insert.cc b/libs/ardour/plugin_insert.cc
index 8da0abb00f..b490646ffc 100644
--- a/libs/ardour/plugin_insert.cc
+++ b/libs/ardour/plugin_insert.cc
@@ -1146,6 +1146,15 @@ PluginInsert::set_state(const XMLNode& node, int version)
}
void
+PluginInsert::update_id (PBD::ID id)
+{
+ set_id (id.to_s());
+ for (Plugins::iterator i = _plugins.begin(); i != _plugins.end(); ++i) {
+ (*i)->set_insert_id (id);
+ }
+}
+
+void
PluginInsert::set_parameter_state_2X (const XMLNode& node, int version)
{
XMLNodeList nlist = node.children();