diff options
author | David Robillard <d@drobilla.net> | 2009-02-16 00:53:26 +0000 |
---|---|---|
committer | David Robillard <d@drobilla.net> | 2009-02-16 00:53:26 +0000 |
commit | fd1a3cfa4cd302a0ce0dbe97810dadb69f323ce6 (patch) | |
tree | adee113bb75bd025dfa9a4d0acc2bf1927084578 /libs/ardour/midi_track.cc | |
parent | 85ab34179583db06899105586e7ac2d264b437fb (diff) |
Gracefully ignore illegal MIDI events at the buffer level (i.e. from Jack).
Ardour should now be able to more or less tolerate crazy incoming MIDI (except for SYSEX).
git-svn-id: svn://localhost/ardour2/branches/3.0@4592 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'libs/ardour/midi_track.cc')
-rw-r--r-- | libs/ardour/midi_track.cc | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/libs/ardour/midi_track.cc b/libs/ardour/midi_track.cc index 946ac3440b..aff7ed4d15 100644 --- a/libs/ardour/midi_track.cc +++ b/libs/ardour/midi_track.cc @@ -23,6 +23,7 @@ #include <pbd/enumwriter.h> #include <midi++/events.h> +#include <evoral/midi_util.h> #include <ardour/midi_track.h> #include <ardour/midi_diskstream.h> @@ -662,11 +663,10 @@ MidiTrack::midi_panic() bool MidiTrack::write_immediate_event(size_t size, const uint8_t* buf) { - /*printf("Write immediate event: "); - for (size_t i=0; i < size; ++i) { - printf("%X ", buf[i]); + if (!Evoral::midi_event_is_valid(buf, size)) { + cerr << "WARNING: Ignoring illegal immediate MIDI event" << endl; + return false; } - printf("\n");*/ const uint32_t type = EventTypeMap::instance().midi_event_type(buf[0]); return (_immediate_events.write(0, type, size, buf) == size); } |