Browse Source

Adjust main code to ringbuffer changes

tags/1.9.4
falkTX 11 years ago
parent
commit
d304201fb4
4 changed files with 32 additions and 36 deletions
  1. +8
    -8
      source/Makefile.deps
  2. +4
    -4
      source/backend/engine/CarlaEngineBridge.cpp
  3. +17
    -21
      source/backend/plugin/BridgePlugin.cpp
  4. +3
    -3
      source/backend/plugin/Lv2Plugin.cpp

+ 8
- 8
source/Makefile.deps View File

@@ -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)


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

@@ -97,13 +97,13 @@ struct BridgeAudioPool {
CARLA_DECLARE_NON_COPY_STRUCT(BridgeAudioPool)
};

struct BridgeControl : public RingBufferControl<StackBuffer> {
struct BridgeControl : public CarlaRingBuffer<StackBuffer> {
CarlaString filename;
BridgeShmControl* data;
char shm[32];

BridgeControl()
: RingBufferControl<StackBuffer>(nullptr),
: CarlaRingBuffer<StackBuffer>(),
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<uint8_t>(fShmControl.readChar());
data[i] = fShmControl.readUByte();

CARLA_SAFE_ASSERT_BREAK(pData->events.in != nullptr);



+ 17
- 21
source/backend/plugin/BridgePlugin.cpp View File

@@ -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<int>(sizeof(charSet) - 1); // -1 to avoid trailing '\0'
static const int charSetLen = static_cast<int>(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<StackBuffer> {
struct BridgeControl : public CarlaRingBuffer<StackBuffer> {
CarlaString filename;
CarlaMutex lock;
BridgeShmControl* data;
shm_t shm;

BridgeControl()
: RingBufferControl<StackBuffer>(nullptr),
: CarlaRingBuffer<StackBuffer>(),
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<char>((note.velo > 0 ? MIDI_STATUS_NOTE_ON : MIDI_STATUS_NOTE_OFF) | (note.channel & MIDI_CHANNEL_BIT));
data2 = static_cast<char>(note.note);
data3 = static_cast<char>(note.velo);
uint8_t data1, data2, data3;
data1 = static_cast<uint8_t>((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<char>(MIDI_STATUS_CONTROL_CHANGE + event.channel));
fShmControl.writeChar(static_cast<char>(ctrlEvent.param));
fShmControl.writeChar(char(ctrlEvent.value*127.0f));
fShmControl.writeByte(static_cast<uint8_t>(MIDI_STATUS_CONTROL_CHANGE + event.channel));
fShmControl.writeByte(static_cast<uint8_t>(ctrlEvent.param));
fShmControl.writeByte(static_cast<uint8_t>(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<char>(status + channel);

for (uint8_t j=0; j < 4; ++j)
data[j] = static_cast<char>(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<uint8_t>(status + channel));

for (uint8_t j=1; j < midiEvent.size; ++j)
fShmControl.writeByte(midiEvent.data[j]);

fShmControl.commitWrite();
}


+ 3
- 3
source/backend/plugin/Lv2Plugin.cpp View File

@@ -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());


Loading…
Cancel
Save