diff options
author | Paul Davis <paul@linuxaudiosystems.com> | 2019-11-11 18:21:47 -0700 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2019-11-15 16:04:58 -0700 |
commit | c69227fd8ddc73f3d98a7959f5b71fd1df6a4017 (patch) | |
tree | 974b1fe3fa0f13d3e03236e1b6b4d5d34829ede4 | |
parent | 2f87b111e55b8eeb975de150941127dd54b6ee3f (diff) |
eliminate hacky design for being able to deliver the correct time as JACK timebase master
-rw-r--r-- | libs/ardour/ardour/session.h | 2 | ||||
-rw-r--r-- | libs/ardour/session_transport.cc | 1 | ||||
-rw-r--r-- | libs/backends/jack/jack_session.cc | 9 |
3 files changed, 10 insertions, 2 deletions
diff --git a/libs/ardour/ardour/session.h b/libs/ardour/ardour/session.h index 62742109be..407333c397 100644 --- a/libs/ardour/ardour/session.h +++ b/libs/ardour/ardour/session.h @@ -717,6 +717,7 @@ public: samplepos_t audible_sample (bool* latent_locate = NULL) const; samplepos_t requested_return_sample() const { return _requested_return_sample; } void set_requested_return_sample(samplepos_t return_to); + boost::optional<samplepos_t> const & nominal_jack_transport_sample() { return _nominal_jack_transport_sample; } bool compute_audible_delta (samplepos_t& pos_and_delta) const; samplecnt_t remaining_latency_preroll () const { return _remaining_latency_preroll; } @@ -2108,6 +2109,7 @@ private: CoreSelection* _selection; bool _global_locate_pending; + boost::optional<samplepos_t> _nominal_jack_transport_sample; }; diff --git a/libs/ardour/session_transport.cc b/libs/ardour/session_transport.cc index 6b0d81172b..9cc46f2f5c 100644 --- a/libs/ardour/session_transport.cc +++ b/libs/ardour/session_transport.cc @@ -244,6 +244,7 @@ Session::do_locate (samplepos_t target_sample, bool with_roll, bool with_flush, // Update Timecode time _transport_sample = target_sample; + _nominal_jack_transport_sample = boost::none; // Bump seek counter so that any in-process locate in the butler // thread(s?) can restart. g_atomic_int_inc (&_seek_counter); diff --git a/libs/backends/jack/jack_session.cc b/libs/backends/jack/jack_session.cc index 2ea6ae9f6b..f3c5c2553f 100644 --- a/libs/backends/jack/jack_session.cc +++ b/libs/backends/jack/jack_session.cc @@ -115,7 +115,13 @@ JACKSession::timebase_callback (jack_transport_state_t /*state*/, { Timecode::BBT_Time bbt; TempoMap& tempo_map (_session->tempo_map()); - samplepos_t tf = _session->transport_sample (); + samplepos_t tf; + + /* see commit msg for e2c26e1b9 and Session::start_locate() for + details. + */ + + tf = _session->nominal_jack_transport_sample().value_or (_session->transport_sample()); /* BBT info */ @@ -191,4 +197,3 @@ JACKSession::timebase_callback (jack_transport_state_t /*state*/, } #endif } - |