summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2019-11-11 18:21:47 -0700
committerPaul Davis <paul@linuxaudiosystems.com>2019-11-15 16:04:58 -0700
commitc69227fd8ddc73f3d98a7959f5b71fd1df6a4017 (patch)
tree974b1fe3fa0f13d3e03236e1b6b4d5d34829ede4
parent2f87b111e55b8eeb975de150941127dd54b6ee3f (diff)
eliminate hacky design for being able to deliver the correct time as JACK timebase master
-rw-r--r--libs/ardour/ardour/session.h2
-rw-r--r--libs/ardour/session_transport.cc1
-rw-r--r--libs/backends/jack/jack_session.cc9
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
}
-