Browse Source

Fix MIDI out on plugin bridges, due to previous optimization

tags/1.9.8
falkTX 8 years ago
parent
commit
3dd9ecb306
4 changed files with 13 additions and 4 deletions
  1. +4
    -0
      source/backend/engine/CarlaEngineBridge.cpp
  2. +2
    -2
      source/backend/plugin/CarlaPluginBridge.cpp
  3. +2
    -2
      source/backend/plugin/CarlaPluginJack.cpp
  4. +5
    -0
      source/libjack/libjack.cpp

+ 4
- 0
source/backend/engine/CarlaEngineBridge.cpp View File

@@ -1256,6 +1256,10 @@ protected:
}
}

if (curMidiDataPos != 0 &&
curMidiDataPos + kBridgeBaseMidiOutHeaderSize < kBridgeRtClientDataMidiOutSize)
carla_zeroBytes(midiData, kBridgeBaseMidiOutHeaderSize);

carla_zeroStructs(pData->events.out, kMaxEngineEventInternalCount);
}



+ 2
- 2
source/backend/plugin/CarlaPluginBridge.cpp View File

@@ -1284,7 +1284,7 @@ public:
uint8_t port, size;
const uint8_t* midiData(fShmRtClientControl.data->midiOut);

for (std::size_t read=0; read<kBridgeRtClientDataMidiOutSize;)
for (std::size_t read=0; read<kBridgeRtClientDataMidiOutSize-kBridgeBaseMidiOutHeaderSize;)
{
// get time
time = *(const uint32_t*)midiData;
@@ -1305,7 +1305,7 @@ public:

pData->event.portOut->writeMidiEvent(time, size, data);

read += 6U /* time, port and size */ + size;
read += kBridgeBaseMidiOutHeaderSize + size;
}

} // End of Control and MIDI Output


+ 2
- 2
source/backend/plugin/CarlaPluginJack.cpp View File

@@ -847,7 +847,7 @@ public:
uint8_t port, size;
const uint8_t* midiData(fShmRtClientControl.data->midiOut);

for (std::size_t read=0; read<kBridgeRtClientDataMidiOutSize;)
for (std::size_t read=0; read<kBridgeRtClientDataMidiOutSize-kBridgeBaseMidiOutHeaderSize;)
{
// get time
time = *(const uint32_t*)midiData;
@@ -868,7 +868,7 @@ public:

pData->event.portOut->writeMidiEvent(time, size, data);

read += 6U /* time, port and size */ + size;
read += kBridgeBaseMidiOutHeaderSize + size;
}

} // End of Control and MIDI Output


+ 5
- 0
source/libjack/libjack.cpp View File

@@ -805,6 +805,11 @@ bool CarlaJackAppClient::handleRtData()
curMidiDataPos += kBridgeBaseMidiOutHeaderSize + jmevent.size;
}
}

if (curMidiDataPos != 0 &&
curMidiDataPos + kBridgeBaseMidiOutHeaderSize < kBridgeRtClientDataMidiOutSize)
carla_zeroBytes(midiData, kBridgeBaseMidiOutHeaderSize);

}
}
else


Loading…
Cancel
Save