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