diff options
-rw-r--r-- | gtk2_ardour/processor_box.cc | 5 | ||||
-rw-r--r-- | libs/ardour/ardour/plugin_insert.h | 1 | ||||
-rw-r--r-- | libs/ardour/plugin_insert.cc | 9 |
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(); |