Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
-#include <fstream>
#include <algorithm>
#include <cmath>
#include <vector>
#include "ardour/debug.h"
#include "ardour/io.h"
#include "ardour/port.h"
+#include "ardour/profile.h"
#include "ardour/route.h"
#include "ardour/session.h"
#include "ardour/user_bundle.h"
* ::disconnect()
*/
if (_ports.contains (a) || _ports.contains (b)) {
- changed (IOChange (IOChange::ConnectionsChanged), this); /* EMIT SIGNAL */
+ changed (IOChange (IOChange::ConnectionsChanged), this); /* EMIT SIGNAL */
}
} else {
/* we didn't get the lock, so assume that we're inside
}
_session.set_dirty ();
-
+
return 0;
}
ChanCount before = _ports.count ();
ChanCount after = before;
after.set (type, after.get (type) + 1);
-
+
bool const r = PortCountChanging (after); /* EMIT SIGNAL */
if (r) {
return -1;
}
-
+
IOChange change;
{
/* Create a new port */
string portname = build_legal_port_name (type);
-
+
if (_direction == Input) {
if ((our_port = _session.engine().register_input_port (type, portname)) == 0) {
error << string_compose(_("IO: cannot register input port %1"), portname) << endmsg;
change.before = _ports.count ();
_ports.add (our_port);
}
-
+
PortCountChanged (n_ports()); /* EMIT SIGNAL */
change.type = IOChange::ConfigurationChanged;
change.after = _ports.count ();
XMLNode* node = new XMLNode (state_node_name);
char buf[64];
string str;
- vector<string>::iterator ci;
int n;
LocaleGuard lg (X_("C"));
Glib::Threads::Mutex::Lock lm (io_lock);
pnode->add_property (X_("name"), i->name());
if (i->get_connections (connections)) {
+ vector<string>::const_iterator ci;
+ std::sort (connections.begin(), connections.end());
for (n = 0, ci = connections.begin(); ci != connections.end(); ++ci, ++n) {
snprintf (buf, sizeof (buf), "%" PRId64, _user_latency);
node->add_property (X_("user-latency"), buf);
-
+
return *node;
}
int
IO::connecting_became_legal ()
{
- int ret;
+ int ret = 0;
assert (pending_state_node);
connection_legal_c.disconnect ();
- ret = make_connections (*pending_state_node, pending_state_node_version, pending_state_node_in);
+ // it's not required for TracksLive, as long as TracksLive's session does all the connections when it's being loaded
+ if (!Profile->get_trx() ) {
+ ret = make_connections (*pending_state_node, pending_state_node_version, pending_state_node_in);
+ }
delete pending_state_node;
pending_state_node = 0;
for (XMLNodeIterator i = children.begin(); i != children.end(); ++i) {
if ((*i)->name() == "Port") {
-
+
prop = (*i)->property (X_("name"));
-
+
if (prop) {
string new_name;
string old = prop->value();
if (slash != string::npos) {
/* port name is of form: <IO-name>/<port-name> */
-
+
new_name = name;
new_name += old.substr (old.find ('/'));
-
+
prop->set_value (new_name);
}
}
return 0;
}
- pos = 0;
opos = 0;
ports.clear ();