diff options
author | Robin Gareus <robin@gareus.org> | 2020-04-06 23:45:20 +0200 |
---|---|---|
committer | Robin Gareus <robin@gareus.org> | 2020-04-06 23:45:20 +0200 |
commit | 597837022a1962261a75234a5000bb237a014852 (patch) | |
tree | f04b77fd2223502e7b9af726553f6b604348b583 /libs/ardour | |
parent | 6c6bea26adb26ec71e45adba8db30e6abaa4f460 (diff) |
Add method to check for ambiguous port latency
Diffstat (limited to 'libs/ardour')
-rw-r--r-- | libs/ardour/ardour/port_manager.h | 2 | ||||
-rw-r--r-- | libs/ardour/port_manager.cc | 24 |
2 files changed, 26 insertions, 0 deletions
diff --git a/libs/ardour/ardour/port_manager.h b/libs/ardour/ardour/port_manager.h index a991d4fafd..25497a442f 100644 --- a/libs/ardour/ardour/port_manager.h +++ b/libs/ardour/ardour/port_manager.h @@ -109,6 +109,8 @@ class LIBARDOUR_API PortManager virtual void add_pending_port_deletion (Port*) = 0; PBD::RingBuffer<Port*>& port_deletions_pending () { return _port_deletions_pending; } + bool check_for_amibiguous_latency (bool log = false) const; + /* per-Port monitoring */ bool can_request_input_monitoring () const; diff --git a/libs/ardour/port_manager.cc b/libs/ardour/port_manager.cc index c82bf09619..00648dda8b 100644 --- a/libs/ardour/port_manager.cc +++ b/libs/ardour/port_manager.cc @@ -1374,3 +1374,27 @@ PortManager::set_port_buffer_sizes (pframes_t n) p->second->set_buffer_size (n); } } + +bool +PortManager::check_for_amibiguous_latency (bool log) const +{ + bool rv = false; + boost::shared_ptr<Ports> plist = ports.reader(); + for (Ports::iterator p = plist->begin(); p != plist->end(); ++p) { + for (int c = 0; c < 1; ++c) { + LatencyRange range; + p->second->get_connected_latency_range (range, c ? true : false); + if (range.min != range.max) { + if (log) { + warning << string_compose(_("PortEngine: ambiguous %1 latency for port '%2' (%3, %4)"), + (c ? "playback" : "capture"), p->second->name(), range.min, range.max) + << endmsg; + rv = true; + } else { + return true; + } + } + } + } + return rv; +} |