From 9dc6e687c146ee9b7889b7fb4ccac7e7ab77c90c Mon Sep 17 00:00:00 2001 From: reuk Date: Mon, 1 Jun 2020 10:25:13 +0100 Subject: [PATCH] MIDI: Allow MidiMessageCollector to preallocate storage --- .../midi_io/juce_MidiMessageCollector.cpp | 5 +++++ .../midi_io/juce_MidiMessageCollector.h | 8 ++++++++ 2 files changed, 13 insertions(+) diff --git a/modules/juce_audio_devices/midi_io/juce_MidiMessageCollector.cpp b/modules/juce_audio_devices/midi_io/juce_MidiMessageCollector.cpp index e86be890d5..5e837f5bae 100644 --- a/modules/juce_audio_devices/midi_io/juce_MidiMessageCollector.cpp +++ b/modules/juce_audio_devices/midi_io/juce_MidiMessageCollector.cpp @@ -128,6 +128,11 @@ void MidiMessageCollector::removeNextBlockOfMessages (MidiBuffer& destBuffer, } } +void MidiMessageCollector::ensureStorageAllocated (size_t bytes) +{ + incomingMessages.ensureSize (bytes); +} + //============================================================================== void MidiMessageCollector::handleNoteOn (MidiKeyboardState*, int midiChannel, int midiNoteNumber, float velocity) { diff --git a/modules/juce_audio_devices/midi_io/juce_MidiMessageCollector.h b/modules/juce_audio_devices/midi_io/juce_MidiMessageCollector.h index d7e4df5a2a..953a42d38c 100644 --- a/modules/juce_audio_devices/midi_io/juce_MidiMessageCollector.h +++ b/modules/juce_audio_devices/midi_io/juce_MidiMessageCollector.h @@ -80,6 +80,14 @@ public: */ void removeNextBlockOfMessages (MidiBuffer& destBuffer, int numSamples); + /** Preallocates storage for collected messages. + + This can be called before audio processing begins to ensure that there + is sufficient space for the expected MIDI messages, in order to avoid + allocations within the audio callback. + */ + void ensureStorageAllocated (size_t bytes); + //============================================================================== /** @internal */