Browse Source

Cleanup CarlaStateSave struct; Initial code for plugin pipe (no osc)

tags/1.9.6
falkTX 10 years ago
parent
commit
74b4f51476
19 changed files with 153 additions and 140 deletions
  1. +1
    -0
      Makefile
  2. +3
    -7
      source/backend/CarlaPlugin.hpp
  3. +1
    -1
      source/backend/engine/CarlaEngine.cpp
  4. +1
    -1
      source/backend/engine/CarlaEngineJack.cpp
  5. +0
    -6
      source/backend/engine/CarlaEngineOsc.cpp
  6. +3
    -3
      source/backend/engine/CarlaEngineOsc.hpp
  7. +33
    -27
      source/backend/plugin/CarlaPlugin.cpp
  8. +8
    -7
      source/backend/plugin/CarlaPluginBridge.cpp
  9. +6
    -0
      source/backend/plugin/CarlaPluginDSSI.cpp
  10. +6
    -8
      source/backend/plugin/CarlaPluginInternal.cpp
  11. +13
    -15
      source/backend/plugin/CarlaPluginInternal.hpp
  12. +7
    -0
      source/backend/plugin/CarlaPluginLV2.cpp
  13. +4
    -0
      source/backend/plugin/CarlaPluginThread.cpp
  14. +4
    -0
      source/backend/plugin/CarlaPluginThread.hpp
  15. +7
    -1
      source/backend/plugin/CarlaPluginVST2.cpp
  16. +6
    -14
      source/includes/CarlaNative.hpp
  17. +1
    -1
      source/includes/CarlaNativeExtUI.hpp
  18. +19
    -19
      source/utils/CarlaStateUtils.cpp
  19. +30
    -30
      source/utils/CarlaStateUtils.hpp

+ 1
- 0
Makefile View File

@@ -21,6 +21,7 @@ endif
# ----------------------------------------------------------------------------------------------------------------------------

PREFIX := /usr/local
LIBDIR := $(PREFIX)/lib
DESTDIR :=

BINDIR := $(CURDIR)/bin


+ 3
- 7
source/backend/CarlaPlugin.hpp View File

@@ -47,11 +47,7 @@ CARLA_BACKEND_START_NAMESPACE
class CarlaEngineAudioPort;
class CarlaEngineCVPort;
class CarlaEngineEventPort;

/*!
* Save state data.
*/
struct StateSave;
struct CarlaStateSave;

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

@@ -396,14 +392,14 @@ public:
*
* @see loadStateSave()
*/
const StateSave& getStateSave();
const CarlaStateSave& getStateSave();

/*!
* Get the plugin's save state.
*
* @see getStateSave()
*/
void loadStateSave(const StateSave& stateSave);
void loadStateSave(const CarlaStateSave& stateSave);

/*!
* Save the current plugin state to @a filename.


+ 1
- 1
source/backend/engine/CarlaEngine.cpp View File

@@ -1803,7 +1803,7 @@ bool CarlaEngine::loadProjectInternal(juce::XmlDocument& xmlDoc)

if (isPreset || tagName.equalsIgnoreCase("plugin"))
{
StateSave stateSave;
CarlaStateSave stateSave;
stateSave.fillFromXmlElement(isPreset ? xmlElement.get() : elem);

callback(ENGINE_CALLBACK_IDLE, 0, 0, 0, 0.0f, nullptr);


+ 1
- 1
source/backend/engine/CarlaEngineJack.cpp View File

@@ -1058,7 +1058,7 @@ public:
if (needsReinit)
{
// reload plugin to recreate its ports
const StateSave& saveState(plugin->getStateSave());
const CarlaStateSave& saveState(plugin->getStateSave());
plugin->reload();
plugin->loadStateSave(saveState);
}


+ 0
- 6
source/backend/engine/CarlaEngineOsc.cpp View File

@@ -388,12 +388,6 @@ int CarlaEngineOsc::handleMessage(const bool isTCP, const char* const path, cons
if (std::strcmp(bmethod, "error") == 0)
return CarlaPluginSetOscBridgeInfo(plugin, kPluginBridgeOscError, argc, argv, types);
}

// Plugin-specific methods
if (std::strcmp(method, "lv2_atom_transfer") == 0)
return handleMsgLv2AtomTransfer(plugin, argc, argv, types);
if (std::strcmp(method, "lv2_urid_map") == 0)
return handleMsgLv2UridMap(plugin, argc, argv, types);
#endif

carla_stderr("CarlaEngineOsc::handleMessage() - unsupported OSC method '%s'", method);


+ 3
- 3
source/backend/engine/CarlaEngineOsc.hpp View File

@@ -108,6 +108,7 @@ private:

int handleMessage(const bool isTCP, const char* const path, const int argc, const lo_arg* const* const argv, const char* const types, const lo_message msg);

// Common OSC methods (all bridges)
int handleMsgUpdate(CARLA_ENGINE_OSC_HANDLE_ARGS2, const lo_address source);
int handleMsgExiting(CARLA_ENGINE_OSC_HANDLE_ARGS1);

@@ -115,11 +116,13 @@ private:
int handleMsgRegister(const bool isTCP, const int argc, const lo_arg* const* const argv, const char* const types, const lo_address source);
int handleMsgUnregister();

// Common OSC methods (DSSI and bridge UIs)
int handleMsgConfigure(CARLA_ENGINE_OSC_HANDLE_ARGS2);
int handleMsgControl(CARLA_ENGINE_OSC_HANDLE_ARGS2);
int handleMsgProgram(CARLA_ENGINE_OSC_HANDLE_ARGS2);
int handleMsgMidi(CARLA_ENGINE_OSC_HANDLE_ARGS2);

// Internal methods
int handleMsgSetActive(CARLA_ENGINE_OSC_HANDLE_ARGS2);
int handleMsgSetDryWet(CARLA_ENGINE_OSC_HANDLE_ARGS2);
int handleMsgSetVolume(CARLA_ENGINE_OSC_HANDLE_ARGS2);
@@ -133,9 +136,6 @@ private:
int handleMsgSetMidiProgram(CARLA_ENGINE_OSC_HANDLE_ARGS2);
int handleMsgNoteOn(CARLA_ENGINE_OSC_HANDLE_ARGS2);
int handleMsgNoteOff(CARLA_ENGINE_OSC_HANDLE_ARGS2);

int handleMsgLv2AtomTransfer(CARLA_ENGINE_OSC_HANDLE_ARGS2);
int handleMsgLv2UridMap(CARLA_ENGINE_OSC_HANDLE_ARGS2);
#endif

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


+ 33
- 27
source/backend/plugin/CarlaPlugin.cpp View File

@@ -73,7 +73,7 @@ struct ParamSymbol {
// Constructor and destructor

CarlaPlugin::CarlaPlugin(CarlaEngine* const engine, const uint id)
: pData(new ProtectedData(engine, id, this))
: pData(new ProtectedData(engine, id))
{
CARLA_SAFE_ASSERT_RETURN(engine != nullptr,);
CARLA_SAFE_ASSERT(id < engine->getMaxPluginNumber());
@@ -471,7 +471,7 @@ void CarlaPlugin::randomizeParameters() noexcept
}
}

const StateSave& CarlaPlugin::getStateSave()
const CarlaStateSave& CarlaPlugin::getStateSave()
{
pData->stateSave.clear();
prepareForSave();
@@ -558,7 +558,7 @@ const StateSave& CarlaPlugin::getStateSave()
if ((paramData.hints & PARAMETER_IS_ENABLED) == 0)
continue;

StateParameter* const stateParameter(new StateParameter());
CarlaStateSave::Parameter* const stateParameter(new CarlaStateSave::Parameter());

stateParameter->isInput = (paramData.type == PARAMETER_INPUT);
stateParameter->index = paramData.index;
@@ -588,7 +588,7 @@ const StateSave& CarlaPlugin::getStateSave()
{
const CustomData& cData(it.getValue());

StateCustomData* stateCustomData(new StateCustomData());
CarlaStateSave::CustomData* stateCustomData(new CarlaStateSave::CustomData());

stateCustomData->type = carla_strdup(cData.type);
stateCustomData->key = carla_strdup(cData.key);
@@ -600,7 +600,7 @@ const StateSave& CarlaPlugin::getStateSave()
return pData->stateSave;
}

void CarlaPlugin::loadStateSave(const StateSave& stateSave)
void CarlaPlugin::loadStateSave(const CarlaStateSave& stateSave)
{
char strBuf[STR_MAX+1];
const bool usesMultiProgs(pData->extraHints & PLUGIN_EXTRA_HINT_USES_MULTI_PROGS);
@@ -608,9 +608,9 @@ void CarlaPlugin::loadStateSave(const StateSave& stateSave)
// ---------------------------------------------------------------
// Part 1 - PRE-set custom data (only that which reload programs)

for (LinkedList<StateCustomData*>::Itenerator it = stateSave.customData.begin(); it.valid(); it.next())
for (CarlaStateSave::CustomDataItenerator it = stateSave.customData.begin(); it.valid(); it.next())
{
const StateCustomData* const stateCustomData(it.getValue());
const CarlaStateSave::CustomData* const stateCustomData(it.getValue());
const char* const key(stateCustomData->key);

bool wantData = false;
@@ -688,9 +688,9 @@ void CarlaPlugin::loadStateSave(const StateSave& stateSave)

const float sampleRate(static_cast<float>(pData->engine->getSampleRate()));

for (LinkedList<StateParameter*>::Itenerator it = stateSave.parameters.begin(); it.valid(); it.next())
for (CarlaStateSave::ParameterItenerator it = stateSave.parameters.begin(); it.valid(); it.next())
{
StateParameter* const stateParameter(it.getValue());
CarlaStateSave::Parameter* const stateParameter(it.getValue());

int32_t index = -1;

@@ -778,9 +778,9 @@ void CarlaPlugin::loadStateSave(const StateSave& stateSave)
// ---------------------------------------------------------------
// Part 5 - set custom data

for (LinkedList<StateCustomData*>::Itenerator it = stateSave.customData.begin(); it.valid(); it.next())
for (CarlaStateSave::CustomDataItenerator it = stateSave.customData.begin(); it.valid(); it.next())
{
const StateCustomData* const stateCustomData(it.getValue());
const CarlaStateSave::CustomData* const stateCustomData(it.getValue());
const char* const key(stateCustomData->key);

if (getType() == PLUGIN_DSSI && (std::strcmp(key, "reloadprograms") == 0 || std::strcmp(key, "load") == 0 || std::strncmp(key, "patches", 7) == 0))
@@ -1338,7 +1338,13 @@ void CarlaPlugin::idle()
CarlaString uiTitle(pData->name);
uiTitle += " (GUI)";

if (CarlaPluginUI::tryTransientWinIdMatch(pData->osc.data.target != nullptr ? pData->osc.thread.getPid() : 0, uiTitle, pData->engine->getOptions().frontendWinId, true))
uint32_t pid = 0;
#ifndef BUILD_BRIDGE
if (pData->oscData.target != nullptr && pData->childProcess != nullptr)
pid = pData->childProcess->getPID();
#endif

if (CarlaPluginUI::tryTransientWinIdMatch(pid, uiTitle, pData->engine->getOptions().frontendWinId, true))
pData->transientTryCounter = 0;
}

@@ -1572,14 +1578,14 @@ void CarlaPlugin::updateOscData(const lo_address& source, const char* const url)
// FIXME - remove debug prints later
carla_stdout("CarlaPlugin::updateOscData(%p, \"%s\")", source, url);

pData->osc.data.clear();
pData->oscData.clear();

const int proto = lo_address_get_protocol(source);

{
const char* host = lo_address_get_hostname(source);
const char* port = lo_address_get_port(source);
pData->osc.data.source = lo_address_new_with_proto(proto, host, port);
pData->oscData.source = lo_address_new_with_proto(proto, host, port);

carla_stdout("CarlaPlugin::updateOscData() - source: host \"%s\", port \"%s\"", host, port);
}
@@ -1587,9 +1593,9 @@ void CarlaPlugin::updateOscData(const lo_address& source, const char* const url)
{
char* host = lo_url_get_hostname(url);
char* port = lo_url_get_port(url);
pData->osc.data.path = carla_strdup_free(lo_url_get_path(url));
pData->osc.data.target = lo_address_new_with_proto(proto, host, port);
carla_stdout("CarlaPlugin::updateOscData() - target: host \"%s\", port \"%s\", path \"%s\"", host, port, pData->osc.data.path);
pData->oscData.path = carla_strdup_free(lo_url_get_path(url));
pData->oscData.target = lo_address_new_with_proto(proto, host, port);
carla_stdout("CarlaPlugin::updateOscData() - target: host \"%s\", port \"%s\", path \"%s\"", host, port, pData->oscData.path);

std::free(host);
std::free(port);
@@ -1607,7 +1613,7 @@ void CarlaPlugin::updateOscData(const lo_address& source, const char* const url)
if (updateOscDataExtra())
pData->engine->idleOsc();

osc_send_sample_rate(pData->osc.data, static_cast<float>(pData->engine->getSampleRate()));
osc_send_sample_rate(pData->oscData, static_cast<float>(pData->engine->getSampleRate()));

for (LinkedList<CustomData>::Itenerator it = pData->custom.begin(); it.valid(); it.next())
{
@@ -1618,24 +1624,24 @@ void CarlaPlugin::updateOscData(const lo_address& source, const char* const url)
CARLA_SAFE_ASSERT_CONTINUE(cData.value != nullptr);

if (std::strcmp(cData.type, CUSTOM_DATA_TYPE_STRING) == 0)
osc_send_configure(pData->osc.data, cData.key, cData.value);
osc_send_configure(pData->oscData, cData.key, cData.value);
}

if (pData->prog.current >= 0)
osc_send_program(pData->osc.data, static_cast<uint32_t>(pData->prog.current));
osc_send_program(pData->oscData, static_cast<uint32_t>(pData->prog.current));

if (pData->midiprog.current >= 0)
{
const MidiProgramData& curMidiProg(pData->midiprog.getCurrent());

if (getType() == PLUGIN_DSSI)
osc_send_program(pData->osc.data, curMidiProg.bank, curMidiProg.program);
osc_send_program(pData->oscData, curMidiProg.bank, curMidiProg.program);
else
osc_send_midi_program(pData->osc.data, curMidiProg.bank, curMidiProg.program);
osc_send_midi_program(pData->oscData, curMidiProg.bank, curMidiProg.program);
}

for (uint32_t i=0; i < pData->param.count; ++i)
osc_send_control(pData->osc.data, pData->param.data[i].rindex, getParameterValue(i));
osc_send_control(pData->oscData, pData->param.data[i].rindex, getParameterValue(i));

if ((pData->hints & PLUGIN_HAS_CUSTOM_UI) != 0 && pData->engine->getOptions().frontendWinId != 0)
pData->transientTryCounter = 1;
@@ -1652,7 +1658,7 @@ void CarlaPlugin::updateOscURL()
{
const String newURL(String(pData->engine->getOscServerPathUDP()) + String("/") + String(pData->id));

osc_send_update_url(pData->osc.data, newURL.toRawUTF8());
osc_send_update_url(pData->oscData, newURL.toRawUTF8());
}

bool CarlaPlugin::waitForOscGuiShow()
@@ -1663,14 +1669,14 @@ bool CarlaPlugin::waitForOscGuiShow()
// wait for UI 'update' call
for (; i < oscUiTimeout/100; ++i)
{
if (pData->osc.data.target != nullptr)
if (pData->oscData.target != nullptr)
{
carla_stdout("CarlaPlugin::waitForOscGuiShow() - got response, asking UI to show itself now");
osc_send_show(pData->osc.data);
osc_send_show(pData->oscData);
return true;
}

if (pData->osc.thread.isThreadRunning())
if (pData->childProcess != nullptr && pData->childProcess->isRunning())
carla_msleep(100);
else
return false;


+ 8
- 7
source/backend/plugin/CarlaPluginBridge.cpp View File

@@ -63,6 +63,7 @@ using juce::StringArray;

CARLA_BACKEND_START_NAMESPACE

#if 0
// -------------------------------------------------------------------------------------------------------------------
// call carla_shm_create with for a XXXXXX temp filename

@@ -357,8 +358,6 @@ public:
{
carla_debug("BridgePlugin::BridgePlugin(%p, %i, %s, %s)", engine, id, BinaryType2Str(btype), PluginType2Str(ptype));

pData->osc.thread.setMode(CarlaPluginThread::PLUGIN_THREAD_BRIDGE);

pData->hints |= PLUGIN_IS_BRIDGE;
}

@@ -2219,6 +2218,7 @@ private:

CARLA_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(BridgePlugin)
};
#endif

CARLA_BACKEND_END_NAMESPACE

@@ -2232,7 +2232,7 @@ CarlaPlugin* CarlaPlugin::newBridge(const Initializer& init, BinaryType btype, P
{
carla_debug("CarlaPlugin::newBridge({%p, \"%s\", \"%s\", \"%s\"}, %s, %s, \"%s\")", init.engine, init.filename, init.name, init.label, BinaryType2Str(btype), PluginType2Str(ptype), bridgeBinary);

#ifndef BUILD_BRIDGE
#if 0 //ndef BUILD_BRIDGE
if (bridgeBinary == nullptr || bridgeBinary[0] == '\0')
{
init.engine->setLastError("Bridge not possible, bridge-binary not found");
@@ -2283,7 +2283,7 @@ CarlaPlugin* CarlaPlugin::newBridge(const Initializer& init, BinaryType btype, P
return nullptr;

// unused
(void)bridgeBinary;
(void)bridgeBinary; (void)btype; (void)ptype;
#endif
}

@@ -2296,11 +2296,12 @@ CarlaPlugin* CarlaPlugin::newBridge(const Initializer& init, BinaryType btype, P
extern int CarlaPluginSetOscBridgeInfo(CarlaPlugin* const plugin, const PluginBridgeOscInfoType type,
const int argc, const lo_arg* const* const argv, const char* const types);

int CarlaPluginSetOscBridgeInfo(CarlaPlugin* const plugin, const PluginBridgeOscInfoType type,
const int argc, const lo_arg* const* const argv, const char* const types)
int CarlaPluginSetOscBridgeInfo(CarlaPlugin* const plugin, const PluginBridgeOscInfoType /*type*/,
const int /*argc*/, const lo_arg* const* const /*argv*/, const char* const /*types*/)
{
CARLA_SAFE_ASSERT(plugin != nullptr && (plugin->getHints() & PLUGIN_IS_BRIDGE) != 0);
return bridgePlugin->setOscPluginBridgeInfo(type, argc, argv, types);
return 0;
//return bridgePlugin->setOscPluginBridgeInfo(type, argc, argv, types);
}

#undef bridgePlugin


+ 6
- 0
source/backend/plugin/CarlaPluginDSSI.cpp View File

@@ -26,6 +26,7 @@

CARLA_BACKEND_START_NAMESPACE

#if 0
// -----------------------------------------------------

class CarlaPluginDSSI : public CarlaPlugin
@@ -2325,6 +2326,7 @@ private:
};

LinkedList<const char*> CarlaPluginDSSI::sMultiSynthList;
#endif

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

@@ -2332,6 +2334,7 @@ CarlaPlugin* CarlaPlugin::newDSSI(const Initializer& init)
{
carla_debug("CarlaPlugin::newDSSI({%p, \"%s\", \"%s\", \"%s\", " P_INT64 "})", init.engine, init.filename, init.name, init.label, init.uniqueId);

#if 0
CarlaPluginDSSI* const plugin(new CarlaPluginDSSI(init.engine, init.id));

if (! plugin->init(init.filename, init.name, init.label))
@@ -2370,6 +2373,9 @@ CarlaPlugin* CarlaPlugin::newDSSI(const Initializer& init)
}

return plugin;
#endif
return nullptr;
(void)init;
}

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


+ 6
- 8
source/backend/plugin/CarlaPluginInternal.cpp View File

@@ -432,13 +432,7 @@ CarlaPlugin::ProtectedData::PostProc::PostProc() noexcept

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

CarlaPlugin::ProtectedData::OSC::OSC(CarlaEngine* const eng, CarlaPlugin* const plug) noexcept
: data(),
thread(eng, plug) {}

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

CarlaPlugin::ProtectedData::ProtectedData(CarlaEngine* const eng, const uint idx, CarlaPlugin* const plug) noexcept
CarlaPlugin::ProtectedData::ProtectedData(CarlaEngine* const eng, const uint idx) noexcept
: engine(eng),
client(nullptr),
id(idx),
@@ -471,13 +465,17 @@ CarlaPlugin::ProtectedData::ProtectedData(CarlaEngine* const eng, const uint idx
custom(),
masterMutex(),
singleMutex(),
#ifndef BUILD_BRIDGE
childProcess(),
oscData(),
#endif
stateSave(),
extNotes(),
postRtEvents(),
#ifndef BUILD_BRIDGE
postProc(),
#endif
osc(eng, plug) {}
leakDetector_ProtectedData() {}

CarlaPlugin::ProtectedData::~ProtectedData() noexcept
{


+ 13
- 15
source/backend/plugin/CarlaPluginInternal.hpp View File

@@ -22,15 +22,19 @@
#include "CarlaPluginThread.hpp"

#include "CarlaLibUtils.hpp"
#include "CarlaMutex.hpp"
#include "CarlaOscUtils.hpp"
#include "CarlaStateUtils.hpp"
#include "CarlaString.hpp"

#include "CarlaMIDI.h"
#include "RtLinkedList.hpp"

#include "juce_audio_basics.h"

using juce::ChildProcess;
using juce::FloatVectorOperations;
using juce::ScopedPointer;

CARLA_BACKEND_START_NAMESPACE

@@ -250,7 +254,12 @@ struct CarlaPlugin::ProtectedData {
CarlaMutex masterMutex; // global master lock
CarlaMutex singleMutex; // small lock used only in processSingle()

StateSave stateSave;
#ifndef BUILD_BRIDGE
ScopedPointer<ChildProcess> childProcess;
CarlaOscData oscData;
#endif

CarlaStateSave stateSave;

struct ExternalNotes {
CarlaMutex mutex;
@@ -297,19 +306,7 @@ struct CarlaPlugin::ProtectedData {
} postProc;
#endif

struct OSC {
CarlaOscData data;
CarlaPluginThread thread;

OSC(CarlaEngine* const engine, CarlaPlugin* const plugin) noexcept;

#ifdef CARLA_PROPER_CPP11_SUPPORT
OSC() = delete;
CARLA_DECLARE_NON_COPY_STRUCT(OSC)
#endif
} osc;

ProtectedData(CarlaEngine* const engine, const uint idx, CarlaPlugin* const plugin) noexcept;
ProtectedData(CarlaEngine* const engine, const uint idx) noexcept;
~ProtectedData() noexcept;

// -------------------------------------------------------------------
@@ -359,8 +356,9 @@ struct CarlaPlugin::ProtectedData {

#ifdef CARLA_PROPER_CPP11_SUPPORT
ProtectedData() = delete;
CARLA_DECLARE_NON_COPY_STRUCT(ProtectedData)
CARLA_DECLARE_NON_COPY_STRUCT(ProtectedData);
#endif
CARLA_LEAK_DETECTOR(ProtectedData);
};

CARLA_BACKEND_END_NAMESPACE


+ 7
- 0
source/backend/plugin/CarlaPluginLV2.cpp View File

@@ -42,6 +42,7 @@ using juce::File;

CARLA_BACKEND_START_NAMESPACE

#if 0
// -----------------------------------------------------

// Maximum default buffer size
@@ -5951,12 +5952,15 @@ int CarlaEngineOsc::handleMsgLv2UridMap(CARLA_ENGINE_OSC_HANDLE_ARGS2)

#undef lv2PluginPtr

#endif

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

CarlaPlugin* CarlaPlugin::newLV2(const Initializer& init)
{
carla_debug("CarlaPlugin::newLV2({%p, \"%s\", \"%s\", " P_INT64 "})", init.engine, init.name, init.label, init.uniqueId);

#if 0
CarlaPluginLV2* const plugin(new CarlaPluginLV2(init.engine, init.id));

if (! plugin->init(init.name, init.label))
@@ -5995,6 +5999,9 @@ CarlaPlugin* CarlaPlugin::newLV2(const Initializer& init)
}

return plugin;
#endif
return nullptr;
(void)init;
}

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


+ 4
- 0
source/backend/plugin/CarlaPluginThread.cpp View File

@@ -15,6 +15,8 @@
* For a full copy of the GNU General Public License see the doc/GPL.txt file.
*/

#if 0

#include "CarlaPlugin.hpp"
#include "CarlaPluginThread.hpp"
#include "CarlaEngine.hpp"
@@ -386,3 +388,5 @@ void CarlaPluginThread::run()
// -----------------------------------------------------------------------

CARLA_BACKEND_END_NAMESPACE

#endif

+ 4
- 0
source/backend/plugin/CarlaPluginThread.hpp View File

@@ -15,6 +15,8 @@
* For a full copy of the GNU General Public License see the doc/GPL.txt file.
*/

#if 0

#ifndef CARLA_PLUGIN_THREAD_HPP_INCLUDED
#define CARLA_PLUGIN_THREAD_HPP_INCLUDED

@@ -73,3 +75,5 @@ private:
CARLA_BACKEND_END_NAMESPACE

#endif // CARLA_PLUGIN_THREAD_HPP_INCLUDED

#endif

+ 7
- 1
source/backend/plugin/CarlaPluginVST2.cpp View File

@@ -40,6 +40,7 @@ using juce::File;

CARLA_BACKEND_START_NAMESPACE

#if 0
// -----------------------------------------------------

const uint PLUGIN_CAN_PROCESS_REPLACING = 0x1000;
@@ -2547,6 +2548,8 @@ private:

CarlaPluginVST2* CarlaPluginVST2::sLastCarlaPluginVST2 = nullptr;

#endif

CARLA_BACKEND_END_NAMESPACE

#endif // ! USE_JUCE_FOR_VST
@@ -2561,7 +2564,7 @@ CarlaPlugin* CarlaPlugin::newVST2(const Initializer& init)

#ifdef USE_JUCE_FOR_VST
return newJuce(init, "VST");
#else
#elif 0 //se
CarlaPluginVST2* const plugin(new CarlaPluginVST2(init.engine, init.id));

if (! plugin->init(init.filename, init.name, init.uniqueId))
@@ -2580,6 +2583,9 @@ CarlaPlugin* CarlaPlugin::newVST2(const Initializer& init)
}

return plugin;
#else
return nullptr;
(void)init;
#endif
}



+ 6
- 14
source/includes/CarlaNative.hpp View File

@@ -40,9 +40,7 @@ public:
CARLA_SAFE_ASSERT(host != nullptr);
}

virtual ~NativePluginClass()
{
}
virtual ~NativePluginClass() {}

protected:
// -------------------------------------------------------------------
@@ -268,8 +266,7 @@ protected:
return;

// unused
(void)bank;
(void)program;
(void)bank; (void)program;
}

virtual void setCustomData(const char* const key, const char* const value)
@@ -281,13 +278,9 @@ protected:
// -------------------------------------------------------------------
// Plugin process calls

virtual void activate()
{
}
virtual void activate() {}

virtual void deactivate()
{
}
virtual void deactivate() {}

virtual void process(float** const inBuffer, float** const outBuffer, const uint32_t frames, const NativeMidiEvent* const midiEvents, const uint32_t midiEventCount) = 0;

@@ -321,13 +314,12 @@ protected:
return;

// unused
(void)bank;
(void)program;
(void)bank; (void)program;
}

virtual void uiSetCustomData(const char* const key, const char* const value)
{
CARLA_SAFE_ASSERT_RETURN(key != nullptr,);
CARLA_SAFE_ASSERT_RETURN(key != nullptr && key[0] != '\0',);
CARLA_SAFE_ASSERT_RETURN(value != nullptr,);
}



+ 1
- 1
source/includes/CarlaNativeExtUI.hpp View File

@@ -58,7 +58,7 @@ protected:
carla_stdout("Trying to start UI using \"%s\"", path.buffer());

CarlaExternalUI::setData(path, getSampleRate(), getUiName());
CarlaExternalUI::startPipeServer();
CarlaExternalUI::startPipeServer(true);
}
else
{


+ 19
- 19
source/utils/CarlaStateUtils.cpp View File

@@ -108,7 +108,7 @@ static const char* xmlSafeStringCharDup(const String& string, const bool toXml)
// -----------------------------------------------------------------------
// StateParameter

StateParameter::StateParameter() noexcept
CarlaStateSave::Parameter::Parameter() noexcept
: isInput(true),
index(-1),
name(nullptr),
@@ -121,7 +121,7 @@ StateParameter::StateParameter() noexcept
value(0.0f) {}
#endif

StateParameter::~StateParameter() noexcept
CarlaStateSave::Parameter::~Parameter() noexcept
{
if (name != nullptr)
{
@@ -138,12 +138,12 @@ StateParameter::~StateParameter() noexcept
// -----------------------------------------------------------------------
// StateCustomData

StateCustomData::StateCustomData() noexcept
CarlaStateSave::CustomData::CustomData() noexcept
: type(nullptr),
key(nullptr),
value(nullptr) {}

StateCustomData::~StateCustomData() noexcept
CarlaStateSave::CustomData::~CustomData() noexcept
{
if (type != nullptr)
{
@@ -165,7 +165,7 @@ StateCustomData::~StateCustomData() noexcept
// -----------------------------------------------------------------------
// StateSave

StateSave::StateSave() noexcept
CarlaStateSave::CarlaStateSave() noexcept
: type(nullptr),
name(nullptr),
label(nullptr),
@@ -189,12 +189,12 @@ StateSave::StateSave() noexcept
parameters(),
customData() {}

StateSave::~StateSave() noexcept
CarlaStateSave::~CarlaStateSave() noexcept
{
clear();
}

void StateSave::clear() noexcept
void CarlaStateSave::clear() noexcept
{
if (type != nullptr)
{
@@ -242,15 +242,15 @@ void StateSave::clear() noexcept
currentMidiBank = -1;
currentMidiProgram = -1;

for (StateParameterItenerator it = parameters.begin(); it.valid(); it.next())
for (ParameterItenerator it = parameters.begin(); it.valid(); it.next())
{
StateParameter* const stateParameter(it.getValue());
Parameter* const stateParameter(it.getValue());
delete stateParameter;
}

for (StateCustomDataItenerator it = customData.begin(); it.valid(); it.next())
for (CustomDataItenerator it = customData.begin(); it.valid(); it.next())
{
StateCustomData* const stateCustomData(it.getValue());
CustomData* const stateCustomData(it.getValue());
delete stateCustomData;
}

@@ -261,7 +261,7 @@ void StateSave::clear() noexcept
// -----------------------------------------------------------------------
// fillFromXmlElement

bool StateSave::fillFromXmlElement(const XmlElement* const xmlElement)
bool CarlaStateSave::fillFromXmlElement(const XmlElement* const xmlElement)
{
CARLA_SAFE_ASSERT_RETURN(xmlElement != nullptr, false);

@@ -386,7 +386,7 @@ bool StateSave::fillFromXmlElement(const XmlElement* const xmlElement)

else if (tag.equalsIgnoreCase("parameter"))
{
StateParameter* const stateParameter(new StateParameter());
Parameter* const stateParameter(new Parameter());

for (XmlElement* xmlSubData = xmlData->getFirstChildElement(); xmlSubData != nullptr; xmlSubData = xmlSubData->getNextElement())
{
@@ -436,7 +436,7 @@ bool StateSave::fillFromXmlElement(const XmlElement* const xmlElement)

else if (tag.equalsIgnoreCase("customdata") || tag.equalsIgnoreCase("custom-data"))
{
StateCustomData* const stateCustomData(new StateCustomData());
CustomData* const stateCustomData(new CustomData());

for (XmlElement* xmlSubData = xmlData->getFirstChildElement(); xmlSubData != nullptr; xmlSubData = xmlSubData->getNextElement())
{
@@ -472,7 +472,7 @@ bool StateSave::fillFromXmlElement(const XmlElement* const xmlElement)
// -----------------------------------------------------------------------
// fillXmlStringFromStateSave

String StateSave::toString() const
String CarlaStateSave::toString() const
{
String content;

@@ -557,9 +557,9 @@ String StateSave::toString() const
}
#endif

for (StateParameterItenerator it = parameters.begin(); it.valid(); it.next())
for (ParameterItenerator it = parameters.begin(); it.valid(); it.next())
{
StateParameter* const stateParameter(it.getValue());
Parameter* const stateParameter(it.getValue());

String parameterXml("\n"" <Parameter>\n");

@@ -607,9 +607,9 @@ String StateSave::toString() const
content << midiProgramXml;
}

for (StateCustomDataItenerator it = customData.begin(); it.valid(); it.next())
for (CustomDataItenerator it = customData.begin(); it.valid(); it.next())
{
StateCustomData* const stateCustomData(it.getValue());
CustomData* const stateCustomData(it.getValue());
CARLA_SAFE_ASSERT_CONTINUE(stateCustomData->type != nullptr && stateCustomData->type[0] != '\0');
CARLA_SAFE_ASSERT_CONTINUE(stateCustomData->key != nullptr && stateCustomData->key[0] != '\0');
CARLA_SAFE_ASSERT_CONTINUE(stateCustomData->value != nullptr);


+ 30
- 30
source/utils/CarlaStateUtils.hpp View File

@@ -27,41 +27,41 @@ CARLA_BACKEND_START_NAMESPACE

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

struct StateParameter {
bool isInput;
int32_t index;
const char* name;
const char* symbol;
float value;
struct CarlaStateSave {
struct Parameter {
bool isInput;
int32_t index;
const char* name;
const char* symbol;
float value;
#ifndef BUILD_BRIDGE
uint8_t midiChannel;
int16_t midiCC;
uint8_t midiChannel;
int16_t midiCC;
#endif

StateParameter() noexcept;
~StateParameter() noexcept;
Parameter() noexcept;
~Parameter() noexcept;

CARLA_DECLARE_NON_COPY_STRUCT(StateParameter)
};
CARLA_DECLARE_NON_COPY_STRUCT(Parameter)
};

struct StateCustomData {
const char* type;
const char* key;
const char* value;
typedef LinkedList<Parameter*> ParameterList;
typedef LinkedList<Parameter*>::Itenerator ParameterItenerator;

StateCustomData() noexcept;
~StateCustomData() noexcept;
struct CustomData {
const char* type;
const char* key;
const char* value;

CARLA_DECLARE_NON_COPY_STRUCT(StateCustomData)
};
CustomData() noexcept;
~CustomData() noexcept;

typedef LinkedList<StateParameter*> StateParameterList;
typedef LinkedList<StateCustomData*> StateCustomDataList;
CARLA_DECLARE_NON_COPY_STRUCT(CustomData)
};

typedef LinkedList<StateParameter*>::Itenerator StateParameterItenerator;
typedef LinkedList<StateCustomData*>::Itenerator StateCustomDataItenerator;
typedef LinkedList<CustomData*> CustomDataList;
typedef LinkedList<CustomData*>::Itenerator CustomDataItenerator;

struct StateSave {
const char* type;
const char* name;
const char* label;
@@ -85,17 +85,17 @@ struct StateSave {
int32_t currentMidiProgram;
const char* chunk;

StateParameterList parameters;
StateCustomDataList customData;
ParameterList parameters;
CustomDataList customData;

StateSave() noexcept;
~StateSave() noexcept;
CarlaStateSave() noexcept;
~CarlaStateSave() noexcept;
void clear() noexcept;

bool fillFromXmlElement(const juce::XmlElement* const xmlElement);
juce::String toString() const;

CARLA_DECLARE_NON_COPY_STRUCT(StateSave)
CARLA_DECLARE_NON_COPY_STRUCT(CarlaStateSave)
};

static inline


Loading…
Cancel
Save