if (p.substr(0, strlen ("system:")) == "system:" || p.substr (0, strlen ("alsa_pcm:")) == "alsa_pcm:") {
/* system: or alsa_pcm: prefix */
- _system.add_port (p);
+
+ /* see if this port is already in one of the system: bundles */
+ std::vector<boost::shared_ptr<ARDOUR::Bundle> >::iterator i = _system.bundles.begin();
+ while (i != _system.bundles.end()) {
+ if ((*i)->uses_port (p)) {
+ break;
+ }
+ ++i;
+ }
+
+ if (i == _system.bundles.end()) {
+ /* it's not already in there, so add it */
+ _system.add_port (p);
+ }
} else {
if (p.substr(0, client_matching_string.length()) != client_matching_string) {
/* other (non-ardour) prefix */
PortMatrix::State const s = _port_matrix->get_state (
our_bundle, our_channel, other_bundle, other_channel
);
-
+
if (s == PortMatrix::ASSOCIATED || s == PortMatrix::NOT_ASSOCIATED) {
bool const n = !(s == PortMatrix::ASSOCIATED);
- _port_matrix->set_state (
- our_bundle, our_channel, other_bundle, other_channel,
+ _port_matrix->set_state (
+ our_bundle, our_channel, other_bundle, other_channel,
n, 0
- );
+ );
}
require_render ();