#include <vector>
#include <glibmm/thread.h>
+#include <boost/signals2.hpp>
#include <jack/jack.h>
-#include <sigc++/signal.h>
+#include "pbd/signals.h"
+
#include "ardour/types.h"
#include "midi++/parser.h"
#include "midi++/types.h"
-class PIController;
+class PIChaser;
namespace MIDI {
class Port;
/// We need this wrapper for testability, it's just too hard to mock up a session class
class ISlaveSessionProxy {
public:
+ virtual ~ISlaveSessionProxy() {}
virtual TempoMap& tempo_map() const { return *((TempoMap *) 0); }
virtual nframes_t frame_rate() const { return 0; }
virtual nframes64_t audible_frame () const { return 0; }
}
};
-class MTC_Slave : public Slave, public sigc::trackable {
+class MTC_Slave : public Slave {
public:
MTC_Slave (Session&, MIDI::Port&);
~MTC_Slave ();
private:
Session& session;
MIDI::Port* port;
- std::vector<sigc::connection> connections;
+ PBD::ScopedConnectionList port_connections;
bool can_notify_on_unknown_rate;
- PIController* pic;
+ PIChaser* pic;
static const int frame_tolerance;
void process_apparent_speed (double);
};
-class MIDIClock_Slave : public Slave, public sigc::trackable {
+class MIDIClock_Slave : public Slave {
public:
MIDIClock_Slave (Session&, MIDI::Port&, int ppqn = 24);
private:
ISlaveSessionProxy* session;
MIDI::Port* port;
- std::vector<sigc::connection> connections;
+ PBD::ScopedConnectionList port_connections;
/// pulses per quarter note for one MIDI clock frame (default 24)
int ppqn;