summaryrefslogtreecommitdiff
path: root/libs/ardour/midi_playlist.cc
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2019-10-17 23:15:53 -0600
committerPaul Davis <paul@linuxaudiosystems.com>2019-11-02 16:32:18 -0600
commitaddebc3240e9f2f9f76defad680e310939b1d269 (patch)
tree3384b8ff3a4206db5630b920bca98ab66a1b1466 /libs/ardour/midi_playlist.cc
parent5c0fd05c52165af11df60c5930dacd8c2573d6b5 (diff)
move ownership of an RT MIDI buffer from DiskIO to MidiPlaylist
Diffstat (limited to 'libs/ardour/midi_playlist.cc')
-rw-r--r--libs/ardour/midi_playlist.cc26
1 files changed, 16 insertions, 10 deletions
diff --git a/libs/ardour/midi_playlist.cc b/libs/ardour/midi_playlist.cc
index 5b66a0fe0d..9144742510 100644
--- a/libs/ardour/midi_playlist.cc
+++ b/libs/ardour/midi_playlist.cc
@@ -467,7 +467,7 @@ MidiPlaylist::contained_automation()
}
void
-MidiPlaylist::render (RTMidiBuffer& dst, MidiChannelFilter* filter)
+MidiPlaylist::render (MidiChannelFilter* filter)
{
typedef pair<MidiStateTracker*,samplepos_t> TrackerInfo;
@@ -488,19 +488,19 @@ MidiPlaylist::render (RTMidiBuffer& dst, MidiChannelFilter* filter)
regs.push_back (*i);
}
- /* If we are reading from a single region, we can read directly into dst. Otherwise,
- we read into a temporarily list, sort it, then write that to dst.
+ /* If we are reading from a single region, we can read directly into _rendered. Otherwise,
+ we read into a temporarily list, sort it, then write that to _rendered.
*/
Evoral::EventList<samplepos_t> evlist;
Evoral::EventSink<samplepos_t>* tgt;
/* RAII */
- RTMidiBuffer::WriteProtectRender wpr (dst);
+ RTMidiBuffer::WriteProtectRender wpr (_rendered);
if (regs.size() == 1) {
- tgt = &dst;
+ tgt = &_rendered;
wpr.acquire ();
- dst.clear ();
+ _rendered.clear ();
} else {
tgt = &evlist;
}
@@ -524,14 +524,14 @@ MidiPlaylist::render (RTMidiBuffer& dst, MidiChannelFilter* filter)
EventsSortByTimeAndType<samplepos_t> cmp;
evlist.sort (cmp);
- /* Copy ordered events from event list to dst. */
+ /* Copy ordered events from event list to _rendered. */
wpr.acquire ();
- dst.clear ();
+ _rendered.clear ();
for (Evoral::EventList<samplepos_t>::iterator e = evlist.begin(); e != evlist.end(); ++e) {
Evoral::Event<samplepos_t>* ev (*e);
- dst.write (ev->time(), ev->event_type(), ev->size(), ev->buffer());
+ _rendered.write (ev->time(), ev->event_type(), ev->size(), ev->buffer());
delete ev;
}
}
@@ -539,5 +539,11 @@ MidiPlaylist::render (RTMidiBuffer& dst, MidiChannelFilter* filter)
/* no need to release - RAII with WriteProtectRender takes care of it */
- DEBUG_TRACE (DEBUG::MidiPlaylistIO, "---- End MidiPlaylist::dump ----\n");
+ DEBUG_TRACE (DEBUG::MidiPlaylistIO, string_compose ("---- End MidiPlaylist::render, events: %1\n", _rendered.size()));
+}
+
+RTMidiBuffer*
+MidiPlaylist::rendered ()
+{
+ return &_rendered;
}