From e79d8b00f98700194df786288792362268a8bea7 Mon Sep 17 00:00:00 2001 From: Robin Gareus Date: Sun, 14 May 2023 17:50:26 +0200 Subject: [PATCH] Speed up playlist rendering of non-overlapping MIDI Regions --- libs/ardour/midi_playlist.cc | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/libs/ardour/midi_playlist.cc b/libs/ardour/midi_playlist.cc index fc0e3ae7cc..79dbe195e9 100644 --- a/libs/ardour/midi_playlist.cc +++ b/libs/ardour/midi_playlist.cc @@ -335,6 +335,9 @@ MidiPlaylist::render (MidiChannelFilter* filter) regs.sort (cmp); bool all_transparent = true; + bool no_layers = true; + + layer_t layer = regs.front()->layer (); /* skip bottom-most region, transparency is irrelevant */ for (auto i = ++regs.begin(); i != regs.end(); ++i) { @@ -342,11 +345,14 @@ MidiPlaylist::render (MidiChannelFilter* filter) all_transparent = false; break; } + if ((*i)->layer () != layer) { + no_layers = false; + } } Evoral::EventList evlist; - if (all_transparent) { + if (all_transparent || no_layers) { DEBUG_TRACE (DEBUG::MidiPlaylistIO, string_compose ("\t%1 regions to read\n", regs.size()));