diff --git a/libs/ardour/ardour/ticker.h b/libs/ardour/ardour/ticker.h index b28a2a368c..f57ed65a91 100644 --- a/libs/ardour/ardour/ticker.h +++ b/libs/ardour/ardour/ticker.h @@ -40,13 +40,21 @@ class MidiPort; class LIBARDOUR_API MidiClockTicker : boost::noncopyable { public: - MidiClockTicker (Session*); + MidiClockTicker (Session&); virtual ~MidiClockTicker (); void tick (samplepos_t, samplepos_t, pframes_t, samplecnt_t); private: + ARDOUR::Session& _session; std::shared_ptr _midi_port; + bool _rolling; + samplepos_t _next_tick; + uint32_t _beat_pos; + uint32_t _clock_cnt; + samplepos_t _transport_pos; + LatencyRange _mclk_out_latency; + PBD::ScopedConnection _latency_connection; void reset (); void resync_latency (bool); @@ -57,17 +65,6 @@ private: void send_continue_event (pframes_t offset, pframes_t nframes); void send_stop_event (pframes_t offset, pframes_t nframes); void send_position_event (uint32_t midi_clocks, pframes_t offset, pframes_t nframes); - - bool _rolling; - double _next_tick; - uint32_t _beat_pos; - uint32_t _clock_cnt; - samplepos_t _transport_pos; - - ARDOUR::Session* _session; - - LatencyRange _mclk_out_latency; - PBD::ScopedConnection _latency_connection; }; } // namespace ARDOUR diff --git a/libs/ardour/session_state.cc b/libs/ardour/session_state.cc index 4731585026..33e1bb3bba 100644 --- a/libs/ardour/session_state.cc +++ b/libs/ardour/session_state.cc @@ -267,7 +267,7 @@ Session::post_engine_init () /* MidiClock requires a tempo map */ delete midi_clock; - midi_clock = new MidiClockTicker (this); + midi_clock = new MidiClockTicker (*this); /* crossfades require sample rate knowledge */ diff --git a/libs/ardour/ticker.cc b/libs/ardour/ticker.cc index 2d8b294bbf..7066dc2a41 100644 --- a/libs/ardour/ticker.cc +++ b/libs/ardour/ticker.cc @@ -40,13 +40,17 @@ using namespace ARDOUR; using namespace PBD; using namespace Temporal; -MidiClockTicker::MidiClockTicker (Session* s) +MidiClockTicker::MidiClockTicker (Session& s) + : _session (s) + , _midi_port (s.midi_clock_output_port ()) + , _rolling (false) + , _next_tick (0) + , _beat_pos (0) + , _clock_cnt (0) + , _transport_pos (-1) { - _session = s; - _midi_port = s->midi_clock_output_port (); - reset (); resync_latency (true); - s->LatencyUpdated.connect_same_thread (_latency_connection, boost::bind (&MidiClockTicker::resync_latency, this, _1)); + _session.LatencyUpdated.connect_same_thread (_latency_connection, boost::bind (&MidiClockTicker::resync_latency, this, _1)); } MidiClockTicker::~MidiClockTicker () @@ -66,7 +70,7 @@ MidiClockTicker::reset () void MidiClockTicker::resync_latency (bool playback) { - if (_session->deletion_in_progress() || !playback) { + if (_session.deletion_in_progress() || !playback) { return; } assert (_midi_port);