From 597837022a1962261a75234a5000bb237a014852 Mon Sep 17 00:00:00 2001 From: Robin Gareus Date: Mon, 6 Apr 2020 23:45:20 +0200 Subject: [PATCH] Add method to check for ambiguous port latency --- libs/ardour/ardour/port_manager.h | 2 ++ libs/ardour/port_manager.cc | 24 ++++++++++++++++++++++++ 2 files changed, 26 insertions(+) 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_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 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; +}