@@ -21,6 +21,7 @@ endif | |||||
# ---------------------------------------------------------------------------------------------------------------------------- | # ---------------------------------------------------------------------------------------------------------------------------- | ||||
PREFIX := /usr/local | PREFIX := /usr/local | ||||
LIBDIR := $(PREFIX)/lib | |||||
DESTDIR := | DESTDIR := | ||||
BINDIR := $(CURDIR)/bin | BINDIR := $(CURDIR)/bin | ||||
@@ -47,11 +47,7 @@ CARLA_BACKEND_START_NAMESPACE | |||||
class CarlaEngineAudioPort; | class CarlaEngineAudioPort; | ||||
class CarlaEngineCVPort; | class CarlaEngineCVPort; | ||||
class CarlaEngineEventPort; | class CarlaEngineEventPort; | ||||
/*! | |||||
* Save state data. | |||||
*/ | |||||
struct StateSave; | |||||
struct CarlaStateSave; | |||||
// ----------------------------------------------------------------------- | // ----------------------------------------------------------------------- | ||||
@@ -396,14 +392,14 @@ public: | |||||
* | * | ||||
* @see loadStateSave() | * @see loadStateSave() | ||||
*/ | */ | ||||
const StateSave& getStateSave(); | |||||
const CarlaStateSave& getStateSave(); | |||||
/*! | /*! | ||||
* Get the plugin's save state. | * Get the plugin's save state. | ||||
* | * | ||||
* @see getStateSave() | * @see getStateSave() | ||||
*/ | */ | ||||
void loadStateSave(const StateSave& stateSave); | |||||
void loadStateSave(const CarlaStateSave& stateSave); | |||||
/*! | /*! | ||||
* Save the current plugin state to @a filename. | * Save the current plugin state to @a filename. | ||||
@@ -1803,7 +1803,7 @@ bool CarlaEngine::loadProjectInternal(juce::XmlDocument& xmlDoc) | |||||
if (isPreset || tagName.equalsIgnoreCase("plugin")) | if (isPreset || tagName.equalsIgnoreCase("plugin")) | ||||
{ | { | ||||
StateSave stateSave; | |||||
CarlaStateSave stateSave; | |||||
stateSave.fillFromXmlElement(isPreset ? xmlElement.get() : elem); | stateSave.fillFromXmlElement(isPreset ? xmlElement.get() : elem); | ||||
callback(ENGINE_CALLBACK_IDLE, 0, 0, 0, 0.0f, nullptr); | callback(ENGINE_CALLBACK_IDLE, 0, 0, 0, 0.0f, nullptr); | ||||
@@ -1058,7 +1058,7 @@ public: | |||||
if (needsReinit) | if (needsReinit) | ||||
{ | { | ||||
// reload plugin to recreate its ports | // reload plugin to recreate its ports | ||||
const StateSave& saveState(plugin->getStateSave()); | |||||
const CarlaStateSave& saveState(plugin->getStateSave()); | |||||
plugin->reload(); | plugin->reload(); | ||||
plugin->loadStateSave(saveState); | plugin->loadStateSave(saveState); | ||||
} | } | ||||
@@ -388,12 +388,6 @@ int CarlaEngineOsc::handleMessage(const bool isTCP, const char* const path, cons | |||||
if (std::strcmp(bmethod, "error") == 0) | if (std::strcmp(bmethod, "error") == 0) | ||||
return CarlaPluginSetOscBridgeInfo(plugin, kPluginBridgeOscError, argc, argv, types); | 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 | #endif | ||||
carla_stderr("CarlaEngineOsc::handleMessage() - unsupported OSC method '%s'", method); | carla_stderr("CarlaEngineOsc::handleMessage() - unsupported OSC method '%s'", method); | ||||
@@ -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); | 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 handleMsgUpdate(CARLA_ENGINE_OSC_HANDLE_ARGS2, const lo_address source); | ||||
int handleMsgExiting(CARLA_ENGINE_OSC_HANDLE_ARGS1); | 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 handleMsgRegister(const bool isTCP, const int argc, const lo_arg* const* const argv, const char* const types, const lo_address source); | ||||
int handleMsgUnregister(); | int handleMsgUnregister(); | ||||
// Common OSC methods (DSSI and bridge UIs) | |||||
int handleMsgConfigure(CARLA_ENGINE_OSC_HANDLE_ARGS2); | int handleMsgConfigure(CARLA_ENGINE_OSC_HANDLE_ARGS2); | ||||
int handleMsgControl(CARLA_ENGINE_OSC_HANDLE_ARGS2); | int handleMsgControl(CARLA_ENGINE_OSC_HANDLE_ARGS2); | ||||
int handleMsgProgram(CARLA_ENGINE_OSC_HANDLE_ARGS2); | int handleMsgProgram(CARLA_ENGINE_OSC_HANDLE_ARGS2); | ||||
int handleMsgMidi(CARLA_ENGINE_OSC_HANDLE_ARGS2); | int handleMsgMidi(CARLA_ENGINE_OSC_HANDLE_ARGS2); | ||||
// Internal methods | |||||
int handleMsgSetActive(CARLA_ENGINE_OSC_HANDLE_ARGS2); | int handleMsgSetActive(CARLA_ENGINE_OSC_HANDLE_ARGS2); | ||||
int handleMsgSetDryWet(CARLA_ENGINE_OSC_HANDLE_ARGS2); | int handleMsgSetDryWet(CARLA_ENGINE_OSC_HANDLE_ARGS2); | ||||
int handleMsgSetVolume(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 handleMsgSetMidiProgram(CARLA_ENGINE_OSC_HANDLE_ARGS2); | ||||
int handleMsgNoteOn(CARLA_ENGINE_OSC_HANDLE_ARGS2); | int handleMsgNoteOn(CARLA_ENGINE_OSC_HANDLE_ARGS2); | ||||
int handleMsgNoteOff(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 | #endif | ||||
// ----------------------------------------------------------------------- | // ----------------------------------------------------------------------- | ||||
@@ -73,7 +73,7 @@ struct ParamSymbol { | |||||
// Constructor and destructor | // Constructor and destructor | ||||
CarlaPlugin::CarlaPlugin(CarlaEngine* const engine, const uint id) | 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_RETURN(engine != nullptr,); | ||||
CARLA_SAFE_ASSERT(id < engine->getMaxPluginNumber()); | 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(); | pData->stateSave.clear(); | ||||
prepareForSave(); | prepareForSave(); | ||||
@@ -558,7 +558,7 @@ const StateSave& CarlaPlugin::getStateSave() | |||||
if ((paramData.hints & PARAMETER_IS_ENABLED) == 0) | if ((paramData.hints & PARAMETER_IS_ENABLED) == 0) | ||||
continue; | continue; | ||||
StateParameter* const stateParameter(new StateParameter()); | |||||
CarlaStateSave::Parameter* const stateParameter(new CarlaStateSave::Parameter()); | |||||
stateParameter->isInput = (paramData.type == PARAMETER_INPUT); | stateParameter->isInput = (paramData.type == PARAMETER_INPUT); | ||||
stateParameter->index = paramData.index; | stateParameter->index = paramData.index; | ||||
@@ -588,7 +588,7 @@ const StateSave& CarlaPlugin::getStateSave() | |||||
{ | { | ||||
const CustomData& cData(it.getValue()); | const CustomData& cData(it.getValue()); | ||||
StateCustomData* stateCustomData(new StateCustomData()); | |||||
CarlaStateSave::CustomData* stateCustomData(new CarlaStateSave::CustomData()); | |||||
stateCustomData->type = carla_strdup(cData.type); | stateCustomData->type = carla_strdup(cData.type); | ||||
stateCustomData->key = carla_strdup(cData.key); | stateCustomData->key = carla_strdup(cData.key); | ||||
@@ -600,7 +600,7 @@ const StateSave& CarlaPlugin::getStateSave() | |||||
return pData->stateSave; | return pData->stateSave; | ||||
} | } | ||||
void CarlaPlugin::loadStateSave(const StateSave& stateSave) | |||||
void CarlaPlugin::loadStateSave(const CarlaStateSave& stateSave) | |||||
{ | { | ||||
char strBuf[STR_MAX+1]; | char strBuf[STR_MAX+1]; | ||||
const bool usesMultiProgs(pData->extraHints & PLUGIN_EXTRA_HINT_USES_MULTI_PROGS); | 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) | // 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); | const char* const key(stateCustomData->key); | ||||
bool wantData = false; | bool wantData = false; | ||||
@@ -688,9 +688,9 @@ void CarlaPlugin::loadStateSave(const StateSave& stateSave) | |||||
const float sampleRate(static_cast<float>(pData->engine->getSampleRate())); | 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; | int32_t index = -1; | ||||
@@ -778,9 +778,9 @@ void CarlaPlugin::loadStateSave(const StateSave& stateSave) | |||||
// --------------------------------------------------------------- | // --------------------------------------------------------------- | ||||
// Part 5 - set custom data | // 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); | 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)) | 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); | CarlaString uiTitle(pData->name); | ||||
uiTitle += " (GUI)"; | 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; | pData->transientTryCounter = 0; | ||||
} | } | ||||
@@ -1572,14 +1578,14 @@ void CarlaPlugin::updateOscData(const lo_address& source, const char* const url) | |||||
// FIXME - remove debug prints later | // FIXME - remove debug prints later | ||||
carla_stdout("CarlaPlugin::updateOscData(%p, \"%s\")", source, url); | carla_stdout("CarlaPlugin::updateOscData(%p, \"%s\")", source, url); | ||||
pData->osc.data.clear(); | |||||
pData->oscData.clear(); | |||||
const int proto = lo_address_get_protocol(source); | const int proto = lo_address_get_protocol(source); | ||||
{ | { | ||||
const char* host = lo_address_get_hostname(source); | const char* host = lo_address_get_hostname(source); | ||||
const char* port = lo_address_get_port(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); | 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* host = lo_url_get_hostname(url); | ||||
char* port = lo_url_get_port(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(host); | ||||
std::free(port); | std::free(port); | ||||
@@ -1607,7 +1613,7 @@ void CarlaPlugin::updateOscData(const lo_address& source, const char* const url) | |||||
if (updateOscDataExtra()) | if (updateOscDataExtra()) | ||||
pData->engine->idleOsc(); | 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()) | 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); | CARLA_SAFE_ASSERT_CONTINUE(cData.value != nullptr); | ||||
if (std::strcmp(cData.type, CUSTOM_DATA_TYPE_STRING) == 0) | 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) | 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) | if (pData->midiprog.current >= 0) | ||||
{ | { | ||||
const MidiProgramData& curMidiProg(pData->midiprog.getCurrent()); | const MidiProgramData& curMidiProg(pData->midiprog.getCurrent()); | ||||
if (getType() == PLUGIN_DSSI) | if (getType() == PLUGIN_DSSI) | ||||
osc_send_program(pData->osc.data, curMidiProg.bank, curMidiProg.program); | |||||
osc_send_program(pData->oscData, curMidiProg.bank, curMidiProg.program); | |||||
else | 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) | 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) | if ((pData->hints & PLUGIN_HAS_CUSTOM_UI) != 0 && pData->engine->getOptions().frontendWinId != 0) | ||||
pData->transientTryCounter = 1; | pData->transientTryCounter = 1; | ||||
@@ -1652,7 +1658,7 @@ void CarlaPlugin::updateOscURL() | |||||
{ | { | ||||
const String newURL(String(pData->engine->getOscServerPathUDP()) + String("/") + String(pData->id)); | 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() | bool CarlaPlugin::waitForOscGuiShow() | ||||
@@ -1663,14 +1669,14 @@ bool CarlaPlugin::waitForOscGuiShow() | |||||
// wait for UI 'update' call | // wait for UI 'update' call | ||||
for (; i < oscUiTimeout/100; ++i) | 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"); | 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; | return true; | ||||
} | } | ||||
if (pData->osc.thread.isThreadRunning()) | |||||
if (pData->childProcess != nullptr && pData->childProcess->isRunning()) | |||||
carla_msleep(100); | carla_msleep(100); | ||||
else | else | ||||
return false; | return false; | ||||
@@ -63,6 +63,7 @@ using juce::StringArray; | |||||
CARLA_BACKEND_START_NAMESPACE | CARLA_BACKEND_START_NAMESPACE | ||||
#if 0 | |||||
// ------------------------------------------------------------------------------------------------------------------- | // ------------------------------------------------------------------------------------------------------------------- | ||||
// call carla_shm_create with for a XXXXXX temp filename | // 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)); | 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; | pData->hints |= PLUGIN_IS_BRIDGE; | ||||
} | } | ||||
@@ -2219,6 +2218,7 @@ private: | |||||
CARLA_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(BridgePlugin) | CARLA_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(BridgePlugin) | ||||
}; | }; | ||||
#endif | |||||
CARLA_BACKEND_END_NAMESPACE | 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); | 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') | if (bridgeBinary == nullptr || bridgeBinary[0] == '\0') | ||||
{ | { | ||||
init.engine->setLastError("Bridge not possible, bridge-binary not found"); | 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; | return nullptr; | ||||
// unused | // unused | ||||
(void)bridgeBinary; | |||||
(void)bridgeBinary; (void)btype; (void)ptype; | |||||
#endif | #endif | ||||
} | } | ||||
@@ -2296,11 +2296,12 @@ CarlaPlugin* CarlaPlugin::newBridge(const Initializer& init, BinaryType btype, P | |||||
extern int CarlaPluginSetOscBridgeInfo(CarlaPlugin* const plugin, const PluginBridgeOscInfoType type, | extern int CarlaPluginSetOscBridgeInfo(CarlaPlugin* const plugin, const PluginBridgeOscInfoType type, | ||||
const int argc, const lo_arg* const* const argv, const char* const types); | 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); | 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 | #undef bridgePlugin | ||||
@@ -26,6 +26,7 @@ | |||||
CARLA_BACKEND_START_NAMESPACE | CARLA_BACKEND_START_NAMESPACE | ||||
#if 0 | |||||
// ----------------------------------------------------- | // ----------------------------------------------------- | ||||
class CarlaPluginDSSI : public CarlaPlugin | class CarlaPluginDSSI : public CarlaPlugin | ||||
@@ -2325,6 +2326,7 @@ private: | |||||
}; | }; | ||||
LinkedList<const char*> CarlaPluginDSSI::sMultiSynthList; | 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); | 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)); | CarlaPluginDSSI* const plugin(new CarlaPluginDSSI(init.engine, init.id)); | ||||
if (! plugin->init(init.filename, init.name, init.label)) | if (! plugin->init(init.filename, init.name, init.label)) | ||||
@@ -2370,6 +2373,9 @@ CarlaPlugin* CarlaPlugin::newDSSI(const Initializer& init) | |||||
} | } | ||||
return plugin; | return plugin; | ||||
#endif | |||||
return nullptr; | |||||
(void)init; | |||||
} | } | ||||
// ------------------------------------------------------------------------------------------------------------------- | // ------------------------------------------------------------------------------------------------------------------- | ||||
@@ -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), | : engine(eng), | ||||
client(nullptr), | client(nullptr), | ||||
id(idx), | id(idx), | ||||
@@ -471,13 +465,17 @@ CarlaPlugin::ProtectedData::ProtectedData(CarlaEngine* const eng, const uint idx | |||||
custom(), | custom(), | ||||
masterMutex(), | masterMutex(), | ||||
singleMutex(), | singleMutex(), | ||||
#ifndef BUILD_BRIDGE | |||||
childProcess(), | |||||
oscData(), | |||||
#endif | |||||
stateSave(), | stateSave(), | ||||
extNotes(), | extNotes(), | ||||
postRtEvents(), | postRtEvents(), | ||||
#ifndef BUILD_BRIDGE | #ifndef BUILD_BRIDGE | ||||
postProc(), | postProc(), | ||||
#endif | #endif | ||||
osc(eng, plug) {} | |||||
leakDetector_ProtectedData() {} | |||||
CarlaPlugin::ProtectedData::~ProtectedData() noexcept | CarlaPlugin::ProtectedData::~ProtectedData() noexcept | ||||
{ | { | ||||
@@ -22,15 +22,19 @@ | |||||
#include "CarlaPluginThread.hpp" | #include "CarlaPluginThread.hpp" | ||||
#include "CarlaLibUtils.hpp" | #include "CarlaLibUtils.hpp" | ||||
#include "CarlaMutex.hpp" | |||||
#include "CarlaOscUtils.hpp" | #include "CarlaOscUtils.hpp" | ||||
#include "CarlaStateUtils.hpp" | #include "CarlaStateUtils.hpp" | ||||
#include "CarlaString.hpp" | |||||
#include "CarlaMIDI.h" | #include "CarlaMIDI.h" | ||||
#include "RtLinkedList.hpp" | #include "RtLinkedList.hpp" | ||||
#include "juce_audio_basics.h" | #include "juce_audio_basics.h" | ||||
using juce::ChildProcess; | |||||
using juce::FloatVectorOperations; | using juce::FloatVectorOperations; | ||||
using juce::ScopedPointer; | |||||
CARLA_BACKEND_START_NAMESPACE | CARLA_BACKEND_START_NAMESPACE | ||||
@@ -250,7 +254,12 @@ struct CarlaPlugin::ProtectedData { | |||||
CarlaMutex masterMutex; // global master lock | CarlaMutex masterMutex; // global master lock | ||||
CarlaMutex singleMutex; // small lock used only in processSingle() | CarlaMutex singleMutex; // small lock used only in processSingle() | ||||
StateSave stateSave; | |||||
#ifndef BUILD_BRIDGE | |||||
ScopedPointer<ChildProcess> childProcess; | |||||
CarlaOscData oscData; | |||||
#endif | |||||
CarlaStateSave stateSave; | |||||
struct ExternalNotes { | struct ExternalNotes { | ||||
CarlaMutex mutex; | CarlaMutex mutex; | ||||
@@ -297,19 +306,7 @@ struct CarlaPlugin::ProtectedData { | |||||
} postProc; | } postProc; | ||||
#endif | #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; | ~ProtectedData() noexcept; | ||||
// ------------------------------------------------------------------- | // ------------------------------------------------------------------- | ||||
@@ -359,8 +356,9 @@ struct CarlaPlugin::ProtectedData { | |||||
#ifdef CARLA_PROPER_CPP11_SUPPORT | #ifdef CARLA_PROPER_CPP11_SUPPORT | ||||
ProtectedData() = delete; | ProtectedData() = delete; | ||||
CARLA_DECLARE_NON_COPY_STRUCT(ProtectedData) | |||||
CARLA_DECLARE_NON_COPY_STRUCT(ProtectedData); | |||||
#endif | #endif | ||||
CARLA_LEAK_DETECTOR(ProtectedData); | |||||
}; | }; | ||||
CARLA_BACKEND_END_NAMESPACE | CARLA_BACKEND_END_NAMESPACE | ||||
@@ -42,6 +42,7 @@ using juce::File; | |||||
CARLA_BACKEND_START_NAMESPACE | CARLA_BACKEND_START_NAMESPACE | ||||
#if 0 | |||||
// ----------------------------------------------------- | // ----------------------------------------------------- | ||||
// Maximum default buffer size | // Maximum default buffer size | ||||
@@ -5951,12 +5952,15 @@ int CarlaEngineOsc::handleMsgLv2UridMap(CARLA_ENGINE_OSC_HANDLE_ARGS2) | |||||
#undef lv2PluginPtr | #undef lv2PluginPtr | ||||
#endif | |||||
// ------------------------------------------------------------------------------------------------------------------- | // ------------------------------------------------------------------------------------------------------------------- | ||||
CarlaPlugin* CarlaPlugin::newLV2(const Initializer& init) | CarlaPlugin* CarlaPlugin::newLV2(const Initializer& init) | ||||
{ | { | ||||
carla_debug("CarlaPlugin::newLV2({%p, \"%s\", \"%s\", " P_INT64 "})", init.engine, init.name, init.label, init.uniqueId); | 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)); | CarlaPluginLV2* const plugin(new CarlaPluginLV2(init.engine, init.id)); | ||||
if (! plugin->init(init.name, init.label)) | if (! plugin->init(init.name, init.label)) | ||||
@@ -5995,6 +5999,9 @@ CarlaPlugin* CarlaPlugin::newLV2(const Initializer& init) | |||||
} | } | ||||
return plugin; | return plugin; | ||||
#endif | |||||
return nullptr; | |||||
(void)init; | |||||
} | } | ||||
// ------------------------------------------------------------------------------------------------------------------- | // ------------------------------------------------------------------------------------------------------------------- | ||||
@@ -15,6 +15,8 @@ | |||||
* For a full copy of the GNU General Public License see the doc/GPL.txt file. | * For a full copy of the GNU General Public License see the doc/GPL.txt file. | ||||
*/ | */ | ||||
#if 0 | |||||
#include "CarlaPlugin.hpp" | #include "CarlaPlugin.hpp" | ||||
#include "CarlaPluginThread.hpp" | #include "CarlaPluginThread.hpp" | ||||
#include "CarlaEngine.hpp" | #include "CarlaEngine.hpp" | ||||
@@ -386,3 +388,5 @@ void CarlaPluginThread::run() | |||||
// ----------------------------------------------------------------------- | // ----------------------------------------------------------------------- | ||||
CARLA_BACKEND_END_NAMESPACE | CARLA_BACKEND_END_NAMESPACE | ||||
#endif |
@@ -15,6 +15,8 @@ | |||||
* For a full copy of the GNU General Public License see the doc/GPL.txt file. | * For a full copy of the GNU General Public License see the doc/GPL.txt file. | ||||
*/ | */ | ||||
#if 0 | |||||
#ifndef CARLA_PLUGIN_THREAD_HPP_INCLUDED | #ifndef CARLA_PLUGIN_THREAD_HPP_INCLUDED | ||||
#define CARLA_PLUGIN_THREAD_HPP_INCLUDED | #define CARLA_PLUGIN_THREAD_HPP_INCLUDED | ||||
@@ -73,3 +75,5 @@ private: | |||||
CARLA_BACKEND_END_NAMESPACE | CARLA_BACKEND_END_NAMESPACE | ||||
#endif // CARLA_PLUGIN_THREAD_HPP_INCLUDED | #endif // CARLA_PLUGIN_THREAD_HPP_INCLUDED | ||||
#endif |
@@ -40,6 +40,7 @@ using juce::File; | |||||
CARLA_BACKEND_START_NAMESPACE | CARLA_BACKEND_START_NAMESPACE | ||||
#if 0 | |||||
// ----------------------------------------------------- | // ----------------------------------------------------- | ||||
const uint PLUGIN_CAN_PROCESS_REPLACING = 0x1000; | const uint PLUGIN_CAN_PROCESS_REPLACING = 0x1000; | ||||
@@ -2547,6 +2548,8 @@ private: | |||||
CarlaPluginVST2* CarlaPluginVST2::sLastCarlaPluginVST2 = nullptr; | CarlaPluginVST2* CarlaPluginVST2::sLastCarlaPluginVST2 = nullptr; | ||||
#endif | |||||
CARLA_BACKEND_END_NAMESPACE | CARLA_BACKEND_END_NAMESPACE | ||||
#endif // ! USE_JUCE_FOR_VST | #endif // ! USE_JUCE_FOR_VST | ||||
@@ -2561,7 +2564,7 @@ CarlaPlugin* CarlaPlugin::newVST2(const Initializer& init) | |||||
#ifdef USE_JUCE_FOR_VST | #ifdef USE_JUCE_FOR_VST | ||||
return newJuce(init, "VST"); | return newJuce(init, "VST"); | ||||
#else | |||||
#elif 0 //se | |||||
CarlaPluginVST2* const plugin(new CarlaPluginVST2(init.engine, init.id)); | CarlaPluginVST2* const plugin(new CarlaPluginVST2(init.engine, init.id)); | ||||
if (! plugin->init(init.filename, init.name, init.uniqueId)) | if (! plugin->init(init.filename, init.name, init.uniqueId)) | ||||
@@ -2580,6 +2583,9 @@ CarlaPlugin* CarlaPlugin::newVST2(const Initializer& init) | |||||
} | } | ||||
return plugin; | return plugin; | ||||
#else | |||||
return nullptr; | |||||
(void)init; | |||||
#endif | #endif | ||||
} | } | ||||
@@ -40,9 +40,7 @@ public: | |||||
CARLA_SAFE_ASSERT(host != nullptr); | CARLA_SAFE_ASSERT(host != nullptr); | ||||
} | } | ||||
virtual ~NativePluginClass() | |||||
{ | |||||
} | |||||
virtual ~NativePluginClass() {} | |||||
protected: | protected: | ||||
// ------------------------------------------------------------------- | // ------------------------------------------------------------------- | ||||
@@ -268,8 +266,7 @@ protected: | |||||
return; | return; | ||||
// unused | // unused | ||||
(void)bank; | |||||
(void)program; | |||||
(void)bank; (void)program; | |||||
} | } | ||||
virtual void setCustomData(const char* const key, const char* const value) | virtual void setCustomData(const char* const key, const char* const value) | ||||
@@ -281,13 +278,9 @@ protected: | |||||
// ------------------------------------------------------------------- | // ------------------------------------------------------------------- | ||||
// Plugin process calls | // 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; | 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; | return; | ||||
// unused | // unused | ||||
(void)bank; | |||||
(void)program; | |||||
(void)bank; (void)program; | |||||
} | } | ||||
virtual void uiSetCustomData(const char* const key, const char* const value) | 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,); | CARLA_SAFE_ASSERT_RETURN(value != nullptr,); | ||||
} | } | ||||
@@ -58,7 +58,7 @@ protected: | |||||
carla_stdout("Trying to start UI using \"%s\"", path.buffer()); | carla_stdout("Trying to start UI using \"%s\"", path.buffer()); | ||||
CarlaExternalUI::setData(path, getSampleRate(), getUiName()); | CarlaExternalUI::setData(path, getSampleRate(), getUiName()); | ||||
CarlaExternalUI::startPipeServer(); | |||||
CarlaExternalUI::startPipeServer(true); | |||||
} | } | ||||
else | else | ||||
{ | { | ||||
@@ -108,7 +108,7 @@ static const char* xmlSafeStringCharDup(const String& string, const bool toXml) | |||||
// ----------------------------------------------------------------------- | // ----------------------------------------------------------------------- | ||||
// StateParameter | // StateParameter | ||||
StateParameter::StateParameter() noexcept | |||||
CarlaStateSave::Parameter::Parameter() noexcept | |||||
: isInput(true), | : isInput(true), | ||||
index(-1), | index(-1), | ||||
name(nullptr), | name(nullptr), | ||||
@@ -121,7 +121,7 @@ StateParameter::StateParameter() noexcept | |||||
value(0.0f) {} | value(0.0f) {} | ||||
#endif | #endif | ||||
StateParameter::~StateParameter() noexcept | |||||
CarlaStateSave::Parameter::~Parameter() noexcept | |||||
{ | { | ||||
if (name != nullptr) | if (name != nullptr) | ||||
{ | { | ||||
@@ -138,12 +138,12 @@ StateParameter::~StateParameter() noexcept | |||||
// ----------------------------------------------------------------------- | // ----------------------------------------------------------------------- | ||||
// StateCustomData | // StateCustomData | ||||
StateCustomData::StateCustomData() noexcept | |||||
CarlaStateSave::CustomData::CustomData() noexcept | |||||
: type(nullptr), | : type(nullptr), | ||||
key(nullptr), | key(nullptr), | ||||
value(nullptr) {} | value(nullptr) {} | ||||
StateCustomData::~StateCustomData() noexcept | |||||
CarlaStateSave::CustomData::~CustomData() noexcept | |||||
{ | { | ||||
if (type != nullptr) | if (type != nullptr) | ||||
{ | { | ||||
@@ -165,7 +165,7 @@ StateCustomData::~StateCustomData() noexcept | |||||
// ----------------------------------------------------------------------- | // ----------------------------------------------------------------------- | ||||
// StateSave | // StateSave | ||||
StateSave::StateSave() noexcept | |||||
CarlaStateSave::CarlaStateSave() noexcept | |||||
: type(nullptr), | : type(nullptr), | ||||
name(nullptr), | name(nullptr), | ||||
label(nullptr), | label(nullptr), | ||||
@@ -189,12 +189,12 @@ StateSave::StateSave() noexcept | |||||
parameters(), | parameters(), | ||||
customData() {} | customData() {} | ||||
StateSave::~StateSave() noexcept | |||||
CarlaStateSave::~CarlaStateSave() noexcept | |||||
{ | { | ||||
clear(); | clear(); | ||||
} | } | ||||
void StateSave::clear() noexcept | |||||
void CarlaStateSave::clear() noexcept | |||||
{ | { | ||||
if (type != nullptr) | if (type != nullptr) | ||||
{ | { | ||||
@@ -242,15 +242,15 @@ void StateSave::clear() noexcept | |||||
currentMidiBank = -1; | currentMidiBank = -1; | ||||
currentMidiProgram = -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; | 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; | delete stateCustomData; | ||||
} | } | ||||
@@ -261,7 +261,7 @@ void StateSave::clear() noexcept | |||||
// ----------------------------------------------------------------------- | // ----------------------------------------------------------------------- | ||||
// fillFromXmlElement | // fillFromXmlElement | ||||
bool StateSave::fillFromXmlElement(const XmlElement* const xmlElement) | |||||
bool CarlaStateSave::fillFromXmlElement(const XmlElement* const xmlElement) | |||||
{ | { | ||||
CARLA_SAFE_ASSERT_RETURN(xmlElement != nullptr, false); | CARLA_SAFE_ASSERT_RETURN(xmlElement != nullptr, false); | ||||
@@ -386,7 +386,7 @@ bool StateSave::fillFromXmlElement(const XmlElement* const xmlElement) | |||||
else if (tag.equalsIgnoreCase("parameter")) | 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()) | 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")) | 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()) | for (XmlElement* xmlSubData = xmlData->getFirstChildElement(); xmlSubData != nullptr; xmlSubData = xmlSubData->getNextElement()) | ||||
{ | { | ||||
@@ -472,7 +472,7 @@ bool StateSave::fillFromXmlElement(const XmlElement* const xmlElement) | |||||
// ----------------------------------------------------------------------- | // ----------------------------------------------------------------------- | ||||
// fillXmlStringFromStateSave | // fillXmlStringFromStateSave | ||||
String StateSave::toString() const | |||||
String CarlaStateSave::toString() const | |||||
{ | { | ||||
String content; | String content; | ||||
@@ -557,9 +557,9 @@ String StateSave::toString() const | |||||
} | } | ||||
#endif | #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"); | String parameterXml("\n"" <Parameter>\n"); | ||||
@@ -607,9 +607,9 @@ String StateSave::toString() const | |||||
content << midiProgramXml; | 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->type != nullptr && stateCustomData->type[0] != '\0'); | ||||
CARLA_SAFE_ASSERT_CONTINUE(stateCustomData->key != nullptr && stateCustomData->key[0] != '\0'); | CARLA_SAFE_ASSERT_CONTINUE(stateCustomData->key != nullptr && stateCustomData->key[0] != '\0'); | ||||
CARLA_SAFE_ASSERT_CONTINUE(stateCustomData->value != nullptr); | CARLA_SAFE_ASSERT_CONTINUE(stateCustomData->value != nullptr); | ||||
@@ -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 | #ifndef BUILD_BRIDGE | ||||
uint8_t midiChannel; | |||||
int16_t midiCC; | |||||
uint8_t midiChannel; | |||||
int16_t midiCC; | |||||
#endif | #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* type; | ||||
const char* name; | const char* name; | ||||
const char* label; | const char* label; | ||||
@@ -85,17 +85,17 @@ struct StateSave { | |||||
int32_t currentMidiProgram; | int32_t currentMidiProgram; | ||||
const char* chunk; | const char* chunk; | ||||
StateParameterList parameters; | |||||
StateCustomDataList customData; | |||||
ParameterList parameters; | |||||
CustomDataList customData; | |||||
StateSave() noexcept; | |||||
~StateSave() noexcept; | |||||
CarlaStateSave() noexcept; | |||||
~CarlaStateSave() noexcept; | |||||
void clear() noexcept; | void clear() noexcept; | ||||
bool fillFromXmlElement(const juce::XmlElement* const xmlElement); | bool fillFromXmlElement(const juce::XmlElement* const xmlElement); | ||||
juce::String toString() const; | juce::String toString() const; | ||||
CARLA_DECLARE_NON_COPY_STRUCT(StateSave) | |||||
CARLA_DECLARE_NON_COPY_STRUCT(CarlaStateSave) | |||||
}; | }; | ||||
static inline | static inline | ||||