final (?) tweaks to rectangle rendering
[ardour.git] / libs / midi++2 / mmc.cc
index e02598def2c48522e506d47c80841fdda05cdb3a..a3f8f01fe429a9ddac80ac11a1772d0a9d90f19c 100644 (file)
 #include <map>
 
 #include "timecode/time.h"
+#include "timecode/bbt_time.h"
+
 #include "pbd/error.h"
+
 #include "midi++/mmc.h"
 #include "midi++/port.h"
 #include "midi++/parser.h"
-#include "midi++/manager.h"
 
 using namespace std;
 using namespace MIDI;
 using namespace PBD;
 
+/**
+ * As libtimecode is linked statically to libmidi++ this
+ * is necessary to pull in all the symbols from libtimecode
+ * so they are exported for other users of libtimecode.
+ */
+double tmp = Timecode::BBT_Time::ticks_per_beat;
+
 static std::map<int,string> mmc_cmd_map;
 static void build_mmc_cmd_map ()
 {
@@ -194,16 +203,21 @@ static void build_mmc_cmd_map ()
        mmc_cmd_map.insert (newpair);
 }
 
-
-MachineControl::MachineControl (Manager* m, jack_client_t* jack)
+MachineControl::MachineControl ()
 {
        build_mmc_cmd_map ();
 
        _receive_device_id = 0x7f;
        _send_device_id = 0x7f;
+}
+
+void
+MachineControl::set_ports (MIDI::Port* ip, MIDI::Port* op)
+{
+       port_connections.drop_connections ();
 
-       _input_port = m->add_port (new Port ("MMC in", Port::IsInput, jack));
-       _output_port = m->add_port (new Port ("MMC out", Port::IsOutput, jack));
+       _input_port = ip;
+       _output_port = op;
 
        _input_port->parser()->mmc.connect_same_thread (port_connections, boost::bind (&MachineControl::process_mmc_message, this, _1, _2, _3));
        _input_port->parser()->start.connect_same_thread (port_connections, boost::bind (&MachineControl::spp_start, this));