diff options
Diffstat (limited to 'libs/midi++2/coremidi_midiport.cc')
-rw-r--r-- | libs/midi++2/coremidi_midiport.cc | 31 |
1 files changed, 19 insertions, 12 deletions
diff --git a/libs/midi++2/coremidi_midiport.cc b/libs/midi++2/coremidi_midiport.cc index e950da2949..4349ea45f4 100644 --- a/libs/midi++2/coremidi_midiport.cc +++ b/libs/midi++2/coremidi_midiport.cc @@ -122,22 +122,29 @@ void CoreMidi_MidiPort::read_proc (const MIDIPacketList *pktlist, void *refCon, if (driver->firstrecv) { driver->firstrecv = false; - PBD::notify_gui_about_thread_creation (pthread_self(), "COREMIDI"); + PBD::notify_gui_about_thread_creation ("gui", pthread_self(), "COREMIDI", 256); } for (unsigned int i = 0; i < pktlist->numPackets; ++i) { - - driver->bytes_read += packet->length; - + + driver->bytes_read += packet->length; + if (driver->input_parser) { - driver->input_parser->raw_preparse (*driver->input_parser, packet->data, packet->length); - for (int i = 0; i < packet->length; i++) { - driver->input_parser->scanner (packet->data[i]); - } - driver->input_parser->raw_postparse (*driver->input_parser, packet->data, packet->length); - } - - packet = MIDIPacketNext(packet); + //driver->input_parser->raw_preparse (*driver->input_parser, packet->data, packet->length); + + /* XXX This is technically the wrong timebase, since it is based on + host time. + */ + driver->input_parser->set_timestamp (packet->timestamp); + + for (int i = 0; i < packet->length; i++) { + driver->input_parser->scanner (packet->data[i]); + } + + //driver->input_parser->raw_postparse (*driver->input_parser, packet->data, packet->length); + } + + packet = MIDIPacketNext(packet); } } |