- _session = &s;
-
- if(_session) {
- _session->tick.connect(mem_fun (*this, &Ticker::tick));
- _session->GoingAway.connect(mem_fun (*this, &Ticker::going_away));
+ Ticker::set_session (s);
+
+ if (_session) {
+ _session->MIDIClock_PortChanged.connect_same_thread (_session_connections, boost::bind (&MidiClockTicker::update_midi_clock_port, this));
+ _session->TransportStateChange.connect_same_thread (_session_connections, boost::bind (&MidiClockTicker::transport_state_changed, this));
+ _session->PositionChanged.connect_same_thread (_session_connections, boost::bind (&MidiClockTicker::position_changed, this, _1));
+ _session->TransportLooped.connect_same_thread (_session_connections, boost::bind (&MidiClockTicker::transport_looped, this));
+ update_midi_clock_port();