diff --git a/source/Makefile.deps b/source/Makefile.deps index fda3ea1f7..ae2883762 100644 --- a/source/Makefile.deps +++ b/source/Makefile.deps @@ -35,13 +35,13 @@ CARLA_SHM_UTILS_HPP = $(CWD)/utils/CarlaShmUtils.hpp $(CARLA_UTILS_HPP) # ---------------------------------------------------------------------------------------------------------------------------- # utils (base classes) -CARLA_MUTEX_HPP = $(CWD)/utils/CarlaMutex.hpp $(CARLA_UTILS_HPP) -CARLA_RING_BUFFER_HPP = $(CWD)/utils/CarlaRingBuffer.hpp $(CARLA_UTILS_HPP) -CARLA_STRING_HPP = $(CWD)/utils/CarlaString.hpp $(CARLA_JUCE_UTILS_HPP) -CARLA_THREAD_HPP = $(CWD)/utils/CarlaThread.hpp $(CARLA_MUTEX_HPP) $(CARLA_STRING_HPP) -LINKED_LIST_HPP = $(CWD)/utils/LinkedList.hpp $(CARLA_UTILS_HPP) -LV2_ATOM_QUEUE_HPP = $(CWD)/utils/Lv2AtomQueue.hpp $(CARLA_MATH_UTILS_HPP) $(CARLA_MUTEX_HPP) $(CARLA_RING_BUFFER_HPP) -RT_LINKED_LIST_HPP = $(CWD)/utils/RtLinkedList.hpp $(LINKED_LIST_HPP) +CARLA_MUTEX_HPP = $(CWD)/utils/CarlaMutex.hpp $(CARLA_UTILS_HPP) +CARLA_RING_BUFFER_HPP = $(CWD)/utils/CarlaRingBuffer.hpp $(CARLA_UTILS_HPP) +CARLA_STRING_HPP = $(CWD)/utils/CarlaString.hpp $(CARLA_JUCE_UTILS_HPP) +CARLA_THREAD_HPP = $(CWD)/utils/CarlaThread.hpp $(CARLA_MUTEX_HPP) $(CARLA_STRING_HPP) +LINKED_LIST_HPP = $(CWD)/utils/LinkedList.hpp $(CARLA_UTILS_HPP) +LV2_ATOM_RING_BUFFER_HPP = $(CWD)/utils/Lv2AtomRingBuffer.hpp $(CARLA_MATH_UTILS_HPP) $(CARLA_MUTEX_HPP) $(CARLA_RING_BUFFER_HPP) +RT_LINKED_LIST_HPP = $(CWD)/utils/RtLinkedList.hpp $(LINKED_LIST_HPP) # ---------------------------------------------------------------------------------------------------------------------------- # utils (plugin stuff) @@ -124,7 +124,7 @@ FLUIDSYNTH_PLUGIN_CPP_DEPS = $(CARLA_PLUGIN_INTERNAL_HPP) $(CARLA_ENGINE_HPP JUCE_PLUGIN_CPP_DEPS = $(CARLA_PLUGIN_INTERNAL_HPP) $(CARLA_ENGINE_HPP) LADSPA_PLUGIN_CPP_DEPS = $(CARLA_PLUGIN_INTERNAL_HPP) $(CARLA_ENGINE_HPP) $(CARLA_LADSPA_UTILS_HPP) $(CARLA_MATH_UTILS_HPP) LINUXSAMPLER_PLUGIN_CPP_DEPS = $(CARLA_PLUGIN_INTERNAL_HPP) $(CARLA_ENGINE_HPP) $(CARLA_BACKEND_UTILS_HPP) $(CARLA_MATH_UTILS_HPP) -LV2_PLUGIN_CPP_DEPS = $(CARLA_PLUGIN_INTERNAL_HPP) $(CARLA_ENGINE_HPP) $(CARLA_LV2_UTILS_HPP) $(CARLA_MATH_UTILS_HPP) $(CARLA_PLUGIN_UI_HPP) $(LV2_ATOM_QUEUE_HPP) $(CARLA_ENGINE_OSC_HPP) +LV2_PLUGIN_CPP_DEPS = $(CARLA_PLUGIN_INTERNAL_HPP) $(CARLA_ENGINE_HPP) $(CARLA_LV2_UTILS_HPP) $(CARLA_MATH_UTILS_HPP) $(CARLA_PLUGIN_UI_HPP) $(LV2_ATOM_RING_BUFFER_HPP) $(CARLA_ENGINE_OSC_HPP) NATIVE_PLUGIN_CPP_DEPS = $(CARLA_PLUGIN_INTERNAL_HPP) $(CARLA_ENGINE_HPP) $(CARLA_MATH_UTILS_HPP) $(CARLA_NATIVE_H) REWIRE_PLUGIN_CPP_DEPS = $(CARLA_PLUGIN_INTERNAL_HPP) $(CARLA_ENGINE_HPP) $(CARLA_LIB_UTILS_HPP) $(CARLA_MATH_UTILS_HPP) VST_PLUGIN_CPP_DEPS = $(CARLA_PLUGIN_INTERNAL_HPP) $(CARLA_ENGINE_HPP) $(CARLA_VST_UTILS_HPP) $(CARLA_MATH_UTILS_HPP) $(CARLA_PLUGIN_UI_HPP) diff --git a/source/backend/engine/CarlaEngineBridge.cpp b/source/backend/engine/CarlaEngineBridge.cpp index c3b9eae8f..6db345d57 100644 --- a/source/backend/engine/CarlaEngineBridge.cpp +++ b/source/backend/engine/CarlaEngineBridge.cpp @@ -97,13 +97,13 @@ struct BridgeAudioPool { CARLA_DECLARE_NON_COPY_STRUCT(BridgeAudioPool) }; -struct BridgeControl : public RingBufferControl { +struct BridgeControl : public CarlaRingBuffer { CarlaString filename; BridgeShmControl* data; char shm[32]; BridgeControl() - : RingBufferControl(nullptr), + : CarlaRingBuffer(), data(nullptr) { carla_zeroChar(shm, 32); @@ -376,7 +376,7 @@ public: } } - for (; fShmControl.isDataAvailable();) + for (; fShmControl.isDataAvailableForReading();) { const PluginBridgeOpcode opcode(fShmControl.readOpcode()); @@ -468,7 +468,7 @@ public: uint8_t data[size]; for (int32_t i=0; i < size; ++i) - data[i] = static_cast(fShmControl.readChar()); + data[i] = fShmControl.readUByte(); CARLA_SAFE_ASSERT_BREAK(pData->events.in != nullptr); diff --git a/source/backend/plugin/BridgePlugin.cpp b/source/backend/plugin/BridgePlugin.cpp index f57dbd6e8..2eb5fc94c 100644 --- a/source/backend/plugin/BridgePlugin.cpp +++ b/source/backend/plugin/BridgePlugin.cpp @@ -73,7 +73,7 @@ static shm_t shm_mkstemp(char* const fileBase) static const char charSet[] = "abcdefghijklmnopqrstuvwxyz" "ABCDEFGHIJKLMNOPQRSTUVWXYZ" "0123456789"; - static const int charSetLen = static_cast(sizeof(charSet) - 1); // -1 to avoid trailing '\0' + static const int charSetLen = static_cast(std::strlen(charSet) - 1); // -1 to avoid trailing '\0' // try until getting a valid shm or an error occurs for (;;) @@ -146,14 +146,14 @@ struct BridgeAudioPool { CARLA_DECLARE_NON_COPY_STRUCT(BridgeAudioPool) }; -struct BridgeControl : public RingBufferControl { +struct BridgeControl : public CarlaRingBuffer { CarlaString filename; CarlaMutex lock; BridgeShmControl* data; shm_t shm; BridgeControl() - : RingBufferControl(nullptr), + : CarlaRingBuffer(), data(nullptr) { carla_shm_init(shm); @@ -860,19 +860,19 @@ public: CARLA_SAFE_ASSERT_CONTINUE(note.channel >= 0 && note.channel < MAX_MIDI_CHANNELS); - char data1, data2, data3; - data1 = static_cast((note.velo > 0 ? MIDI_STATUS_NOTE_ON : MIDI_STATUS_NOTE_OFF) | (note.channel & MIDI_CHANNEL_BIT)); - data2 = static_cast(note.note); - data3 = static_cast(note.velo); + uint8_t data1, data2, data3; + data1 = static_cast((note.velo > 0 ? MIDI_STATUS_NOTE_ON : MIDI_STATUS_NOTE_OFF) | (note.channel & MIDI_CHANNEL_BIT)); + data2 = note.note; + data3 = note.velo; const CarlaMutexLocker _cml(fShmControl.lock); fShmControl.writeOpcode(kPluginBridgeOpcodeMidiEvent); fShmControl.writeLong(0); fShmControl.writeInt(3); - fShmControl.writeChar(data1); - fShmControl.writeChar(data2); - fShmControl.writeChar(data3); + fShmControl.writeByte(data1); + fShmControl.writeByte(data2); + fShmControl.writeByte(data3); fShmControl.commitWrite(); } @@ -1007,9 +1007,9 @@ public: fShmControl.writeOpcode(kPluginBridgeOpcodeMidiEvent); fShmControl.writeLong(event.time); fShmControl.writeInt(3); - fShmControl.writeChar(static_cast(MIDI_STATUS_CONTROL_CHANGE + event.channel)); - fShmControl.writeChar(static_cast(ctrlEvent.param)); - fShmControl.writeChar(char(ctrlEvent.value*127.0f)); + fShmControl.writeByte(static_cast(MIDI_STATUS_CONTROL_CHANGE + event.channel)); + fShmControl.writeByte(static_cast(ctrlEvent.param)); + fShmControl.writeByte(static_cast(ctrlEvent.value*127.0f)); fShmControl.commitWrite(); } @@ -1090,12 +1090,6 @@ public: if (status == MIDI_STATUS_PITCH_WHEEL_CONTROL && (pData->options & PLUGIN_OPTION_SEND_PITCHBEND) == 0) continue; - char data[4]; - data[0] = static_cast(status + channel); - - for (uint8_t j=0; j < 4; ++j) - data[j] = static_cast(midiEvent.data[j]); - { const CarlaMutexLocker _cml(fShmControl.lock); @@ -1103,8 +1097,10 @@ public: fShmControl.writeLong(event.time); fShmControl.writeInt(midiEvent.size); - for (uint8_t j=0; j < midiEvent.size; ++j) - fShmControl.writeChar(data[j]); + fShmControl.writeByte(static_cast(status + channel)); + + for (uint8_t j=1; j < midiEvent.size; ++j) + fShmControl.writeByte(midiEvent.data[j]); fShmControl.commitWrite(); } diff --git a/source/backend/plugin/Lv2Plugin.cpp b/source/backend/plugin/Lv2Plugin.cpp index d6a533f2d..932bef6b6 100644 --- a/source/backend/plugin/Lv2Plugin.cpp +++ b/source/backend/plugin/Lv2Plugin.cpp @@ -25,9 +25,9 @@ #ifdef WANT_LV2 #include "CarlaLv2Utils.hpp" -#include "CarlaMathUtils.hpp" #include "CarlaPluginUi.hpp" -#include "Lv2AtomQueue.hpp" + +#include "Lv2AtomRingBuffer.hpp" #include "../engine/CarlaEngineOsc.hpp" @@ -1290,7 +1290,7 @@ public: { if (fAtomBufferOut.isDataAvailableForReading()) { - char dumpBuf[fAtomBufferOut.getSize()]; + uint8_t dumpBuf[fAtomBufferOut.getSize()]; Lv2AtomRingBuffer tmpRingBuffer(fAtomBufferOut, dumpBuf); CARLA_SAFE_ASSERT(tmpRingBuffer.isDataAvailableForReading());