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
This commit is contained in:
@@ -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();
|
||||
|
||||
@@ -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]) {
|
||||
|
||||
Reference in New Issue
Block a user