From fa4e858eb351668bc6687819903d019703daef7a Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Wed, 16 Sep 2009 01:08:51 +0000 Subject: 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 --- libs/ardour/midi_source.cc | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) (limited to 'libs/ardour/midi_source.cc') diff --git a/libs/ardour/midi_source.cc b/libs/ardour/midi_source.cc index f16ebf186f..4da2dbb845 100644 --- a/libs/ardour/midi_source.cc +++ b/libs/ardour/midi_source.cc @@ -137,16 +137,15 @@ MidiSource::midi_read (MidiRingBuffer& dst, sframes_t source_start, #define BEATS_TO_FRAMES(t) (converter.to(t) + stamp_offset - negative_stamp_offset) Evoral::Sequence::const_iterator& i = _model_iter; - - if (_last_read_end == 0 || start != _last_read_end) { // || !i.valid()) { - //cerr << "MidiSource seeking to " << start << " from " << _last_read_end << endl; + + if (_last_read_end == 0 || start != _last_read_end || !i.valid()) { for (i = _model->begin(); i != _model->end(); ++i) { if (BEATS_TO_FRAMES(i->time()) >= start) { break; } } } - + _last_read_end = start + cnt; for (; i != _model->end(); ++i) { @@ -234,7 +233,7 @@ MidiSource::session_saved() stringstream ss(basename.substr(last_dash+1)); unsigned write_count = 0; ss >> write_count; - cerr << "WRITE COUNT: " << write_count << endl; + // cerr << "WRITE COUNT: " << write_count << endl; ++write_count; // start at 1 ss.clear(); ss << basename.substr(0, last_dash) << "-" << write_count; -- cgit v1.2.3