diff options
author | Paul Davis <paul@linuxaudiosystems.com> | 2012-05-29 23:30:13 +0000 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2012-05-29 23:30:13 +0000 |
commit | 1491787cfb61329cf65584893f87b708519cec8b (patch) | |
tree | 17bedca33e94603ee5ff7fceccbfa76454f36a7b /libs | |
parent | 40ef762db4c830b482aa7830c30dca4f32b753c4 (diff) |
MCP: fix assigment of outbound sysex messages, and don't drain port->selectable() for ipMIDI devices, since this throws away all incoming data, which arrives on the same fd as port->selectable() (unlike JACK MIDI)
git-svn-id: svn://localhost/ardour2/branches/3.0@12483 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'libs')
-rw-r--r-- | libs/surfaces/mackie/mackie_control_protocol.cc | 12 | ||||
-rw-r--r-- | libs/surfaces/mackie/surface.cc | 4 |
2 files changed, 13 insertions, 3 deletions
diff --git a/libs/surfaces/mackie/mackie_control_protocol.cc b/libs/surfaces/mackie/mackie_control_protocol.cc index 0fd9743a7d..61225b309a 100644 --- a/libs/surfaces/mackie/mackie_control_protocol.cc +++ b/libs/surfaces/mackie/mackie_control_protocol.cc @@ -1133,7 +1133,17 @@ MackieControlProtocol::midi_input_handler (IOCondition ioc, MIDI::Port* port) if (ioc & IO_IN) { - CrossThreadChannel::drain (port->selectable()); + /* Devices using regular JACK MIDI ports will need to have + the x-thread FIFO drained to avoid burning endless CPU. + + Devices using ipMIDI have port->selectable() as the same + file descriptor that data arrives on, so doing this + for them will simply throw all incoming data away. + */ + + if (!_device_info.uses_ipmidi()) { + CrossThreadChannel::drain (port->selectable()); + } DEBUG_TRACE (DEBUG::MackieControl, string_compose ("data available on %1\n", port->name())); framepos_t now = session->engine().frame_time(); diff --git a/libs/surfaces/mackie/surface.cc b/libs/surfaces/mackie/surface.cc index 0cc0f02a77..0a5ea09e3e 100644 --- a/libs/surfaces/mackie/surface.cc +++ b/libs/surfaces/mackie/surface.cc @@ -409,9 +409,9 @@ Surface::handle_midi_sysex (MIDI::Parser &, MIDI::byte * raw_bytes, size_t count */ if (_stype == mcu) { - mackie_sysex_hdr[3] = bytes[4]; + mackie_sysex_hdr[4] = bytes[4]; } else { - mackie_sysex_hdr_xt[3] = bytes[4]; + mackie_sysex_hdr_xt[4] = bytes[4]; } switch (bytes[5]) { |