Browse Source

Fixed a potential data race in the MIDI devices unit tests

tags/2021-05-28
ed 6 years ago
parent
commit
7b56f43ded
1 changed files with 11 additions and 4 deletions
  1. +11
    -4
      modules/juce_audio_devices/midi_io/juce_MidiDevices.cpp

+ 11
- 4
modules/juce_audio_devices/midi_io/juce_MidiDevices.cpp View File

@@ -195,12 +195,15 @@ void MidiOutput::run()
{
void handleIncomingMidiMessage (MidiInput* source, const MidiMessage& message) override
{
const ScopedLock sl (messageLock);
messageSource = source;
messageReceived = message;
}
MidiInput* messageSource = nullptr;
MidiMessage messageReceived;
CriticalSection messageLock;
};
MessageCallbackHandler handler;
@@ -245,11 +248,15 @@ void MidiOutput::run()
// Pump the message thread for a bit to allow the message to be delivered
MessageManager::getInstance()->runDispatchLoopUntil (100);
expect (handler.messageSource == midiInput.get());
{
const ScopedLock sl (handler.messageLock);
expect (handler.messageSource == midiInput.get());
expect (handler.messageReceived.getChannel() == testMessage.getChannel());
expect (handler.messageReceived.getNoteNumber() == testMessage.getNoteNumber());
expect (handler.messageReceived.getVelocity() == testMessage.getVelocity());
expect (handler.messageReceived.getChannel() == testMessage.getChannel());
expect (handler.messageReceived.getNoteNumber() == testMessage.getNoteNumber());
expect (handler.messageReceived.getVelocity() == testMessage.getVelocity());
}
midiInput->stop();
}


Loading…
Cancel
Save