_meter_connection = Metering::connect (mem_fun (*this, &Route::meter));
}
-Route::Route (Session& sess, const XMLNode& node, int version, DataType default_type)
+Route::Route (Session& sess, const XMLNode& node, DataType default_type)
: SessionObject (sess, "toBeReset")
, AutomatableControls (sess)
, _solo_control (new SoloControllable (X_("solo"), *this))
{
init ();
- _set_state (node, version, false);
+ _set_state (node, Stateful::loading_state_version, false);
/* now that we have _meter, its safe to connect to this */
} else if (prop->value() == "meter") {
if (_meter) {
- if (_meter->set_state (node)) {
+ if (_meter->set_state (node, Stateful::loading_state_version)) {
return false;
} else {
return true;
/* amp always exists */
processor = _amp;
- if (processor->set_state (node)) {
+ if (processor->set_state (node, Stateful::loading_state_version)) {
return false;
} else {
/* never any reason to add it */
} else if (prop->value() == "intreturn") {
if (_intreturn) {
- if (_intreturn->set_state (node)) {
+ if (_intreturn->set_state (node, Stateful::loading_state_version)) {
return false;
} else {
return true;
} else if (prop->value() == "main-outs") {
if (_main_outs) {
- if (_main_outs->set_state (node)) {
+ if (_main_outs->set_state (node, Stateful::loading_state_version)) {
return false;
} else {
return true;
try {
boost::shared_ptr<Processor> processor;
-
+
if (node.name() == "Insert") {
if ((prop = node.property ("type")) != 0) {
-
+
if (prop->value() == "ladspa" || prop->value() == "Ladspa" ||
- prop->value() == "lv2" ||
- prop->value() == "vst" ||
- prop->value() == "audiounit") {
-
- processor.reset (new PluginInsert (_session, node, version));
-
+ prop->value() == "lv2" ||
+ prop->value() == "vst" ||
+ prop->value() == "audiounit") {
+
+ processor.reset (new PluginInsert (_session, node));
+
} else {
-
- processor.reset (new PortInsert (_session, _mute_master, node, version));
+
+ processor.reset (new PortInsert (_session, _mute_master, node));
}
}
-
+
} else if (node.name() == "Send") {
-
+
processor.reset (new Send (_session, _mute_master, node, version));
-
+
} else {
-
+
error << string_compose(_("unknown Processor type \"%1\"; ignored"), node.name()) << endmsg;
return false;
}
-
+
if (iter == _processors.end() && processor->visible() && !_processors.empty()) {
/* check for invisible processors stacked at the end and leave them there */
ProcessorList::iterator p;
++p;
iter = p;
}
-
+
return (add_processor (processor, iter) == 0);
}
if (version < 3000) {
return _set_state_2X (node, version);
}
-
+
XMLNodeList nlist;
XMLNodeConstIterator niter;
XMLNode *child;
}
if (prop->value() == "Input") {
- _input->set_state (*child);
+ _input->set_state (*child, version);
} else if (prop->value() == "Output") {
- _output->set_state (*child);
+ _output->set_state (*child, version);
}
}
} else if (child->name() == X_("Controllable") && (prop = child->property("name")) != 0) {
if (prop->value() == "solo") {
- _solo_control->set_state (*child);
+ _solo_control->set_state (*child, version);
_session.add_controllable (_solo_control);
}
}
} else if (child->name() == X_("MuteMaster")) {
- _mute_master->set_state (*child);
+ _mute_master->set_state (*child, version);
}
}
const XMLProperty *prop;
/* 2X things which still remain to be handled:
- * default-type
+ * default-type
* muted
* mute-affects-pre-fader
* mute-affects-post-fader
_intreturn.reset (new InternalReturn (_session));
add_processor (_intreturn, PreFader);
}
-
+
_main_outs.reset (new Delivery (_session, _output, _mute_master, _name, Delivery::Main));
add_processor (_main_outs, PostFader);
child = *niter;
if (child->name() == IO::state_node_name) {
+
+ /* there is a note in IO::set_state_2X() about why we have to call
+ this directly.
+ */
+
_input->set_state_2X (*child, version, true);
_output->set_state_2X (*child, version, false);
set_active (yn);
}
}
-
+
/* XXX: panners? */
}
-
+
if ((prop = node.property (X_("phase-invert"))) != 0) {
set_phase_invert (string_is_affirmative (prop->value()));
}
set_route_group (route_group, this);
}
}
-
+
if ((prop = node.property (X_("edit-group"))) != 0) {
RouteGroup* route_group = _session.route_group_by_name(prop->value());
if (route_group == 0) {
if ((equal = remaining.find_first_of ('=')) == string::npos || equal == remaining.length()) {
error << string_compose (_("badly formed order key string in state file! [%1] ... ignored."), remaining)
- << endmsg;
+ << endmsg;
} else {
if (sscanf (remaining.substr (equal+1).c_str(), "%ld", &n) != 1) {
error << string_compose (_("badly formed order key string in state file! [%1] ... ignored."), remaining)
- << endmsg;
+ << endmsg;
} else {
set_order_key (remaining.substr (0, equal), n);
}
}
XMLNodeList redirect_nodes;
-
+
for (niter = nlist.begin(); niter != nlist.end(); ++niter){
-
+
child = *niter;
-
+
if (child->name() == X_("Send") || child->name() == X_("Insert")) {
redirect_nodes.push_back(child);
}
-
+
}
set_processor_state_2X (redirect_nodes, version);
_extra_xml = new XMLNode (*child);
} else if (child->name() == X_("Controllable") && (prop = child->property("name")) != 0) {
-
+
if (prop->value() == "solo") {
- _solo_control->set_state (*child);
+ _solo_control->set_state (*child, version);
_session.add_controllable (_solo_control);
- }
+ }
} else if (child->name() == X_("RemoteControl")) {
if ((prop = child->property (X_("id"))) != 0) {
// and make it (just) so
- (*i)->set_state (**niter);
+ (*i)->set_state (**niter, Stateful::current_state_version);
}
}