Speed up playlist rendering of non-overlapping MIDI Regions
This commit is contained in:
parent
bcafa3d6aa
commit
e79d8b00f9
@ -335,6 +335,9 @@ MidiPlaylist::render (MidiChannelFilter* filter)
|
|||||||
regs.sort (cmp);
|
regs.sort (cmp);
|
||||||
|
|
||||||
bool all_transparent = true;
|
bool all_transparent = true;
|
||||||
|
bool no_layers = true;
|
||||||
|
|
||||||
|
layer_t layer = regs.front()->layer ();
|
||||||
|
|
||||||
/* skip bottom-most region, transparency is irrelevant */
|
/* skip bottom-most region, transparency is irrelevant */
|
||||||
for (auto i = ++regs.begin(); i != regs.end(); ++i) {
|
for (auto i = ++regs.begin(); i != regs.end(); ++i) {
|
||||||
@ -342,11 +345,14 @@ MidiPlaylist::render (MidiChannelFilter* filter)
|
|||||||
all_transparent = false;
|
all_transparent = false;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
if ((*i)->layer () != layer) {
|
||||||
|
no_layers = false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Evoral::EventList<samplepos_t> evlist;
|
Evoral::EventList<samplepos_t> evlist;
|
||||||
|
|
||||||
if (all_transparent) {
|
if (all_transparent || no_layers) {
|
||||||
|
|
||||||
DEBUG_TRACE (DEBUG::MidiPlaylistIO, string_compose ("\t%1 regions to read\n", regs.size()));
|
DEBUG_TRACE (DEBUG::MidiPlaylistIO, string_compose ("\t%1 regions to read\n", regs.size()));
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user