diff --git a/libs/ardour/ardour/route.h b/libs/ardour/ardour/route.h index 3c9d206760..ce777171b8 100644 --- a/libs/ardour/ardour/route.h +++ b/libs/ardour/ardour/route.h @@ -522,7 +522,7 @@ class Route : public SessionObject, public Automatable, public RouteGroupMember, void set_mute_master_solo (); void set_processor_positions (); - framecnt_t update_port_latencies (const PortSet& ports, const PortSet& feeders, bool playback, framecnt_t) const; + framecnt_t update_port_latencies (PortSet& ports, PortSet& feeders, bool playback, framecnt_t) const; void setup_invisible_processors (); diff --git a/libs/ardour/io.cc b/libs/ardour/io.cc index 4cb1cca5b6..875fca7fa0 100644 --- a/libs/ardour/io.cc +++ b/libs/ardour/io.cc @@ -1156,7 +1156,7 @@ IO::latency () const /* io lock not taken - must be protected by other means */ for (PortSet::const_iterator i = _ports.begin(); i != _ports.end(); ++i) { - if ((latency = i->public_latency_range (_direction == Output).max) > max_latency) { + if ((latency = i->private_latency_range (_direction == Output).max) > max_latency) { max_latency = latency; } } diff --git a/libs/ardour/port.cc b/libs/ardour/port.cc index 959336f701..da3e5f037d 100644 --- a/libs/ardour/port.cc +++ b/libs/ardour/port.cc @@ -265,6 +265,10 @@ Port::set_private_latency_range (jack_latency_range_t& range, bool playback) _private_playback_latency.min, _private_playback_latency.max)); } + + /* push to public (JACK) location so that everyone else can see it */ + + set_public_latency_range (range, playback); } const jack_latency_range_t& diff --git a/libs/ardour/route.cc b/libs/ardour/route.cc index a1516dd0ae..d1adac366c 100644 --- a/libs/ardour/route.cc +++ b/libs/ardour/route.cc @@ -3595,7 +3595,7 @@ Route::unknown_processors () const framecnt_t -Route::update_port_latencies (const PortSet& from, const PortSet& to, bool playback, framecnt_t our_latency) const +Route::update_port_latencies (PortSet& from, PortSet& to, bool playback, framecnt_t our_latency) const { /* we assume that all our input ports feed all our output ports. its not universally true, but the alternative is way too corner-case to worry about. @@ -3610,7 +3610,7 @@ Route::update_port_latencies (const PortSet& from, const PortSet& to, bool playb connections to the "outside" (outside of this Route). */ - for (PortSet::const_iterator p = from.begin(); p != from.end(); ++p) { + for (PortSet::iterator p = from.begin(); p != from.end(); ++p) { jack_latency_range_t range; @@ -3622,8 +3622,8 @@ Route::update_port_latencies (const PortSet& from, const PortSet& to, bool playb /* set the "from" port latencies to the max/min range of all their connections */ - for (PortSet::const_iterator p = from.begin(); p != from.end(); ++p) { - p->set_public_latency_range (all_connections, playback); + for (PortSet::iterator p = from.begin(); p != from.end(); ++p) { + p->set_private_latency_range (all_connections, playback); } /* set the ports "in the direction of the flow" to the same value as above plus our own signal latency */ @@ -3631,8 +3631,8 @@ Route::update_port_latencies (const PortSet& from, const PortSet& to, bool playb all_connections.min += our_latency; all_connections.max += our_latency; - for (PortSet::const_iterator p = to.begin(); p != to.end(); ++p) { - p->set_public_latency_range (all_connections, playback); + for (PortSet::iterator p = to.begin(); p != to.end(); ++p) { + p->set_private_latency_range (all_connections, playback); } return all_connections.max; diff --git a/libs/ardour/session.cc b/libs/ardour/session.cc index 48d2f3f0c2..57017f0035 100644 --- a/libs/ardour/session.cc +++ b/libs/ardour/session.cc @@ -4154,7 +4154,7 @@ Session::unknown_processors () const void Session::update_latency (bool playback) { - DEBUG_TRACE (DEBUG::Latency, string_compose ("\n\nJACK latency callback: %1\n", (playback ? "PLAYBACK" : "CAPTURE"))); + DEBUG_TRACE (DEBUG::Latency, string_compose ("JACK latency callback: %1\n", (playback ? "PLAYBACK" : "CAPTURE"))); boost::shared_ptr r = routes.reader (); framecnt_t max_latency = 0; @@ -4168,11 +4168,11 @@ Session::update_latency (bool playback) max_latency = max (max_latency, (*i)->set_private_port_latencies (playback)); } -#if 0 DEBUG_TRACE (DEBUG::Latency, string_compose ("Set public port latencies to %1\n", max_latency)); for (RouteList::iterator i = r->begin(); i != r->end(); ++i) { (*i)->set_public_port_latencies (max_latency, playback); } -#endif + + DEBUG_TRACE (DEBUG::Latency, "JACK latency callback: DONE\n"); }