X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=libs%2Fmidi%2B%2B2%2Fmmc.cc;h=b92e686ce6b753bca71bea99b2b2be0b5fa70c98;hb=658bb3ccd43658de18fbd43cd91a8e66650e27a7;hp=1b8de40358914048cf2995253c2d03a048b0fc77;hpb=8c5cff60912c7e0a7256f635641399500d8d00d9;p=ardour.git diff --git a/libs/midi++2/mmc.cc b/libs/midi++2/mmc.cc index 1b8de40358..b92e686ce6 100644 --- a/libs/midi++2/mmc.cc +++ b/libs/midi++2/mmc.cc @@ -22,12 +22,13 @@ #include #include "timecode/time.h" +#include "timecode/bbt_time.h" + #include "pbd/error.h" + #include "midi++/mmc.h" #include "midi++/port.h" -#include "midi++/jack_midi_port.h" #include "midi++/parser.h" -#include "midi++/manager.h" #ifndef __INT_MAX__ // 'ssize_t' won't be defined yet typedef long ssize_t; @@ -37,6 +38,13 @@ 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 mmc_cmd_map; static void build_mmc_cmd_map () { @@ -199,16 +207,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 JackMIDIPort ("MMC in", Port::IsInput, jack)); - _output_port = m->add_port (new JackMIDIPort ("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));