Browse Source

More bridge stuff

tags/1.9.4
falkTX 11 years ago
parent
commit
7f9f8347bc
3 changed files with 33 additions and 15 deletions
  1. +1
    -1
      source/backend/CarlaEngine.hpp
  2. +30
    -12
      source/backend/engine/CarlaEngineBridge.cpp
  3. +2
    -2
      source/bridges-plugin/CarlaBridgePlugin.cpp

+ 1
- 1
source/backend/CarlaEngine.hpp View File

@@ -1122,7 +1122,7 @@ public:


#ifdef BUILD_BRIDGE #ifdef BUILD_BRIDGE
// Bridge // Bridge
static CarlaEngine* newBridge(const char* const audioBaseName, const char* const controlBaseName, const char* const timeBaseName);
static CarlaEngine* newBridge(const char* const audioPoolBaseName, const char* const rtBaseName, const char* const nonRtBaseName);
#else #else
# if defined(CARLA_OS_MAC) || defined(CARLA_OS_WIN) # if defined(CARLA_OS_MAC) || defined(CARLA_OS_WIN)
// Juce // Juce


+ 30
- 12
source/backend/engine/CarlaEngineBridge.cpp View File

@@ -163,7 +163,7 @@ struct BridgeNonRtControl : public CarlaRingBuffer<BigStackBuffer> {
BridgeNonRtData* data; BridgeNonRtData* data;
char shm[32]; char shm[32];


BridgeNonRtControl()
BridgeNonRtControl() noexcept
: CarlaRingBuffer<BigStackBuffer>(), : CarlaRingBuffer<BigStackBuffer>(),
data(nullptr) data(nullptr)
{ {
@@ -171,7 +171,7 @@ struct BridgeNonRtControl : public CarlaRingBuffer<BigStackBuffer> {
jackbridge_shm_init(shm); jackbridge_shm_init(shm);
} }


~BridgeNonRtControl()
~BridgeNonRtControl() noexcept
{ {
// should be cleared by now // should be cleared by now
CARLA_SAFE_ASSERT(data == nullptr); CARLA_SAFE_ASSERT(data == nullptr);
@@ -485,8 +485,7 @@ public:
if (chunkFilePath.startsWith("/")) if (chunkFilePath.startsWith("/"))
{ {
// running under Wine, posix host // running under Wine, posix host
chunkFilePath = chunkFilePath.replaceSection(0, 1, "Z:\\");
chunkFilePath = chunkFilePath.replace("/", "\\");
chunkFilePath = chunkFilePath.replaceSection(0, 1, "Z:\\").replace("/", "\\");
} }
#endif #endif


@@ -543,27 +542,46 @@ public:
break; break;


case kPluginBridgeNonRtUiParameterChange: { case kPluginBridgeNonRtUiParameterChange: {
// TODO
const uint32_t index(fShmNonRtControl.readUInt());
const float value(fShmNonRtControl.readFloat());

if (plugin != nullptr && plugin->isEnabled())
plugin->uiParameterChange(index, value);
break; break;
} }


case kPluginBridgeNonRtUiProgramChange: { case kPluginBridgeNonRtUiProgramChange: {
// TODO
const uint32_t index(fShmNonRtControl.readUInt());

if (plugin != nullptr && plugin->isEnabled())
plugin->uiProgramChange(index);
break; break;
} }


case kPluginBridgeNonRtUiMidiProgramChange: { case kPluginBridgeNonRtUiMidiProgramChange: {
// TODO
const uint32_t index(fShmNonRtControl.readUInt());

if (plugin != nullptr && plugin->isEnabled())
plugin->uiMidiProgramChange(index);
break; break;
} }


case kPluginBridgeNonRtUiNoteOn: { case kPluginBridgeNonRtUiNoteOn: {
// TODO
const uint8_t chnl(fShmNonRtControl.readByte());
const uint8_t note(fShmNonRtControl.readByte());
const uint8_t velo(fShmNonRtControl.readByte());

if (plugin != nullptr && plugin->isEnabled())
plugin->uiNoteOn(chnl, note, velo);
break; break;
} }


case kPluginBridgeNonRtUiNoteOff: { case kPluginBridgeNonRtUiNoteOff: {
// TODO
const uint8_t chnl(fShmNonRtControl.readByte());
const uint8_t note(fShmNonRtControl.readByte());

if (plugin != nullptr && plugin->isEnabled())
plugin->uiNoteOff(chnl, note);
break; break;
} }


@@ -667,7 +685,7 @@ protected:
case kPluginBridgeRtProcess: { case kPluginBridgeRtProcess: {
CARLA_SAFE_ASSERT_BREAK(fShmAudioPool.data != nullptr); CARLA_SAFE_ASSERT_BREAK(fShmAudioPool.data != nullptr);


if (plugin != nullptr && plugin->isEnabled() && plugin->tryLock(true)) // FIXME - always lock?
if (plugin != nullptr && plugin->isEnabled() && plugin->tryLock(false))
{ {
const BridgeTimeInfo& bridgeTimeInfo(fShmRtControl.data->timeInfo); const BridgeTimeInfo& bridgeTimeInfo(fShmRtControl.data->timeInfo);


@@ -742,9 +760,9 @@ private:


// ----------------------------------------------------------------------- // -----------------------------------------------------------------------


CarlaEngine* CarlaEngine::newBridge(const char* const audioBaseName, const char* const controlBaseName, const char* const timeBaseName)
CarlaEngine* CarlaEngine::newBridge(const char* const audioPoolBaseName, const char* const rtBaseName, const char* const nonRtBaseName)
{ {
return new CarlaEngineBridge(audioBaseName, controlBaseName, timeBaseName);
return new CarlaEngineBridge(audioPoolBaseName, rtBaseName, nonRtBaseName);
} }


CARLA_BACKEND_END_NAMESPACE CARLA_BACKEND_END_NAMESPACE


+ 2
- 2
source/bridges-plugin/CarlaBridgePlugin.cpp View File

@@ -130,7 +130,7 @@ public:


void initialise(const String&) override void initialise(const String&) override
{ {
startTimer(30);
startTimer(15);
} }


void shutdown() override void shutdown() override
@@ -297,7 +297,7 @@ public:
for (; ! gCloseNow;) for (; ! gCloseNow;)
{ {
gIdle(); gIdle();
carla_msleep(25);
carla_msleep(15);
} }
#endif #endif




Loading…
Cancel
Save