mirror of
https://github.com/juce-framework/JUCE.git
synced 2026-01-22 01:34:21 +00:00
BLOCKS: Make MIDI port listener thread safe
This commit is contained in:
parent
eedca6109c
commit
92d930a17e
1 changed files with 32 additions and 3 deletions
|
|
@ -422,12 +422,41 @@ public:
|
|||
lastMessageReceiveTime = Time::getCurrentTime();
|
||||
}
|
||||
|
||||
MIDIDeviceConnection* getDeviceConnection()
|
||||
{
|
||||
return dynamic_cast<MIDIDeviceConnection*> (detector->getDeviceConnectionFor (*this));
|
||||
}
|
||||
|
||||
void addDataInputPortListener (DataInputPortListener* listener) override
|
||||
{
|
||||
Block::addDataInputPortListener (listener);
|
||||
if (auto deviceConnection = getDeviceConnection())
|
||||
{
|
||||
{
|
||||
ScopedLock scopedLock (deviceConnection->criticalSecton);
|
||||
Block::addDataInputPortListener (listener);
|
||||
}
|
||||
|
||||
if (auto midiInput = getMidiInput())
|
||||
midiInput->start();
|
||||
deviceConnection->midiInput->start();
|
||||
}
|
||||
else
|
||||
{
|
||||
Block::addDataInputPortListener (listener);
|
||||
}
|
||||
}
|
||||
|
||||
void removeDataInputPortListener (DataInputPortListener* listener) override
|
||||
{
|
||||
if (auto deviceConnection = getDeviceConnection())
|
||||
{
|
||||
{
|
||||
ScopedLock scopedLock (deviceConnection->criticalSecton);
|
||||
Block::removeDataInputPortListener (listener);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
Block::removeDataInputPortListener (listener);
|
||||
}
|
||||
}
|
||||
|
||||
void sendMessage (const void* message, size_t messageSize) override
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue