summaryrefslogtreecommitdiff
path: root/libs/ardour/midi_region.cc
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2009-09-16 01:08:51 +0000
committerPaul Davis <paul@linuxaudiosystems.com>2009-09-16 01:08:51 +0000
commitfa4e858eb351668bc6687819903d019703daef7a (patch)
tree1068e35899ec48cdd8ef514510fec56092466673 /libs/ardour/midi_region.cc
parent127b8a62b790c7515a27934b920e88b7de04b7fc (diff)
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
Diffstat (limited to 'libs/ardour/midi_region.cc')
-rw-r--r--libs/ardour/midi_region.cc13
1 files changed, 11 insertions, 2 deletions
diff --git a/libs/ardour/midi_region.cc b/libs/ardour/midi_region.cc
index 910789c7fb..aca8d039ad 100644
--- a/libs/ardour/midi_region.cc
+++ b/libs/ardour/midi_region.cc
@@ -147,7 +147,7 @@ MidiRegion::_read_at (const SourceList& /*srcs*/, MidiRingBuffer<nframes_t>& dst
nframes_t internal_offset = 0;
nframes_t src_offset = 0;
nframes_t to_read = 0;
-
+
/* precondition: caller has verified that we cover the desired section */
assert(chan_n == 0);
@@ -191,7 +191,16 @@ MidiRegion::_read_at (const SourceList& /*srcs*/, MidiRingBuffer<nframes_t>& dst
// _start from the note times in the midi source
negative_output_buffer_position = _start;
}
-
+
+#if 0
+ cerr << "\t\tsource read from " << _position << " - " << _start << " (" << _position - _start << ") "
+ << " start in source " << _start << " + " << internal_offset << " (" << _start + internal_offset << ") "
+ << " dur = " << to_read
+ << " offset = " << output_buffer_position
+ << " negoffset = " << negative_output_buffer_position
+ << endl;
+#endif
+
if (src->midi_read (
dst, // destination buffer
_position - _start, // start position of the source in this read context