Fix ambiguous latency detection (mostly revert eb0498bb2
)
This commit is contained in:
parent
4998b2711b
commit
2c4a2fc6fa
@ -1680,8 +1680,8 @@ PortManager::check_for_ambiguous_latency (bool log) const
|
|||||||
boost::shared_ptr<Ports> plist = _ports.reader();
|
boost::shared_ptr<Ports> plist = _ports.reader();
|
||||||
for (Ports::iterator pi = plist->begin(); pi != plist->end(); ++pi) {
|
for (Ports::iterator pi = plist->begin(); pi != plist->end(); ++pi) {
|
||||||
boost::shared_ptr<Port> const& p (pi->second);
|
boost::shared_ptr<Port> const& p (pi->second);
|
||||||
/* check one to many connections on the receiving side */
|
/* check one to many connections */
|
||||||
if (p->sends_output () || (p->flags () & IsTerminal)) {
|
if (!p->sends_output () || (p->flags () & IsTerminal) || !p->connected ()) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
if (boost::dynamic_pointer_cast<AsyncMIDIPort>(p)) {
|
if (boost::dynamic_pointer_cast<AsyncMIDIPort>(p)) {
|
||||||
@ -1689,51 +1689,13 @@ PortManager::check_for_ambiguous_latency (bool log) const
|
|||||||
}
|
}
|
||||||
assert (port_is_mine (p->name ()));
|
assert (port_is_mine (p->name ()));
|
||||||
|
|
||||||
LatencyRange rangeA;
|
LatencyRange range;
|
||||||
p->get_connected_latency_range (rangeA, true);
|
range.min = ~((pframes_t) 0);
|
||||||
|
range.max = 0;
|
||||||
if (rangeA.min == rangeA.max) {
|
p->collect_latency_from_backend (range, true);
|
||||||
continue;
|
if (range.min != range.max) {
|
||||||
}
|
|
||||||
|
|
||||||
/* check if latency-range of connected ports matches our own */
|
|
||||||
|
|
||||||
vector<string> connections;
|
|
||||||
p->get_connections (connections);
|
|
||||||
|
|
||||||
assert (!connections.empty());
|
|
||||||
|
|
||||||
for (vector<string>::const_iterator c = connections.begin(); c != connections.end(); ++c) {
|
|
||||||
LatencyRange rangeB;
|
|
||||||
|
|
||||||
if (!AudioEngine::instance()->port_is_mine (*c)) {
|
|
||||||
PortEngine::PortHandle ph = _backend->get_port_by_name (*c);
|
|
||||||
if (!ph) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
rangeB = _backend->get_latency_range (ph, true);
|
|
||||||
} else {
|
|
||||||
Ports::iterator x = plist->find (make_port_name_relative (*c));
|
|
||||||
if (x == plist->end()) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
boost::shared_ptr<Port> const& pb (x->second);
|
|
||||||
if (pb->flags () & (IsTerminal | Hidden | TransportSyncPort)) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
pb->get_connected_latency_range (rangeB, true);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (rangeA == rangeB) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
if (log) {
|
if (log) {
|
||||||
warning << string_compose(
|
warning << string_compose(_("Ambiguous latency for port '%1' (%2, %3)"), p->name(), range.min, range.max) << endmsg;
|
||||||
_("Ambiguous latency for input '%1' (%2, %3),"
|
|
||||||
"receiving from port '%4' (%5, %6)"),
|
|
||||||
p->name(), rangeA.min, rangeA.max,
|
|
||||||
*c, rangeB.min, rangeB.max)
|
|
||||||
<< endmsg;
|
|
||||||
rv = true;
|
rv = true;
|
||||||
} else {
|
} else {
|
||||||
return true;
|
return true;
|
||||||
|
Loading…
Reference in New Issue
Block a user