| @@ -674,7 +674,6 @@ bool CarlaEngine::addPlugin(const BinaryType btype, const PluginType ptype, | |||
| #endif | |||
| EnginePluginData& pluginData(pData->plugins[id]); | |||
| carla_stdout("stored plugin ptr %p", plugin); | |||
| pluginData.plugin = plugin; | |||
| pluginData.insPeak[0] = 0.0f; | |||
| pluginData.insPeak[1] = 0.0f; | |||
| @@ -1208,45 +1208,51 @@ protected: | |||
| event.ctrl.convertToMidiData(event.channel, size, data); | |||
| CARLA_SAFE_ASSERT_CONTINUE(size > 0 && size <= 3); | |||
| if (curMidiDataPos + 1U /* size*/ + 4U /* time */ + size >= kBridgeRtClientDataMidiOutSize) | |||
| if (curMidiDataPos + 6U /* time, port and size */ + size >= kBridgeRtClientDataMidiOutSize) | |||
| break; | |||
| // set size | |||
| *midiData++ = size; | |||
| // set time | |||
| *(uint32_t*)midiData = event.time; | |||
| midiData = midiData + 4; | |||
| // set port | |||
| *midiData++ = 0; | |||
| // set size | |||
| *midiData++ = size; | |||
| // set data | |||
| for (uint8_t j=0; j<size; ++j) | |||
| *midiData++ = data[j]; | |||
| curMidiDataPos += 1U /* size*/ + 4U /* time */ + size; | |||
| curMidiDataPos += 6U /* time, port and size */ + size; | |||
| } | |||
| else if (event.type == kEngineEventTypeMidi) | |||
| { | |||
| const EngineMidiEvent& _midiEvent(event.midi); | |||
| if (curMidiDataPos + 1 /* size*/ + 4 /* time */ + _midiEvent.size >= kBridgeRtClientDataMidiOutSize) | |||
| if (curMidiDataPos + 6U /* time, port and size */ + _midiEvent.size >= kBridgeRtClientDataMidiOutSize) | |||
| break; | |||
| const uint8_t* const _midiData(_midiEvent.dataExt != nullptr ? _midiEvent.dataExt : _midiEvent.data); | |||
| // set size | |||
| *midiData++ = _midiEvent.size; | |||
| // set time | |||
| *(uint32_t*)midiData = event.time; | |||
| midiData += 4; | |||
| // set port | |||
| *midiData++ = _midiEvent.port; | |||
| // set size | |||
| *midiData++ = _midiEvent.size; | |||
| // set data | |||
| *midiData++ = uint8_t(_midiData[0] | (event.channel & MIDI_CHANNEL_BIT)); | |||
| for (uint8_t j=1; j<_midiEvent.size; ++j) | |||
| *midiData++ = _midiData[j]; | |||
| curMidiDataPos += 1U /* size*/ + 4U /* time */ + _midiEvent.size; | |||
| curMidiDataPos += 6U /* time, port and size */ + _midiEvent.size; | |||
| } | |||
| } | |||
| @@ -1239,26 +1239,23 @@ public: | |||
| } | |||
| } | |||
| uint8_t size; | |||
| uint32_t time; | |||
| uint8_t port, size; | |||
| const uint8_t* midiData(fShmRtClientControl.data->midiOut); | |||
| for (std::size_t read=0; read<kBridgeRtClientDataMidiOutSize;) | |||
| { | |||
| size = *midiData; | |||
| // get time | |||
| time = *(const uint32_t*)midiData; | |||
| midiData += 4; | |||
| // get port and size | |||
| port = *midiData++; | |||
| size = *midiData++; | |||
| if (size == 0) | |||
| break; | |||
| // advance 8 bits (1 byte) | |||
| midiData = midiData + 1; | |||
| // get time as 32bit | |||
| time = *(const uint32_t*)midiData; | |||
| // advance 32 bits (4 bytes) | |||
| midiData = midiData + 4; | |||
| // store midi data advancing as needed | |||
| uint8_t data[size]; | |||
| @@ -1267,7 +1264,7 @@ public: | |||
| pData->event.portOut->writeMidiEvent(time, size, data); | |||
| read += 1U /* size*/ + 4U /* time */ + size; | |||
| read += 6U /* time, port and size */ + size; | |||
| } | |||
| } // End of Control and MIDI Output | |||
| @@ -835,26 +835,23 @@ public: | |||
| if (pData->event.portOut != nullptr) | |||
| { | |||
| uint8_t size; | |||
| uint32_t time; | |||
| uint8_t port, size; | |||
| const uint8_t* midiData(fShmRtClientControl.data->midiOut); | |||
| for (std::size_t read=0; read<kBridgeRtClientDataMidiOutSize;) | |||
| { | |||
| size = *midiData; | |||
| // get time | |||
| time = *(const uint32_t*)midiData; | |||
| midiData += 4; | |||
| // get port and size | |||
| port = *midiData++; | |||
| size = *midiData++; | |||
| if (size == 0) | |||
| break; | |||
| // advance 8 bits (1 byte) | |||
| midiData = midiData + 1; | |||
| // get time as 32bit | |||
| time = *(const uint32_t*)midiData; | |||
| // advance 32 bits (4 bytes) | |||
| midiData = midiData + 4; | |||
| // store midi data advancing as needed | |||
| uint8_t data[size]; | |||
| @@ -863,7 +860,7 @@ public: | |||
| pData->event.portOut->writeMidiEvent(time, size, data); | |||
| read += 1U /* size*/ + 4U /* time */ + size; | |||
| read += 6U /* time, port and size */ + size; | |||
| } | |||
| } // End of Control and MIDI Output | |||
| @@ -711,21 +711,24 @@ bool CarlaJackAppClient::handleRtData() | |||
| { | |||
| jack_midi_event_t& jmevent(midiPortBuf.events[j]); | |||
| if (curMidiDataPos + 1U /* size*/ + 4U /* time */ + jmevent.size >= kBridgeRtClientDataMidiOutSize) | |||
| if (curMidiDataPos + 6U /* time, port and size */ + jmevent.size >= kBridgeRtClientDataMidiOutSize) | |||
| break; | |||
| // set size | |||
| *midiData++ = static_cast<uint8_t>(jmevent.size); | |||
| // set time | |||
| *(uint32_t*)midiData = jmevent.time; | |||
| midiData += 4; | |||
| // set port | |||
| *midiData++ = i; | |||
| // set size | |||
| *midiData++ = static_cast<uint8_t>(jmevent.size); | |||
| // set data | |||
| std::memcpy(midiData, jmevent.buffer, jmevent.size); | |||
| midiData += jmevent.size; | |||
| curMidiDataPos += 1U /* size*/ + 4U /* time */ + jmevent.size; | |||
| curMidiDataPos += 6U /* time, port and size */ + jmevent.size; | |||
| } | |||
| } | |||
| } | |||
| @@ -1087,7 +1090,10 @@ int jack_client_real_time_priority(jack_client_t* client) | |||
| { | |||
| carla_stdout("%s(%p)", __FUNCTION__, client); | |||
| return -1; | |||
| // code as used by juce | |||
| const int minPriority = sched_get_priority_min(SCHED_RR); | |||
| const int maxPriority = sched_get_priority_max(SCHED_RR); | |||
| return ((maxPriority - minPriority) * 9) / 10 + minPriority; | |||
| } | |||
| typedef void (*JackSessionCallback)(jack_session_event_t*, void*); | |||