* fixed (my) bugs in MidiRingBuffer: aborted reading on corrupted events and event does not match channel mask
git-svn-id: svn://localhost/ardour2/branches/3.0@3333
d708f5d6-7413-0410-9779-
e7cbd77b26cf
if(is_channel_event(first_event_byte) && (g_atomic_int_get(&_force_channel) < 0)) {
Byte channel_nr = first_event_byte & 0x0F;
if( !(g_atomic_int_get(&_channel_mask) & (1L << channel_nr)) ) {
- return 0;
+ continue;
}
}
if(!ev.buffer()) {
std::cerr << "MidiRingBuffer::read WARNING: Skipping MIDI Event with NULL buffer pointer "
<< " and length " << int(ev.size()) << std::endl;
- return 0;
+ continue;
}
Byte* write_loc = dst.reserve(ev.time(), ev.size());
dst.write(_read_iter->time() + stamp_offset - negative_stamp_offset,
_read_iter->size(), _read_iter->buffer());
-
- cerr << this << " MidiModel::read event @ " << _read_iter->time()
- << " type: " << hex << int(_read_iter->type()) << dec
+ //cerr << this << " MidiModel::read event @ " << _read_iter->time()
+ //<< " type: " << hex << int(_read_iter->type()) << dec
//<< " note: " << int(_read_iter->note())
//<< " velocity: " << int(_read_iter->velocity())
- << endl;
+ //<< endl;
-
++_read_iter;
++read_events;
}