summaryrefslogtreecommitdiff
path: root/libs
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2011-03-12 20:25:09 +0000
committerPaul Davis <paul@linuxaudiosystems.com>2011-03-12 20:25:09 +0000
commitc7dd29e1676624a54cbdae28218cb5df91ae9837 (patch)
tree7cbc20d4f05e5f3613760b37fc2c7cb87e5578ac /libs
parent88d5649511f1d63d832d36bea348f7d8c128c081 (diff)
properly use and publish private/public port latency values for JACK latency API
git-svn-id: svn://localhost/ardour2/branches/3.0@9130 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'libs')
-rw-r--r--libs/ardour/ardour/route.h2
-rw-r--r--libs/ardour/io.cc2
-rw-r--r--libs/ardour/port.cc4
-rw-r--r--libs/ardour/route.cc12
-rw-r--r--libs/ardour/session.cc6
5 files changed, 15 insertions, 11 deletions
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<RouteList> 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");
}