summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--libs/ardour/ardour/session.h1
-rw-r--r--libs/ardour/port.cc1
-rw-r--r--libs/ardour/session.cc16
-rw-r--r--libs/ardour/session_state.cc4
4 files changed, 22 insertions, 0 deletions
diff --git a/libs/ardour/ardour/session.h b/libs/ardour/ardour/session.h
index 5491f49df4..b4ecb87f59 100644
--- a/libs/ardour/ardour/session.h
+++ b/libs/ardour/ardour/session.h
@@ -1318,6 +1318,7 @@ private:
void update_latency (bool playback);
bool update_route_latency (bool reverse, bool apply_to_delayline);
+ void initialize_latencies ();
void set_worst_io_latencies ();
void set_worst_output_latency ();
void set_worst_input_latency ();
diff --git a/libs/ardour/port.cc b/libs/ardour/port.cc
index a8e80ad98c..d4c1f63803 100644
--- a/libs/ardour/port.cc
+++ b/libs/ardour/port.cc
@@ -382,6 +382,7 @@ Port::set_private_latency_range (LatencyRange& range, bool playback)
name(),
_private_playback_latency.min,
_private_playback_latency.max));
+ PBD::stacktrace (std::cerr, 20);
} else {
_private_capture_latency = range;
DEBUG_TRACE (DEBUG::Latency, string_compose (
diff --git a/libs/ardour/session.cc b/libs/ardour/session.cc
index 31a57b3b1c..09e5634f5e 100644
--- a/libs/ardour/session.cc
+++ b/libs/ardour/session.cc
@@ -492,6 +492,10 @@ Session::immediately_post_engine ()
_process_graph.reset (new Graph (*this));
}
+ /* every time we reconnect, recompute worst case output latencies */
+
+ _engine.Running.connect_same_thread (*this, boost::bind (&Session::initialize_latencies, this));
+
/* Restart transport FSM */
_transport_fsm->start ();
@@ -6329,6 +6333,18 @@ Session::unknown_processors () const
}
void
+Session::initialize_latencies ()
+{
+ {
+ Glib::Threads::Mutex::Lock lm (_engine.process_lock());
+ update_latency (false);
+ update_latency (true);
+ }
+
+ set_worst_io_latencies ();
+}
+
+void
Session::set_worst_io_latencies_x (IOChange, void *)
{
set_worst_io_latencies ();
diff --git a/libs/ardour/session_state.cc b/libs/ardour/session_state.cc
index f61c197a0a..605803d85f 100644
--- a/libs/ardour/session_state.cc
+++ b/libs/ardour/session_state.cc
@@ -365,6 +365,10 @@ Session::post_engine_init ()
_state_of_the_state = StateOfTheState (_state_of_the_state & ~(CannotSave | Dirty));
+ /* update latencies */
+
+ initialize_latencies ();
+
_locations->added.connect_same_thread (*this, boost::bind (&Session::location_added, this, _1));
_locations->removed.connect_same_thread (*this, boost::bind (&Session::location_removed, this, _1));
_locations->changed.connect_same_thread (*this, boost::bind (&Session::locations_changed, this));