do not allow smf_source's reads to stomp on cached read_end position in parent class, which creates chaos by being out of sync with MidiSource::_model_iterator. this doesn't totally fix MIDI playback, but it helps

git-svn-id: svn://localhost/ardour2/branches/3.0@5665 d708f5d6-7413-0410-9779-e7cbd77b26cf
This commit is contained in:
Paul Davis 2009-09-16 01:08:51 +00:00
parent 127b8a62b7
commit fa4e858eb3
12 changed files with 121 additions and 39 deletions

View file

@ -33,7 +33,7 @@
#include "evoral/TypeMap.hpp"
#include "evoral/midi_util.h"
//#define DEBUG_SEQUENCE 1
// #define DEBUG_SEQUENCE 1
#ifdef DEBUG_SEQUENCE
#include <boost/format.hpp>
using boost::format;
@ -209,10 +209,10 @@ Sequence<Time>::const_iterator::const_iterator(const Sequence<Time>& seq, Time t
_locked = false;
_seq->read_unlock();
} else {
DUMP(format("New iterator = %1% : %2% @ %3%\n")
% (int)_event->event_type()
% (int)((MIDIEvent<Time>*)_event.get())->type()
% _event->time());
DUMP(printf("New iterator = 0x%x : 0x%x @ %f\n",
(int)_event->event_type(),
(int)((MIDIEvent<Time>*)_event.get())->type(),
_event->time()));
assert(midi_event_is_valid(_event->buffer(), _event->size()));
}
}