summaryrefslogtreecommitdiff
path: root/libs/ardour
diff options
context:
space:
mode:
authorRobin Gareus <robin@gareus.org>2020-04-06 23:45:20 +0200
committerRobin Gareus <robin@gareus.org>2020-04-06 23:45:20 +0200
commit597837022a1962261a75234a5000bb237a014852 (patch)
treef04b77fd2223502e7b9af726553f6b604348b583 /libs/ardour
parent6c6bea26adb26ec71e45adba8db30e6abaa4f460 (diff)
Add method to check for ambiguous port latency
Diffstat (limited to 'libs/ardour')
-rw-r--r--libs/ardour/ardour/port_manager.h2
-rw-r--r--libs/ardour/port_manager.cc24
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;
+}