summaryrefslogtreecommitdiff
path: root/libs/ardour/midi_track.cc
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2009-02-16 00:53:26 +0000
committerDavid Robillard <d@drobilla.net>2009-02-16 00:53:26 +0000
commitfd1a3cfa4cd302a0ce0dbe97810dadb69f323ce6 (patch)
treeadee113bb75bd025dfa9a4d0acc2bf1927084578 /libs/ardour/midi_track.cc
parent85ab34179583db06899105586e7ac2d264b437fb (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.cc8
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);
}