Add bbt_add that does not take Metric parameter.
[ardour.git] / libs / ardour / route.cc
index 7e453653dc900d8290b87190f875ccee2d6ed37e..053b56512804b56512bbdfc3ce07462ca2c72387 100644 (file)
@@ -96,7 +96,7 @@ Route::Route (Session& sess, string name, Flag flg, DataType default_type)
        _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))
@@ -105,7 +105,7 @@ Route::Route (Session& sess, const XMLNode& node, int version, DataType default_
 {
        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 */
 
@@ -748,7 +748,7 @@ Route::add_processor_from_xml (const XMLNode& node, ProcessorList::iterator iter
                        } 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;
@@ -763,7 +763,7 @@ Route::add_processor_from_xml (const XMLNode& node, ProcessorList::iterator iter
                                /* 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 */
@@ -777,7 +777,7 @@ Route::add_processor_from_xml (const XMLNode& node, ProcessorList::iterator iter
                        } 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;
@@ -789,7 +789,7 @@ Route::add_processor_from_xml (const XMLNode& node, ProcessorList::iterator iter
                        } 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;
@@ -838,35 +838,35 @@ Route::add_processor_from_xml_2X (const XMLNode& node, int version, ProcessorLis
 
        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;
@@ -878,7 +878,7 @@ Route::add_processor_from_xml_2X (const XMLNode& node, int version, ProcessorLis
                        ++p;
                        iter = p;
                }
-               
+
                return (add_processor (processor, iter) == 0);
        }
 
@@ -1669,7 +1669,7 @@ Route::_set_state (const XMLNode& node, int version, bool /*call_base*/)
        if (version < 3000) {
                return _set_state_2X (node, version);
        }
-       
+
        XMLNodeList nlist;
        XMLNodeConstIterator niter;
        XMLNode *child;
@@ -1710,9 +1710,9 @@ Route::_set_state (const XMLNode& node, int version, bool /*call_base*/)
                        }
 
                        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);
                        }
                }
 
@@ -1815,7 +1815,7 @@ Route::_set_state (const XMLNode& node, int version, bool /*call_base*/)
                } 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);
                        }
 
@@ -1827,7 +1827,7 @@ Route::_set_state (const XMLNode& node, int version, bool /*call_base*/)
                        }
 
                } else if (child->name() == X_("MuteMaster")) {
-                       _mute_master->set_state (*child);
+                       _mute_master->set_state (*child, version);
                }
        }
 
@@ -1844,7 +1844,7 @@ Route::_set_state_2X (const XMLNode& node, int 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
@@ -1875,7 +1875,7 @@ Route::_set_state_2X (const XMLNode& node, int version)
                _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);
 
@@ -1887,6 +1887,11 @@ Route::_set_state_2X (const XMLNode& node, int version)
                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);
 
@@ -1904,10 +1909,10 @@ Route::_set_state_2X (const XMLNode& node, int version)
                                set_active (yn);
                        }
                }
-                       
+
                /* XXX: panners? */
        }
-       
+
        if ((prop = node.property (X_("phase-invert"))) != 0) {
                set_phase_invert (string_is_affirmative (prop->value()));
        }
@@ -1939,7 +1944,7 @@ Route::_set_state_2X (const XMLNode& node, int version)
                        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) {
@@ -1960,11 +1965,11 @@ Route::_set_state_2X (const XMLNode& node, int version)
 
                        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);
                                }
@@ -1981,15 +1986,15 @@ Route::_set_state_2X (const XMLNode& node, int version)
        }
 
        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);
@@ -2009,11 +2014,11 @@ Route::_set_state_2X (const XMLNode& node, int 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) {
@@ -2144,7 +2149,7 @@ Route::set_processor_state (const XMLNode& node)
 
                        // and make it (just) so
 
-                       (*i)->set_state (**niter);
+                       (*i)->set_state (**niter, Stateful::current_state_version);
                }
        }