diff options
Diffstat (limited to 'libs/ardour/midi_source.cc')
-rw-r--r-- | libs/ardour/midi_source.cc | 18 |
1 files changed, 15 insertions, 3 deletions
diff --git a/libs/ardour/midi_source.cc b/libs/ardour/midi_source.cc index 404ac3a73d..42b4518655 100644 --- a/libs/ardour/midi_source.cc +++ b/libs/ardour/midi_source.cc @@ -267,7 +267,13 @@ MidiSource::midi_write (MidiRingBuffer<framepos_t>& source, framepos_t source_st Glib::Mutex::Lock lm (_lock); cerr << "MidiSource calling write unlocked\n"; const framecnt_t ret = write_unlocked (source, source_start, duration); - _last_write_end += duration; + + if (duration == max_framecnt) { + _last_read_end = 0; + } else { + _last_write_end += duration; + } + cerr << name() << " last write end now @ " << _last_write_end << endl; return ret; } @@ -311,15 +317,21 @@ MidiSource::mark_streaming_write_started () } void -MidiSource::mark_streaming_write_completed () +MidiSource::mark_midi_streaming_write_completed (Evoral::Sequence<Evoral::MusicalTime>::StuckNoteOption option, Evoral::MusicalTime end) { if (_model) { - _model->end_write (false); + _model->end_write (option, end); } _writing = false; } +void +MidiSource::mark_streaming_write_completed () +{ + mark_midi_streaming_write_completed (Evoral::Sequence<Evoral::MusicalTime>::DeleteStuckNotes); +} + boost::shared_ptr<MidiSource> MidiSource::clone (Evoral::MusicalTime begin, Evoral::MusicalTime end) { |