Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
-#include <fstream>
#include <algorithm>
#include <cmath>
#include <vector>
* ::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 ();
}
}
+ apply_pretty_name ();
setup_bundle ();
_session.set_dirty ();
node->add_property ("direction", enum_2_string (_direction));
node->add_property ("default-type", _default_type.to_string());
+ if (!_pretty_name_prefix.empty ()) {
+ node->add_property("pretty-name", _pretty_name_prefix);
+ }
+
for (std::vector<UserBundleInfo*>::iterator i = _bundles_connected.begin(); i != _bundles_connected.end(); ++i) {
XMLNode* n = new XMLNode ("Bundle");
n->add_property ("name", (*i)->bundle->name ());
snprintf (buf, sizeof (buf), "%" PRId64, _user_latency);
node->add_property (X_("user-latency"), buf);
-
+
return *node;
}
return -1;
}
+ // after create_ports, updates names
+ if ((prop = node.property ("pretty-name")) != 0) {
+ set_pretty_name (prop->value());
+ }
+
if (connecting_legal) {
if (make_connections (node, version, false)) {
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 r;
}
+void
+IO::set_pretty_name (const std::string& str)
+{
+ if (_pretty_name_prefix == str) {
+ return;
+ }
+ _pretty_name_prefix = str;
+ apply_pretty_name ();
+}
+
+void
+IO::apply_pretty_name ()
+{
+ uint32_t pn = 1;
+ if (_pretty_name_prefix.empty ()) {
+ return;
+ }
+ for (PortSet::iterator i = _ports.begin (); i != _ports.end(); ++i, ++pn) {
+ (*i)->set_pretty_name (string_compose (("%1/%2 %3"),
+ _pretty_name_prefix,
+ _direction == Output ? _("Out") : _("In"),
+ pn));
+ }
+}
+
framecnt_t
IO::latency () const
{
}
for ( ; i != _ports.end(*t); ++i, ++b) {
- Buffer& bb (i->get_buffer (nframes));
+ const Buffer& bb (i->get_buffer (nframes));
b->read_from (bb, nframes);
}
}