summaryrefslogtreecommitdiff
path: root/libs/ardour/midi_source.cc
diff options
context:
space:
mode:
Diffstat (limited to 'libs/ardour/midi_source.cc')
-rw-r--r--libs/ardour/midi_source.cc8
1 files changed, 7 insertions, 1 deletions
diff --git a/libs/ardour/midi_source.cc b/libs/ardour/midi_source.cc
index b539d5b9d3..06437852c6 100644
--- a/libs/ardour/midi_source.cc
+++ b/libs/ardour/midi_source.cc
@@ -103,6 +103,12 @@ MidiSource::set_state (const XMLNode& node)
return 0;
}
+void
+MidiSource::invalidate ()
+{
+ _model_iter.invalidate();
+}
+
nframes_t
MidiSource::midi_read (MidiRingBuffer<nframes_t>& dst, nframes_t start, nframes_t cnt,
nframes_t stamp_offset, nframes_t negative_stamp_offset) const
@@ -114,7 +120,7 @@ MidiSource::midi_read (MidiRingBuffer<nframes_t>& dst, nframes_t start, nframes_
Evoral::Sequence<double>::const_iterator& i = _model_iter;
- if (_last_read_end == 0 || start != _last_read_end) {
+ if (_last_read_end == 0 || start != _last_read_end || !i.valid()) {
cerr << "MidiSource::midi_read seeking to frame " << start << endl;
for (i = _model->begin(); i != _model->end(); ++i) {
if (BEATS_TO_FRAMES(i->time()) >= start) {