summaryrefslogtreecommitdiff
path: root/libs/ardour/io.cc
diff options
context:
space:
mode:
authorJulien "_FrnchFrgg_" RIVAUD <frnchfrgg@free.fr>2017-08-24 11:40:19 +0200
committerJulien "_FrnchFrgg_" RIVAUD <frnchfrgg@free.fr>2017-08-24 15:41:40 +0200
commit9c793759c81c306f9cf1dcf8e0be40a4ef16f795 (patch)
tree63d855e5238668ebd17c72490596783e3b9a6ec8 /libs/ardour/io.cc
parentcc7243d4ced5b5f7039a556f7459a67edf48ea9a (diff)
Remove all manual accounting of connected user bundles
IO used to manually keep a list of user bundles it was connected to, but it didn't work correctly: sometimes it didn't notice that a bundle wasn't connected anymore, and the list wasn't correctly persisted across save/reloads among other things. Moreover, it wasn't needed at all, since the user bundles are correctly listed by _session.bundles() and IO already notices they are connected ! Remove all occurrences of |_bundles_connected| and |check_bundles_connected|.
Diffstat (limited to 'libs/ardour/io.cc')
-rw-r--r--libs/ardour/io.cc90
1 files changed, 0 insertions, 90 deletions
diff --git a/libs/ardour/io.cc b/libs/ardour/io.cc
index 40c4d854f3..7dc67d176b 100644
--- a/libs/ardour/io.cc
+++ b/libs/ardour/io.cc
@@ -154,50 +154,6 @@ IO::silence (framecnt_t nframes)
}
}
-/** Set _bundles_connected to those bundles that are connected such that every
- * port on every bundle channel x is connected to port x in _ports.
- */
-void
-IO::check_bundles_connected ()
-{
- std::vector<UserBundleInfo*> new_list;
-
- for (std::vector<UserBundleInfo*>::iterator i = _bundles_connected.begin(); i != _bundles_connected.end(); ++i) {
-
- uint32_t const N = (*i)->bundle->nchannels().n_total();
-
- if (_ports.num_ports() < N) {
- continue;
- }
-
- bool ok = true;
-
- for (uint32_t j = 0; j < N; ++j) {
- /* Every port on bundle channel j must be connected to our input j */
- Bundle::PortList const pl = (*i)->bundle->channel_ports (j);
- for (uint32_t k = 0; k < pl.size(); ++k) {
- if (_ports.port(j)->connected_to (pl[k]) == false) {
- ok = false;
- break;
- }
- }
-
- if (ok == false) {
- break;
- }
- }
-
- if (ok) {
- new_list.push_back (*i);
- } else {
- delete *i;
- }
- }
-
- _bundles_connected = new_list;
-}
-
-
int
IO::disconnect (boost::shared_ptr<Port> our_port, string other_port, void* src)
{
@@ -220,8 +176,6 @@ IO::disconnect (boost::shared_ptr<Port> our_port, string other_port, void* src)
error << string_compose(_("IO: cannot disconnect port %1 from %2"), our_port->name(), other_port) << endmsg;
return -1;
}
-
- check_bundles_connected ();
}
changed (IOChange (IOChange::ConnectionsChanged), src); /* EMIT SIGNAL */
@@ -288,7 +242,6 @@ IO::remove_port (boost::shared_ptr<Port> port, void* src)
}
_session.engine().unregister_port (port);
- check_bundles_connected ();
}
}
@@ -395,8 +348,6 @@ IO::disconnect (void* src)
for (PortSet::iterator i = _ports.begin(); i != _ports.end(); ++i) {
i->disconnect_all ();
}
-
- check_bundles_connected ();
}
changed (IOChange (IOChange::ConnectionsChanged), src); /* EMIT SIGNAL */
@@ -482,7 +433,6 @@ IO::ensure_ports_locked (ChanCount count, bool clear, bool& changed)
}
if (changed) {
- check_bundles_connected ();
PortCountChanged (n_ports()); /* EMIT SIGNAL */
_session.set_dirty ();
}
@@ -567,12 +517,6 @@ IO::state (bool /*full_state*/)
node->set_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->set_property ("name", (*i)->bundle->name ());
- node->add_child_nocopy (*n);
- }
-
for (PortSet::iterator i = _ports.begin(); i != _ports.end(); ++i) {
vector<string> connections;
@@ -1320,22 +1264,6 @@ IO::connect_ports_to_bundle (boost::shared_ptr<Bundle> c, bool exclusive,
c->connect (_bundle, _session.engine(), allow_partial);
- /* If this is a UserBundle, make a note of what we've done */
-
- boost::shared_ptr<UserBundle> ub = boost::dynamic_pointer_cast<UserBundle> (c);
- if (ub) {
-
- /* See if we already know about this one */
- std::vector<UserBundleInfo*>::iterator i = _bundles_connected.begin();
- while (i != _bundles_connected.end() && (*i)->bundle != ub) {
- ++i;
- }
-
- if (i == _bundles_connected.end()) {
- /* We don't, so make a note */
- _bundles_connected.push_back (new UserBundleInfo (this, ub));
- }
- }
}
changed (IOChange (IOChange::ConnectionsChanged), src); /* EMIT SIGNAL */
@@ -1354,19 +1282,6 @@ IO::disconnect_ports_from_bundle (boost::shared_ptr<Bundle> c, void* src)
/* If this is a UserBundle, make a note of what we've done */
- boost::shared_ptr<UserBundle> ub = boost::dynamic_pointer_cast<UserBundle> (c);
- if (ub) {
-
- std::vector<UserBundleInfo*>::iterator i = _bundles_connected.begin();
- while (i != _bundles_connected.end() && (*i)->bundle != ub) {
- ++i;
- }
-
- if (i != _bundles_connected.end()) {
- delete *i;
- _bundles_connected.erase (i);
- }
- }
}
changed (IOChange (IOChange::ConnectionsChanged), src); /* EMIT SIGNAL */
@@ -1545,11 +1460,6 @@ IO::bundles_connected ()
{
BundleList bundles;
- /* User bundles */
- for (std::vector<UserBundleInfo*>::iterator i = _bundles_connected.begin(); i != _bundles_connected.end(); ++i) {
- bundles.push_back ((*i)->bundle);
- }
-
/* Session bundles */
boost::shared_ptr<ARDOUR::BundleList> b = _session.bundles ();
for (ARDOUR::BundleList::iterator i = b->begin(); i != b->end(); ++i) {