amend 7bb9d04, fix midi looping
authorRobin Gareus <robin@gareus.org>
Thu, 12 Mar 2015 15:09:55 +0000 (16:09 +0100)
committerRobin Gareus <robin@gareus.org>
Thu, 12 Mar 2015 15:18:06 +0000 (16:18 +0100)
libs/ardour/midi_diskstream.cc

index cd7e530a4294d05a82d4954fa9c2d4c042eb8508..9795d57b5c65d96b7a1dc8cea0e5d11fa6c229f1 100644 (file)
@@ -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);
        }