1
0
Fork 0
mirror of https://github.com/juce-framework/JUCE.git synced 2026-01-27 02:20:05 +00:00

Fixed a potential data race in the MIDI devices unit tests

This commit is contained in:
ed 2019-03-27 15:53:51 +00:00
parent f617bea5fa
commit 7b56f43ded

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.messageReceived.getChannel() == testMessage.getChannel());
expect (handler.messageReceived.getNoteNumber() == testMessage.getNoteNumber());
expect (handler.messageReceived.getVelocity() == testMessage.getVelocity());
expect (handler.messageSource == midiInput.get());
expect (handler.messageReceived.getChannel() == testMessage.getChannel());
expect (handler.messageReceived.getNoteNumber() == testMessage.getNoteNumber());
expect (handler.messageReceived.getVelocity() == testMessage.getVelocity());
}
midiInput->stop();
}