Browse Source

BLOCKS: Make MIDI port listener thread safe

tags/2021-05-28
dimitri ed 6 years ago
parent
commit
92d930a17e
1 changed files with 32 additions and 3 deletions
  1. +32
    -3
      modules/juce_blocks_basics/topology/internal/juce_BlockImplementation.cpp

+ 32
- 3
modules/juce_blocks_basics/topology/internal/juce_BlockImplementation.cpp View File

@@ -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);
}
deviceConnection->midiInput->start();
}
else
{
Block::addDataInputPortListener (listener);
}
}
if (auto midiInput = getMidiInput())
midiInput->start();
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…
Cancel
Save