| @@ -422,12 +422,41 @@ public: | |||||
| lastMessageReceiveTime = Time::getCurrentTime(); | lastMessageReceiveTime = Time::getCurrentTime(); | ||||
| } | } | ||||
| MIDIDeviceConnection* getDeviceConnection() | |||||
| { | |||||
| return dynamic_cast<MIDIDeviceConnection*> (detector->getDeviceConnectionFor (*this)); | |||||
| } | |||||
| void addDataInputPortListener (DataInputPortListener* listener) override | 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 | void sendMessage (const void* message, size_t messageSize) override | ||||