diff --git a/libs/ardour/ardour/mixer_snapshot.h b/libs/ardour/ardour/mixer_snapshot.h index d077b09560..379418b82b 100644 --- a/libs/ardour/ardour/mixer_snapshot.h +++ b/libs/ardour/ardour/mixer_snapshot.h @@ -73,6 +73,7 @@ class MixerSnapshot private: ARDOUR::Session* _session; + XMLNode& sanitize_node(XMLNode&); void reassign_masters(boost::shared_ptr, XMLNode); void load_from_session(std::string); void load_from_session(XMLNode&); diff --git a/libs/ardour/mixer_snapshot.cc b/libs/ardour/mixer_snapshot.cc index 9a967cc370..61bc115adb 100644 --- a/libs/ardour/mixer_snapshot.cc +++ b/libs/ardour/mixer_snapshot.cc @@ -254,7 +254,7 @@ void MixerSnapshot::recall() if(route) { XMLNode& bfr = route->get_state(); - route->set_state(state.node, PBD::Stateful::loading_state_version); + route->set_state(sanitize_node(state.node), PBD::Stateful::loading_state_version); reassign_masters(route, state.node); _session->add_command(new MementoCommand((*route), &bfr, &route->get_state())); } @@ -406,6 +406,19 @@ void MixerSnapshot::load_from_session(string path) load_from_session(*(root)); } +XMLNode& MixerSnapshot::sanitize_node(XMLNode& node) +{ +#ifndef MIXBUS + const string proc[] = {"PRE", "EQ", "Comp", "POST"}; + const string name = "Processor"; + const string prop = "name"; + + for(int i = 0; i <= 3; i++) + node.remove_node_and_delete(name, prop, proc[i]); +#endif + return node; +} + void MixerSnapshot::load_from_session(XMLNode& node) { clear();