Browse Source

More of the same, bridges now run but without any info

tags/1.9.6
falkTX 10 years ago
parent
commit
1d74a7dca2
6 changed files with 181 additions and 117 deletions
  1. +162
    -45
      source/backend/engine/CarlaEngineBridge.cpp
  2. +11
    -17
      source/backend/plugin/CarlaPluginBridge.cpp
  3. +0
    -1
      source/backend/plugin/CarlaPluginInternal.hpp
  4. +0
    -1
      source/backend/plugin/Makefile
  5. +8
    -51
      source/bridges-plugin/CarlaBridgePlugin.cpp
  6. +0
    -2
      source/bridges-plugin/Makefile

+ 162
- 45
source/backend/engine/CarlaEngineBridge.cpp View File

@@ -121,13 +121,11 @@ struct BridgeRtClientControl : public CarlaRingBufferControl<SmallStackBuffer> {
{ {
filename.clear(); filename.clear();


if (data != nullptr)
unmapData();

if (! jackbridge_shm_is_valid(shm)) if (! jackbridge_shm_is_valid(shm))
{
CARLA_SAFE_ASSERT(data == nullptr);
return; return;
}

data = nullptr;


jackbridge_shm_close(shm); jackbridge_shm_close(shm);
jackbridge_shm_init(shm); jackbridge_shm_init(shm);
@@ -157,6 +155,12 @@ struct BridgeRtClientControl : public CarlaRingBufferControl<SmallStackBuffer> {
return false; return false;
} }


void unmapData() noexcept
{
data = nullptr;
setRingBuffer(nullptr, false);
}

bool postClient() noexcept bool postClient() noexcept
{ {
CARLA_SAFE_ASSERT_RETURN(data != nullptr, false); CARLA_SAFE_ASSERT_RETURN(data != nullptr, false);
@@ -202,29 +206,33 @@ struct BridgeNonRtClientControl : public CarlaRingBufferControl<BigStackBuffer>
clear(); clear();
} }


bool attach() noexcept
{
jackbridge_shm_attach(shm, filename);

return jackbridge_shm_is_valid(shm);
}

void clear() noexcept void clear() noexcept
{ {
filename.clear(); filename.clear();


if (data != nullptr)
unmapData();

if (! jackbridge_shm_is_valid(shm)) if (! jackbridge_shm_is_valid(shm))
{ {
CARLA_SAFE_ASSERT(data == nullptr); CARLA_SAFE_ASSERT(data == nullptr);
return; return;
} }


data = nullptr;

jackbridge_shm_close(shm); jackbridge_shm_close(shm);
jackbridge_shm_init(shm); jackbridge_shm_init(shm);
} }


bool attach() noexcept
{
// must be invalid right now
CARLA_SAFE_ASSERT_RETURN(! jackbridge_shm_is_valid(shm), false);

jackbridge_shm_attach(shm, filename);

return jackbridge_shm_is_valid(shm);
}

bool mapData() noexcept bool mapData() noexcept
{ {
CARLA_SAFE_ASSERT(data == nullptr); CARLA_SAFE_ASSERT(data == nullptr);
@@ -238,6 +246,12 @@ struct BridgeNonRtClientControl : public CarlaRingBufferControl<BigStackBuffer>
return false; return false;
} }


void unmapData() noexcept
{
data = nullptr;
setRingBuffer(nullptr, false);
}

PluginBridgeNonRtClientOpcode readOpcode() noexcept PluginBridgeNonRtClientOpcode readOpcode() noexcept
{ {
return static_cast<PluginBridgeNonRtClientOpcode>(readUInt()); return static_cast<PluginBridgeNonRtClientOpcode>(readUInt());
@@ -271,29 +285,33 @@ struct BridgeNonRtServerControl : public CarlaRingBufferControl<HugeStackBuffer>
clear(); clear();
} }


bool attach() noexcept
{
jackbridge_shm_attach(shm, filename);

return jackbridge_shm_is_valid(shm);
}

void clear() noexcept void clear() noexcept
{ {
filename.clear(); filename.clear();


if (data != nullptr)
unmapData();

if (! jackbridge_shm_is_valid(shm)) if (! jackbridge_shm_is_valid(shm))
{ {
CARLA_SAFE_ASSERT(data == nullptr); CARLA_SAFE_ASSERT(data == nullptr);
return; return;
} }


data = nullptr;

jackbridge_shm_close(shm); jackbridge_shm_close(shm);
jackbridge_shm_init(shm); jackbridge_shm_init(shm);
} }


bool attach() noexcept
{
// must be invalid right now
CARLA_SAFE_ASSERT_RETURN(! jackbridge_shm_is_valid(shm), false);

jackbridge_shm_attach(shm, filename);

return jackbridge_shm_is_valid(shm);
}

bool mapData() noexcept bool mapData() noexcept
{ {
CARLA_SAFE_ASSERT(data == nullptr); CARLA_SAFE_ASSERT(data == nullptr);
@@ -307,6 +325,12 @@ struct BridgeNonRtServerControl : public CarlaRingBufferControl<HugeStackBuffer>
return false; return false;
} }


void unmapData() noexcept
{
data = nullptr;
setRingBuffer(nullptr, false);
}

void writeOpcode(const PluginBridgeNonRtServerOpcode opcode) noexcept void writeOpcode(const PluginBridgeNonRtServerOpcode opcode) noexcept
{ {
writeUInt(static_cast<uint32_t>(opcode)); writeUInt(static_cast<uint32_t>(opcode));
@@ -330,6 +354,8 @@ public:
fShmNonRtServerControl(), fShmNonRtServerControl(),
fIsRunning(false), fIsRunning(false),
fIsOffline(false), fIsOffline(false),
fFirstIdle(true),
fLastPingCounter(-1),
leakDetector_CarlaEngineBridge() leakDetector_CarlaEngineBridge()
{ {
carla_stdout("CarlaEngineBridge::CarlaEngineBridge(\"%s\", \"%s\", \"%s\", \"%s\")", audioPoolBaseName, rtClientBaseName, nonRtClientBaseName, nonRtServerBaseName); carla_stdout("CarlaEngineBridge::CarlaEngineBridge(\"%s\", \"%s\", \"%s\", \"%s\")", audioPoolBaseName, rtClientBaseName, nonRtClientBaseName, nonRtServerBaseName);
@@ -374,28 +400,42 @@ public:
if (! fShmRtClientControl.attach()) if (! fShmRtClientControl.attach())
{ {
clear(); clear();
carla_stdout("Failed to attach to rt control shared memory");
carla_stdout("Failed to attach to rt client control shared memory");
return false; return false;
} }


if (! fShmRtClientControl.mapData()) if (! fShmRtClientControl.mapData())
{ {
clear(); clear();
carla_stdout("Failed to map rt control shared memory");
carla_stdout("Failed to map rt client control shared memory");
return false; return false;
} }


if (! fShmNonRtClientControl.attach()) if (! fShmNonRtClientControl.attach())
{ {
clear(); clear();
carla_stdout("Failed to attach to non-rt control shared memory");
carla_stdout("Failed to attach to non-rt client control shared memory");
return false; return false;
} }


if (! fShmNonRtClientControl.mapData()) if (! fShmNonRtClientControl.mapData())
{ {
clear(); clear();
carla_stdout("Failed to map non-rt control shared memory");
carla_stdout("Failed to map non-rt control client shared memory");
return false;
}

if (! fShmNonRtServerControl.attach())
{
clear();
carla_stdout("Failed to attach to non-rt server control shared memory");
return false;
}

if (! fShmNonRtServerControl.mapData())
{
clear();
carla_stdout("Failed to map non-rt control server shared memory");
return false; return false;
} }


@@ -404,11 +444,14 @@ public:
opcode = fShmNonRtClientControl.readOpcode(); opcode = fShmNonRtClientControl.readOpcode();
CARLA_SAFE_ASSERT_INT(opcode == kPluginBridgeNonRtClientNull, opcode); CARLA_SAFE_ASSERT_INT(opcode == kPluginBridgeNonRtClientNull, opcode);


const uint32_t shmRtDataSize = fShmNonRtClientControl.readUInt();
CARLA_SAFE_ASSERT_INT2(shmRtDataSize == sizeof(BridgeRtClientData), shmRtDataSize, sizeof(BridgeRtClientData));
const uint32_t shmRtClientDataSize = fShmNonRtClientControl.readUInt();
CARLA_SAFE_ASSERT_INT2(shmRtClientDataSize == sizeof(BridgeRtClientData), shmRtClientDataSize, sizeof(BridgeRtClientData));

const uint32_t shmNonRtClientDataSize = fShmNonRtClientControl.readUInt();
CARLA_SAFE_ASSERT_INT2(shmNonRtClientDataSize == sizeof(BridgeNonRtClientData), shmNonRtClientDataSize, sizeof(BridgeNonRtClientData));


const uint32_t shmNonRtDataSize = fShmNonRtClientControl.readUInt();
CARLA_SAFE_ASSERT_INT2(shmNonRtDataSize == sizeof(BridgeNonRtClientData), shmNonRtDataSize, sizeof(BridgeNonRtClientData));
const uint32_t shmNonRtServerDataSize = fShmNonRtClientControl.readUInt();
CARLA_SAFE_ASSERT_INT2(shmNonRtServerDataSize == sizeof(BridgeNonRtServerData), shmNonRtServerDataSize, sizeof(BridgeNonRtServerData));


opcode = fShmNonRtClientControl.readOpcode(); opcode = fShmNonRtClientControl.readOpcode();
CARLA_SAFE_ASSERT_INT(opcode == kPluginBridgeNonRtClientSetBufferSize, opcode); CARLA_SAFE_ASSERT_INT(opcode == kPluginBridgeNonRtClientSetBufferSize, opcode);
@@ -421,10 +464,11 @@ public:
carla_stdout("Carla Client Info:"); carla_stdout("Carla Client Info:");
carla_stdout(" BufferSize: %i", pData->bufferSize); carla_stdout(" BufferSize: %i", pData->bufferSize);
carla_stdout(" SampleRate: %g", pData->sampleRate); carla_stdout(" SampleRate: %g", pData->sampleRate);
carla_stdout(" sizeof(BridgeRtData): %i/" P_SIZE, shmRtDataSize, sizeof(BridgeRtClientData));
carla_stdout(" sizeof(BridgeNonRtData): %i/" P_SIZE, shmNonRtDataSize, sizeof(BridgeNonRtClientData));
carla_stdout(" sizeof(BridgeRtClientData): %i/" P_SIZE, shmRtClientDataSize, sizeof(BridgeRtClientData));
carla_stdout(" sizeof(BridgeNonRtClientData): %i/" P_SIZE, shmNonRtClientDataSize, sizeof(BridgeNonRtClientData));
carla_stdout(" sizeof(BridgeNonRtServerData): %i/" P_SIZE, shmNonRtServerDataSize, sizeof(BridgeNonRtServerData));


if (shmRtDataSize != sizeof(BridgeRtClientData) || shmNonRtDataSize != sizeof(BridgeNonRtClientData))
if (shmRtClientDataSize != sizeof(BridgeRtClientData) || shmNonRtClientDataSize != sizeof(BridgeNonRtClientData) || shmNonRtServerDataSize != sizeof(BridgeNonRtServerData))
return false; return false;


startThread(); startThread();
@@ -435,6 +479,8 @@ public:
bool close() override bool close() override
{ {
carla_debug("CarlaEnginePlugin::close()"); carla_debug("CarlaEnginePlugin::close()");
fLastPingCounter = -1;

CarlaEngine::close(); CarlaEngine::close();


stopThread(5000); stopThread(5000);
@@ -465,13 +511,34 @@ public:


void idle() noexcept override void idle() noexcept override
{ {
CarlaEngine::idle();
if (fFirstIdle)
{
fFirstIdle = false;
fLastPingCounter = 0;

const CarlaMutexLocker _cml(fShmNonRtServerControl.mutex);

// TODO - send plugin data

fShmNonRtServerControl.writeOpcode(kPluginBridgeNonRtServerReady);
fShmNonRtServerControl.commitWrite();

carla_stdout("Carla Client Ready!");
}


// TODO - send output parameters to server // TODO - send output parameters to server


CarlaEngine::idle();

try { try {
handleNonRtData(); handleNonRtData();
} CARLA_SAFE_EXCEPTION("handleNonRtData"); } CARLA_SAFE_EXCEPTION("handleNonRtData");

if (fLastPingCounter >= 0 && ++fLastPingCounter == 500)
{
carla_stderr("Did not receive ping message from server for a long time, closing...");
callback(ENGINE_CALLBACK_QUIT, 0, 0, 0, 0.0f, nullptr);
}
} }


// ------------------------------------------------------------------- // -------------------------------------------------------------------
@@ -481,6 +548,7 @@ public:
fShmAudioPool.clear(); fShmAudioPool.clear();
fShmRtClientControl.clear(); fShmRtClientControl.clear();
fShmNonRtClientControl.clear(); fShmNonRtClientControl.clear();
fShmNonRtServerControl.clear();
} }


void handleNonRtData() void handleNonRtData()
@@ -501,9 +569,15 @@ public:
case kPluginBridgeNonRtClientNull: case kPluginBridgeNonRtClientNull:
break; break;


case kPluginBridgeNonRtClientPing:
//oscSend_bridge_pong();
break;
case kPluginBridgeNonRtClientPing: {
if (fLastPingCounter > 0)
fLastPingCounter = 0;

const CarlaMutexLocker _cml(fShmNonRtServerControl.mutex);

fShmNonRtServerControl.writeOpcode(kPluginBridgeNonRtServerPong);
fShmNonRtServerControl.commitWrite();
} break;


case kPluginBridgeNonRtClientActivate: case kPluginBridgeNonRtClientActivate:
if (plugin != nullptr && plugin->isEnabled()) if (plugin != nullptr && plugin->isEnabled())
@@ -660,15 +734,43 @@ public:


plugin->prepareForSave(); plugin->prepareForSave();


//for (uint32_t i=0, count=plugin->getCustomDataCount(); i<count; ++i)
for (uint32_t i=0, count=plugin->getCustomDataCount(); i<count; ++i)
{ {
//const CustomData& cdata(plugin->getCustomData(i));
//oscSend_bridge_set_custom_data(cdata.type, cdata.key, cdata.value);
using namespace juce;

const CustomData& cdata(plugin->getCustomData(i));

const uint32_t typeLen(static_cast<uint32_t>(std::strlen(cdata.type)));
const uint32_t keyLen(static_cast<uint32_t>(std::strlen(cdata.key)));

MemoryOutputStream valueMemStream;
GZIPCompressorOutputStream compressedValueStream(&valueMemStream, 9, false);
compressedValueStream.write(cdata.value, std::strlen(cdata.value));

const CarlaString valueBase64(CarlaString::asBase64(valueMemStream.getData(), valueMemStream.getDataSize()));
const uint32_t valueBase64Len(static_cast<uint32_t>(valueBase64.length()));
CARLA_SAFE_ASSERT_CONTINUE(valueBase64.length() > 0);

{
const CarlaMutexLocker _cml(fShmNonRtServerControl.mutex);

fShmNonRtServerControl.writeOpcode(kPluginBridgeNonRtServerSetCustomData);

fShmNonRtServerControl.writeUInt(typeLen);
fShmNonRtServerControl.writeCustomData(cdata.type, typeLen);

fShmNonRtServerControl.writeUInt(keyLen);
fShmNonRtServerControl.writeCustomData(cdata.key, keyLen);

fShmNonRtServerControl.writeUInt(valueBase64Len);
fShmNonRtServerControl.writeCustomData(valueBase64.buffer(), valueBase64Len);

fShmNonRtServerControl.commitWrite();
}
} }


if (plugin->getOptionsEnabled() & PLUGIN_OPTION_USE_CHUNKS) if (plugin->getOptionsEnabled() & PLUGIN_OPTION_USE_CHUNKS)
{ {
/*
void* data = nullptr; void* data = nullptr;
if (const std::size_t dataSize = plugin->getChunkData(&data)) if (const std::size_t dataSize = plugin->getChunkData(&data))
{ {
@@ -684,12 +786,25 @@ public:
filePath += fShmNonRtClientControl.filename.buffer() + 24; filePath += fShmNonRtClientControl.filename.buffer() + 24;


if (File(filePath).replaceWithText(dataBase64.buffer())) if (File(filePath).replaceWithText(dataBase64.buffer()))
oscSend_bridge_set_chunk_data_file(filePath.toRawUTF8());
{
const uint32_t ulength(static_cast<uint32_t>(filePath.length()));

const CarlaMutexLocker _cml(fShmNonRtServerControl.mutex);

fShmNonRtServerControl.writeOpcode(kPluginBridgeNonRtServerSetChunkDataFile);
fShmNonRtServerControl.writeUInt(ulength);
fShmNonRtServerControl.writeCustomData(filePath.toRawUTF8(), ulength);
fShmNonRtServerControl.commitWrite();
}
} }
*/
} }


//oscSend_bridge_configure(CARLA_BRIDGE_MSG_SAVED, "");
{
const CarlaMutexLocker _cml(fShmNonRtServerControl.mutex);

fShmNonRtServerControl.writeOpcode(kPluginBridgeNonRtServerSaved);
fShmNonRtServerControl.commitWrite();
}
break; break;
} }


@@ -1016,6 +1131,8 @@ private:


bool fIsRunning; bool fIsRunning;
bool fIsOffline; bool fIsOffline;
bool fFirstIdle;
int32_t fLastPingCounter;


CARLA_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(CarlaEngineBridge) CARLA_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(CarlaEngineBridge)
}; };


+ 11
- 17
source/backend/plugin/CarlaPluginBridge.cpp View File

@@ -210,10 +210,7 @@ struct BridgeRtClientControl : public CarlaRingBufferControl<SmallStackBuffer> {
unmapData(); unmapData();


if (! carla_is_shm_valid(shm)) if (! carla_is_shm_valid(shm))
{
CARLA_SAFE_ASSERT(data == nullptr);
return; return;
}


carla_shm_close(shm); carla_shm_close(shm);
carla_shm_init(shm); carla_shm_init(shm);
@@ -322,10 +319,7 @@ struct BridgeNonRtClientControl : public CarlaRingBufferControl<BigStackBuffer>
unmapData(); unmapData();


if (! carla_is_shm_valid(shm)) if (! carla_is_shm_valid(shm))
{
CARLA_SAFE_ASSERT(data == nullptr);
return; return;
}


carla_shm_close(shm); carla_shm_close(shm);
carla_shm_init(shm); carla_shm_init(shm);
@@ -420,10 +414,7 @@ struct BridgeNonRtServerControl : public CarlaRingBufferControl<HugeStackBuffer>
unmapData(); unmapData();


if (! carla_is_shm_valid(shm)) if (! carla_is_shm_valid(shm))
{
CARLA_SAFE_ASSERT(data == nullptr);
return; return;
}


carla_shm_close(shm); carla_shm_close(shm);
carla_shm_init(shm); carla_shm_init(shm);
@@ -498,7 +489,7 @@ public:
CARLA_SAFE_ASSERT(! isThreadRunning()); CARLA_SAFE_ASSERT(! isThreadRunning());


fBinary = binary; fBinary = binary;
fLabel = binary;
fLabel = label;
fShmIds = shmIds; fShmIds = shmIds;


if (fLabel.isEmpty()) if (fLabel.isEmpty())
@@ -538,7 +529,7 @@ protected:
arguments.add(fBinary); arguments.add(fBinary);


// plugin type // plugin type
arguments.add(PluginType2Str(kPlugin->getType()));
arguments.add(getPluginTypeAsString(kPlugin->getType()));


// filename // filename
arguments.add(filename); arguments.add(filename);
@@ -639,7 +630,9 @@ protected:
carla_setenv("ENGINE_BRIDGE_SHM_IDS", fShmIds.toRawUTF8()); carla_setenv("ENGINE_BRIDGE_SHM_IDS", fShmIds.toRawUTF8());
carla_setenv("WINEDEBUG", "-all"); carla_setenv("WINEDEBUG", "-all");


carla_stdout("starting plugin bridge..");
carla_stdout("starting plugin bridge, command is:\n%s \"%s\" \"%s\" \"%s\" " P_INT64,
fBinary.toRawUTF8(), getPluginTypeAsString(kPlugin->getType()), filename.toRawUTF8(), fLabel.toRawUTF8(), kPlugin->getUniqueId());

started = fProcess->start(arguments); started = fProcess->start(arguments);


#ifdef CARLA_OS_LINUX #ifdef CARLA_OS_LINUX
@@ -1123,7 +1116,7 @@ public:
{ {
if (fBridgeThread.isThreadRunning()) if (fBridgeThread.isThreadRunning())
{ {
if (fTimedOut && pData->active)
if (fInitiated && fTimedOut && pData->active)
setActive(false, true, true); setActive(false, true, true);


{ {
@@ -1854,9 +1847,9 @@ public:
for (; fShmNonRtServerControl.isDataAvailableForReading();) for (; fShmNonRtServerControl.isDataAvailableForReading();)
{ {
const PluginBridgeNonRtServerOpcode opcode(fShmNonRtServerControl.readOpcode()); const PluginBridgeNonRtServerOpcode opcode(fShmNonRtServerControl.readOpcode());
#ifdef DEBUG
#if 1//def DEBUG
if (opcode != kPluginBridgeNonRtServerPong) { if (opcode != kPluginBridgeNonRtServerPong) {
carla_debug("CarlaPluginBridge::handleNonRtData() - got opcode: %s", PluginBridgeNonRtServerOpcode2str(opcode));
carla_stdout("CarlaPluginBridge::handleNonRtData() - got opcode: %s", PluginBridgeNonRtServerOpcode2str(opcode));
} }
#endif #endif
switch (opcode) switch (opcode)
@@ -2372,9 +2365,10 @@ public:
{ {
if (fInitiated || ! fBridgeThread.isThreadRunning()) if (fInitiated || ! fBridgeThread.isThreadRunning())
break; break;
carla_msleep(25);
carla_msleep(20);
pData->engine->callback(ENGINE_CALLBACK_IDLE, 0, 0, 0, 0.0f, nullptr); pData->engine->callback(ENGINE_CALLBACK_IDLE, 0, 0, 0, 0.0f, nullptr);
pData->engine->idle(); pData->engine->idle();
idle();
} }


fLastPongCounter = -1; fLastPongCounter = -1;
@@ -2422,7 +2416,7 @@ private:
bool fSaved; bool fSaved;
bool fTimedOut; bool fTimedOut;


volatile int32_t fLastPongCounter;
int32_t fLastPongCounter;


CarlaString fBridgeBinary; CarlaString fBridgeBinary;
CarlaPluginBridgeThread fBridgeThread; CarlaPluginBridgeThread fBridgeThread;


+ 0
- 1
source/backend/plugin/CarlaPluginInternal.hpp View File

@@ -19,7 +19,6 @@
#define CARLA_PLUGIN_INTERNAL_HPP_INCLUDED #define CARLA_PLUGIN_INTERNAL_HPP_INCLUDED


#include "CarlaPlugin.hpp" #include "CarlaPlugin.hpp"
#include "CarlaPluginThread.hpp"


#include "CarlaLibUtils.hpp" #include "CarlaLibUtils.hpp"
#include "CarlaOscUtils.hpp" #include "CarlaOscUtils.hpp"


+ 0
- 1
source/backend/plugin/Makefile View File

@@ -12,7 +12,6 @@ include ../Makefile.mk
OBJS = \ OBJS = \
$(OBJDIR)/CarlaPlugin.cpp.o \ $(OBJDIR)/CarlaPlugin.cpp.o \
$(OBJDIR)/CarlaPluginInternal.cpp.o \ $(OBJDIR)/CarlaPluginInternal.cpp.o \
$(OBJDIR)/CarlaPluginThread.cpp.o \
$(OBJDIR)/CarlaPluginNative.cpp.o \ $(OBJDIR)/CarlaPluginNative.cpp.o \
$(OBJDIR)/CarlaPluginBridge.cpp.o \ $(OBJDIR)/CarlaPluginBridge.cpp.o \
$(OBJDIR)/CarlaPluginLADSPA.cpp.o \ $(OBJDIR)/CarlaPluginLADSPA.cpp.o \


+ 8
- 51
source/bridges-plugin/CarlaBridgePlugin.cpp View File

@@ -19,7 +19,6 @@
#include "CarlaHost.h" #include "CarlaHost.h"


#include "CarlaBackendUtils.hpp" #include "CarlaBackendUtils.hpp"
#include "CarlaOscUtils.hpp"
#include "CarlaMIDI.h" #include "CarlaMIDI.h"


#ifdef CARLA_OS_UNIX #ifdef CARLA_OS_UNIX
@@ -173,9 +172,7 @@ public:
const char* const rtClientBaseName, const char* const nonRtClientBaseName, const char* const nonRtServerBaseName) const char* const rtClientBaseName, const char* const nonRtClientBaseName, const char* const nonRtServerBaseName)
: fEngine(nullptr), : fEngine(nullptr),
fProjFilename(), fProjFilename(),
fOscControlData(),
fOscServerPath(),
fOscServerThread(nullptr),
fUsingBridge(false),
leakDetector_CarlaBridgePlugin() leakDetector_CarlaBridgePlugin()
{ {
CARLA_ASSERT(clientName != nullptr && clientName[0] != '\0'); CARLA_ASSERT(clientName != nullptr && clientName[0] != '\0');
@@ -205,31 +202,11 @@ public:


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


/*
void sendOscUpdate() const noexcept
void exec(const bool useBridge, int argc, char* argv[])
{ {
if (fOscControlData.target != nullptr)
osc_send_update(fOscControlData, fOscServerPath);
}

void sendOscBridgeUpdate() const noexcept
{
if (fOscControlData.target != nullptr)
osc_send_bridge_ready(fOscControlData, fOscControlData.path);
}

void sendOscBridgeError(const char* const error) const noexcept
{
if (fOscControlData.target != nullptr)
osc_send_bridge_error(fOscControlData, error);
}
*/
fUsingBridge = useBridge;


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

void exec(const bool useOsc, int argc, char* argv[])
{
if (! useOsc)
if (! useBridge)
{ {
const CarlaPluginInfo* const pInfo(carla_get_plugin_info(0)); const CarlaPluginInfo* const pInfo(carla_get_plugin_info(0));
CARLA_SAFE_ASSERT_RETURN(pInfo != nullptr,); CARLA_SAFE_ASSERT_RETURN(pInfo != nullptr,);
@@ -267,12 +244,10 @@ public:
// --------------------------------------------------------------------- // ---------------------------------------------------------------------


protected: protected:
void handleCallback(const EngineCallbackOpcode action, const int value1, const int value2, const float value3, const char* const valueStr)
void handleCallback(const EngineCallbackOpcode action, const int value1, const int, const float, const char* const)
{ {
CARLA_BACKEND_USE_NAMESPACE; CARLA_BACKEND_USE_NAMESPACE;


// TODO

switch (action) switch (action)
{ {
case ENGINE_CALLBACK_ENGINE_STOPPED: case ENGINE_CALLBACK_ENGINE_STOPPED:
@@ -282,27 +257,19 @@ protected:
break; break;


case ENGINE_CALLBACK_UI_STATE_CHANGED: case ENGINE_CALLBACK_UI_STATE_CHANGED:
if (gIsInitiated && value1 != 1 && fOscControlData.target == nullptr)
if (gIsInitiated && value1 != 1 && ! fUsingBridge)
gCloseNow = true; gCloseNow = true;
break; break;


default: default:
break; break;
} }

return;
(void)value2;
(void)value3;
(void)valueStr;
} }


private: private:
const CarlaEngine* fEngine; const CarlaEngine* fEngine;
String fProjFilename; String fProjFilename;

CarlaOscData fOscControlData;
CarlaString fOscServerPath;
lo_server_thread fOscServerThread;
bool fUsingBridge;


static void callback(void* ptr, EngineCallbackOpcode action, unsigned int pluginId, int value1, int value2, float value3, const char* valueStr) static void callback(void* ptr, EngineCallbackOpcode action, unsigned int pluginId, int value1, int value2, float value3, const char* valueStr)
{ {
@@ -313,11 +280,6 @@ private:
return ((CarlaBridgePlugin*)ptr)->handleCallback(action, value1, value2, value3, valueStr); return ((CarlaBridgePlugin*)ptr)->handleCallback(action, value1, value2, value3, valueStr);
} }


static void osc_error_handler(int num, const char* msg, const char* path)
{
carla_stderr("CarlaBridgePlugin::osc_error_handler(%i, \"%s\", \"%s\")", num, msg, path);
}

CARLA_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(CarlaBridgePlugin) CARLA_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(CarlaBridgePlugin)
}; };


@@ -443,12 +405,7 @@ int main(int argc, char* argv[])
{ {
ret = 0; ret = 0;


if (useBridge)
{
//bridge.sendOscUpdate();
//bridge.sendOscBridgeUpdate();
}
else
if (! useBridge)
{ {
carla_set_active(0, true); carla_set_active(0, true);




+ 0
- 2
source/bridges-plugin/Makefile View File

@@ -168,7 +168,6 @@ OBJS_native = \
$(OBJDIR)/CarlaEngineBridge.cpp.o \ $(OBJDIR)/CarlaEngineBridge.cpp.o \
$(OBJDIR)/CarlaPlugin.cpp.o \ $(OBJDIR)/CarlaPlugin.cpp.o \
$(OBJDIR)/CarlaPluginInternal.cpp.o \ $(OBJDIR)/CarlaPluginInternal.cpp.o \
$(OBJDIR)/CarlaPluginThread.cpp.o \
$(OBJDIR)/CarlaPluginNative.cpp.o \ $(OBJDIR)/CarlaPluginNative.cpp.o \
$(OBJDIR)/CarlaPluginLADSPA.cpp.o \ $(OBJDIR)/CarlaPluginLADSPA.cpp.o \
$(OBJDIR)/CarlaPluginDSSI.cpp.o \ $(OBJDIR)/CarlaPluginDSSI.cpp.o \
@@ -195,7 +194,6 @@ OBJS_arch = \
$(OBJDIR)/CarlaEngineBridge.cpp.arch.o \ $(OBJDIR)/CarlaEngineBridge.cpp.arch.o \
$(OBJDIR)/CarlaPlugin.cpp.arch.o \ $(OBJDIR)/CarlaPlugin.cpp.arch.o \
$(OBJDIR)/CarlaPluginInternal.cpp.arch.o \ $(OBJDIR)/CarlaPluginInternal.cpp.arch.o \
$(OBJDIR)/CarlaPluginThread.cpp.arch.o \
$(OBJDIR)/CarlaPluginLADSPA.cpp.arch.o \ $(OBJDIR)/CarlaPluginLADSPA.cpp.arch.o \
$(OBJDIR)/CarlaPluginDSSI.cpp.arch.o \ $(OBJDIR)/CarlaPluginDSSI.cpp.arch.o \
$(OBJDIR)/CarlaPluginLV2.cpp.arch.o \ $(OBJDIR)/CarlaPluginLV2.cpp.arch.o \


Loading…
Cancel
Save