diff options
author | Paul Davis <paul@linuxaudiosystems.com> | 2019-12-16 16:13:27 -0700 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2019-12-16 16:13:39 -0700 |
commit | cd78a168b2a9bf0ea74f5a6b6dfd51beed4c2df1 (patch) | |
tree | 9d7aa5ec302accf6396e6a4abb3e3dd3da49b923 | |
parent | cafd1b792c26397202f77a25e7c3085cebe065bc (diff) |
reinstate missing latency initialization code
Removed (mistakenly) during work on transportFSM
-rw-r--r-- | libs/ardour/ardour/session.h | 1 | ||||
-rw-r--r-- | libs/ardour/port.cc | 1 | ||||
-rw-r--r-- | libs/ardour/session.cc | 16 | ||||
-rw-r--r-- | libs/ardour/session_state.cc | 4 |
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)); |