summaryrefslogtreecommitdiff
path: root/libs/midi++2
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2013-08-07 22:22:11 -0400
committerPaul Davis <paul@linuxaudiosystems.com>2013-08-07 22:22:11 -0400
commit1ab61b8564f9934c533d1c1a229888bc7e2fd557 (patch)
treebaa1b05b50c018ca0edbda936b35de58adb29d94 /libs/midi++2
parent83a0c30c24ce6bb6e3e718c267a82fbaffc33b4b (diff)
major redesign of MIDI port heirarchy and management (part 2)
Diffstat (limited to 'libs/midi++2')
-rw-r--r--libs/midi++2/midi++/mmc.h5
-rw-r--r--libs/midi++2/midi++/parser.h4
-rw-r--r--libs/midi++2/midi++/port.h7
-rw-r--r--libs/midi++2/mmc.cc15
-rw-r--r--libs/midi++2/parser.cc3
-rw-r--r--libs/midi++2/port.cc2
-rw-r--r--libs/midi++2/wscript2
7 files changed, 15 insertions, 23 deletions
diff --git a/libs/midi++2/midi++/mmc.h b/libs/midi++2/midi++/mmc.h
index 0f362678ce..01f8bf3b8a 100644
--- a/libs/midi++2/midi++/mmc.h
+++ b/libs/midi++2/midi++/mmc.h
@@ -38,7 +38,6 @@ namespace MIDI {
class Port;
class Parser;
class MachineControlCommand;
-class Manager;
/** Class to handle incoming and outgoing MIDI machine control messages */
class MachineControl
@@ -95,7 +94,9 @@ class MachineControl
cmdResume = 0x7F
};
- MachineControl (Manager *, ARDOUR::PortEngine&);
+ MachineControl ();
+
+ void set_ports (MIDI::Port* input, MIDI::Port* output);
Port* input_port() { return _input_port; }
Port* output_port() { return _output_port; }
diff --git a/libs/midi++2/midi++/parser.h b/libs/midi++2/midi++/parser.h
index f5f343e952..44897f9d8e 100644
--- a/libs/midi++2/midi++/parser.h
+++ b/libs/midi++2/midi++/parser.h
@@ -41,7 +41,7 @@ typedef PBD::Signal3<void,Parser &, byte *, size_t> Signal;
class Parser {
public:
- Parser (Port &p);
+ Parser ();
~Parser ();
/* sets the time that will be reported for any MTC or MIDI Clock
@@ -105,7 +105,6 @@ class Parser {
const char *midi_event_type_name (MIDI::eventType);
void trace (bool onoff, std::ostream *o, const std::string &prefix = "");
bool tracing() { return trace_stream != 0; }
- Port &port() { return _port; }
void set_offline (bool);
bool offline() const { return _offline; }
@@ -136,7 +135,6 @@ class Parser {
void reset_mtc_state ();
private:
- Port&_port;
/* tracing */
std::ostream *trace_stream;
diff --git a/libs/midi++2/midi++/port.h b/libs/midi++2/midi++/port.h
index 599fabaa87..6d778beab2 100644
--- a/libs/midi++2/midi++/port.h
+++ b/libs/midi++2/midi++/port.h
@@ -51,13 +51,6 @@ class Port {
virtual XMLNode& get_state () const;
virtual void set_state (const XMLNode&);
- // FIXME: make Manager a friend of port so these can be hidden?
-
- /* Only for use by MidiManager. Don't ever call this. */
- virtual void cycle_start (pframes_t) {}
- /* Only for use by MidiManager. Don't ever call this. */
- virtual void cycle_end () {}
-
/** Write a message to port.
* @param msg Raw MIDI message to send
* @param msglen Size of @a msg
diff --git a/libs/midi++2/mmc.cc b/libs/midi++2/mmc.cc
index 0a71463721..b93dc0f260 100644
--- a/libs/midi++2/mmc.cc
+++ b/libs/midi++2/mmc.cc
@@ -27,9 +27,7 @@
#include "midi++/mmc.h"
#include "midi++/port.h"
-#include "midi++/jack_midi_port.h"
#include "midi++/parser.h"
-#include "midi++/manager.h"
using namespace std;
using namespace MIDI;
@@ -197,16 +195,21 @@ static void build_mmc_cmd_map ()
mmc_cmd_map.insert (newpair);
}
-
-MachineControl::MachineControl (Manager* m, ARDOUR::PortEngine& pengine)
+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, pengine));
- _output_port = m->add_port (new JackMIDIPort ("MMC out", Port::IsOutput, pengine));
+ _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));
diff --git a/libs/midi++2/parser.cc b/libs/midi++2/parser.cc
index 8e3af64504..2f6b50899c 100644
--- a/libs/midi++2/parser.cc
+++ b/libs/midi++2/parser.cc
@@ -104,8 +104,7 @@ Parser::midi_event_type_name (eventType t)
}
}
-Parser::Parser (Port &p)
- : _port(p)
+Parser::Parser ()
{
trace_stream = 0;
trace_prefix = "";
diff --git a/libs/midi++2/port.cc b/libs/midi++2/port.cc
index 3e7896631a..1480202867 100644
--- a/libs/midi++2/port.cc
+++ b/libs/midi++2/port.cc
@@ -71,7 +71,7 @@ Port::init (string const & name, Flags flags)
_tagname = name;
_flags = flags;
- _parser = new Parser (*this);
+ _parser = new Parser ();
for (int i = 0; i < 16; i++) {
_channel[i] = new Channel (i, *this);
diff --git a/libs/midi++2/wscript b/libs/midi++2/wscript
index 8a4f2f6c69..0abbab7d40 100644
--- a/libs/midi++2/wscript
+++ b/libs/midi++2/wscript
@@ -31,8 +31,6 @@ libmidi_sources = [
'midi.cc',
'channel.cc',
'ipmidi_port.cc',
- 'jack_midi_port.cc',
- 'manager.cc',
'parser.cc',
'port.cc',
'midnam_patch.cc',