summaryrefslogtreecommitdiff
path: root/libs/ardour/midi_diskstream.cc
diff options
context:
space:
mode:
authorRobin Gareus <robin@gareus.org>2015-03-12 16:09:55 +0100
committerRobin Gareus <robin@gareus.org>2015-03-12 16:18:06 +0100
commitb622bc18fc21de974f08a663996077ac91c98ccb (patch)
tree79eddfc7e1431d776501727d79e373af21fb4952 /libs/ardour/midi_diskstream.cc
parent37a9ef0501143f086370c1c35ed915c3dd9b7fa6 (diff)
amend 7bb9d04, fix midi looping
Diffstat (limited to 'libs/ardour/midi_diskstream.cc')
-rw-r--r--libs/ardour/midi_diskstream.cc5
1 files changed, 3 insertions, 2 deletions
diff --git a/libs/ardour/midi_diskstream.cc b/libs/ardour/midi_diskstream.cc
index cd7e530a42..9795d57b5c 100644
--- a/libs/ardour/midi_diskstream.cc
+++ b/libs/ardour/midi_diskstream.cc
@@ -1440,8 +1440,6 @@ MidiDiskstream::get_playback (MidiBuffer& dst, framecnt_t nframes)
size_t events_read = 0;
- _playback_buf->skip_to (playback_sample);
-
if (loc) {
framepos_t effective_start;
@@ -1461,6 +1459,8 @@ MidiDiskstream::get_playback (MidiBuffer& dst, framecnt_t nframes)
_playback_buf->resolve_tracker (dst, 0);
}
+ _playback_buf->skip_to (effective_start);
+
if (loc->end() >= effective_start && loc->end() < effective_start + nframes) {
/* end of loop is within the range we are reading, so
split the read in two, and lie about the location
@@ -1492,6 +1492,7 @@ MidiDiskstream::get_playback (MidiBuffer& dst, framecnt_t nframes)
events_read = _playback_buf->read (dst, effective_start, effective_start + nframes);
}
} else {
+ _playback_buf->skip_to (playback_sample);
events_read = _playback_buf->read (dst, playback_sample, playback_sample + nframes);
}