13
0

Fix some confusion about relative / non-relative port names. Add some asserts to keep track of what is happening.

git-svn-id: svn://localhost/ardour2/branches/3.0@4424 d708f5d6-7413-0410-9779-e7cbd77b26cf
This commit is contained in:
Carl Hetherington 2009-01-21 17:44:41 +00:00
parent 8097c13d38
commit 90ac43a8d8
4 changed files with 17 additions and 8 deletions

View File

@ -69,7 +69,7 @@ IOSelector::setup ()
char buf[32];
snprintf (buf, sizeof(buf), _("out %d"), j + 1);
_our_bundle->add_channel (buf);
_our_bundle->add_port_to_channel (j, i->name());
_our_bundle->add_port_to_channel (j, _session.engine().make_port_name_non_relative (i->name()));
++j;
}
@ -82,7 +82,7 @@ IOSelector::setup ()
char buf[32];
snprintf (buf, sizeof(buf), _("in %d"), j + 1);
_our_bundle->add_channel (buf);
_our_bundle->add_port_to_channel (j, i->name());
_our_bundle->add_port_to_channel (j, _session.engine().make_port_name_non_relative (i->name()));
++j;
}
@ -152,10 +152,11 @@ IOSelector::get_state (
for (ARDOUR::Bundle::PortList::const_iterator j = other_ports.begin(); j != other_ports.end(); ++j) {
Port* f = _session.engine().get_port_by_name (*i);
if (!f) {
return false;
}
/* since we are talking about an IO, our ports should all have an associated Port *,
so the above call should never fail */
assert (f);
if (!f->connected_to (*j)) {
/* if any one thing is not connected, all bets are off */
return false;

View File

@ -837,6 +837,8 @@ AudioEngine::frames_per_cycle ()
Port *
AudioEngine::get_port_by_name (const string& portname)
{
assert (portname.find_first_of (':') != string::npos);
Glib::Mutex::Lock lm (_process_lock);
return get_port_by_name_locked (portname);
}

View File

@ -47,12 +47,13 @@ Bundle::channel_ports (uint32_t c) const
/** Add an association between one of our channels and a port.
* @param ch Channel index.
* @param portname port name to associate with.
* @param portname full port name to associate with (including prefix).
*/
void
Bundle::add_port_to_channel (uint32_t ch, string portname)
{
assert (ch < nchannels());
assert (portname.find_first_of (':') != string::npos);
{
Glib::Mutex::Lock lm (_channel_mutex);
@ -99,10 +100,15 @@ Bundle::operator== (const Bundle& other) const
}
/** Set a single port to be associated with a channel, removing any others.
* @param ch Channel.
* @param portname Full port name, including prefix.
*/
void
Bundle::set_port (uint32_t ch, string portname)
{
assert (ch < nchannels());
assert (portname.find_first_of (':') != string::npos);
{
Glib::Mutex::Lock lm (_channel_mutex);

View File

@ -2601,7 +2601,7 @@ IO::setup_bundles_for_inputs_and_outputs ()
for (uint32_t i = 0; i < ni; ++i) {
snprintf (buf, sizeof(buf), _("in %d"), (i + 1));
_bundle_for_inputs->add_channel (buf);
_bundle_for_inputs->set_port (i, inputs().port(i)->name());
_bundle_for_inputs->set_port (i, _session.engine().make_port_name_non_relative (inputs().port(i)->name()));
}
snprintf(buf, sizeof (buf), _("%s out"), _name.c_str());
@ -2610,7 +2610,7 @@ IO::setup_bundles_for_inputs_and_outputs ()
for (uint32_t i = 0; i < no; ++i) {
snprintf (buf, sizeof(buf), _("out %d"), (i + 1));
_bundle_for_outputs->add_channel (buf);
_bundle_for_outputs->set_port (i, outputs().port(i)->name());
_bundle_for_outputs->set_port (i, _session.engine().make_port_name_non_relative (outputs().port(i)->name()));
}
}