From b622bc18fc21de974f08a663996077ac91c98ccb Mon Sep 17 00:00:00 2001 From: Robin Gareus Date: Thu, 12 Mar 2015 16:09:55 +0100 Subject: amend 7bb9d04, fix midi looping --- libs/ardour/midi_diskstream.cc | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'libs/ardour/midi_diskstream.cc') 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); } -- cgit v1.2.3