@@ -41,17 +41,16 @@ struct ParamSymbol { | |||||
uint32_t index; | uint32_t index; | ||||
const char* symbol; | const char* symbol; | ||||
ParamSymbol(uint32_t index_, const char* symbol_) | |||||
: index(index_), | |||||
symbol(carla_strdup(symbol_)) {} | |||||
ParamSymbol(uint32_t i, const char* s) | |||||
: index(i), | |||||
symbol(carla_strdup(s)) {} | |||||
void free() | |||||
~ParamSymbol() | |||||
{ | { | ||||
if (symbol != nullptr) | |||||
{ | |||||
delete[] symbol; | |||||
symbol = nullptr; | |||||
} | |||||
CARLA_SAFE_ASSERT_RETURN(symbol != nullptr,) | |||||
delete[] symbol; | |||||
symbol = nullptr; | |||||
} | } | ||||
#ifdef CARLA_PROPER_CPP11_SUPPORT | #ifdef CARLA_PROPER_CPP11_SUPPORT | ||||
@@ -109,6 +108,8 @@ const char* CarlaPluginProtectedData::libError(const char* const filename) | |||||
// ------------------------------------------------------------------- | // ------------------------------------------------------------------- | ||||
// Settings functions, defined in CarlaPluginInternal.hpp | // Settings functions, defined in CarlaPluginInternal.hpp | ||||
// FIXME - this doesn't work!! | |||||
void CarlaPluginProtectedData::saveSetting(const unsigned int option, const bool yesNo) | void CarlaPluginProtectedData::saveSetting(const unsigned int option, const bool yesNo) | ||||
{ | { | ||||
PropertiesFile::Options opts; | PropertiesFile::Options opts; | ||||
@@ -226,7 +227,7 @@ CarlaPlugin::CarlaPlugin(CarlaEngine* const engine, const unsigned int id) | |||||
fIconName("plugin"), | fIconName("plugin"), | ||||
pData(new CarlaPluginProtectedData(engine, this)) | pData(new CarlaPluginProtectedData(engine, this)) | ||||
{ | { | ||||
CARLA_ASSERT(engine != nullptr); | |||||
CARLA_SAFE_ASSERT_RETURN(engine != nullptr,); | |||||
CARLA_ASSERT(id < engine->getMaxPluginNumber()); | CARLA_ASSERT(id < engine->getMaxPluginNumber()); | ||||
CARLA_ASSERT(id == engine->getCurrentPluginCount()); | CARLA_ASSERT(id == engine->getCurrentPluginCount()); | ||||
carla_debug("CarlaPlugin::CarlaPlugin(%p, %i)", engine, id); | carla_debug("CarlaPlugin::CarlaPlugin(%p, %i)", engine, id); | ||||
@@ -776,7 +777,6 @@ void CarlaPlugin::loadSaveState(const SaveState& saveState) | |||||
for (NonRtList<ParamSymbol*>::Itenerator it = paramSymbols.begin(); it.valid(); it.next()) | for (NonRtList<ParamSymbol*>::Itenerator it = paramSymbols.begin(); it.valid(); it.next()) | ||||
{ | { | ||||
ParamSymbol* const paramSymbol(*it); | ParamSymbol* const paramSymbol(*it); | ||||
paramSymbol->free(); | |||||
delete paramSymbol; | delete paramSymbol; | ||||
} | } | ||||
@@ -658,10 +658,10 @@ struct CarlaPluginProtectedData { | |||||
if (client != nullptr) | if (client != nullptr) | ||||
{ | { | ||||
CARLA_ASSERT(! client->isActive()); | |||||
if (client->isActive()) | if (client->isActive()) | ||||
client->deactivate(); | client->deactivate(); | ||||
else | |||||
carla_assert("client->isActive()", __FILE__, __LINE__); | |||||
clearBuffers(); | clearBuffers(); | ||||
@@ -673,27 +673,29 @@ struct CarlaPluginProtectedData { | |||||
{ | { | ||||
CustomData& cData(*it); | CustomData& cData(*it); | ||||
CARLA_ASSERT(cData.type != nullptr); | |||||
CARLA_ASSERT(cData.key != nullptr); | |||||
CARLA_ASSERT(cData.value != nullptr); | |||||
if (cData.type != nullptr) | if (cData.type != nullptr) | ||||
{ | { | ||||
delete[] cData.type; | delete[] cData.type; | ||||
cData.type = nullptr; | cData.type = nullptr; | ||||
} | } | ||||
else | |||||
carla_assert("cData.type != nullptr", __FILE__, __LINE__); | |||||
if (cData.key != nullptr) | if (cData.key != nullptr) | ||||
{ | { | ||||
delete[] cData.key; | delete[] cData.key; | ||||
cData.key = nullptr; | cData.key = nullptr; | ||||
} | } | ||||
else | |||||
carla_assert("cData.key != nullptr", __FILE__, __LINE__); | |||||
if (cData.value != nullptr) | if (cData.value != nullptr) | ||||
{ | { | ||||
delete[] cData.value; | delete[] cData.value; | ||||
cData.value = nullptr; | cData.value = nullptr; | ||||
} | } | ||||
else | |||||
carla_assert("cData.value != nullptr", __FILE__, __LINE__); | |||||
} | } | ||||
prog.clear(); | prog.clear(); | ||||
@@ -719,13 +721,10 @@ struct CarlaPluginProtectedData { | |||||
for (uint32_t i=0; i < audioIn.count; ++i) | for (uint32_t i=0; i < audioIn.count; ++i) | ||||
{ | { | ||||
CARLA_ASSERT(latencyBuffers[i] != nullptr); | |||||
CARLA_SAFE_ASSERT_CONTINUE(latencyBuffers[i] != nullptr); | |||||
if (latencyBuffers[i] != nullptr) | |||||
{ | |||||
delete[] latencyBuffers[i]; | |||||
latencyBuffers[i] = nullptr; | |||||
} | |||||
delete[] latencyBuffers[i]; | |||||
latencyBuffers[i] = nullptr; | |||||
} | } | ||||
delete[] latencyBuffers; | delete[] latencyBuffers; | ||||
@@ -751,13 +750,10 @@ struct CarlaPluginProtectedData { | |||||
for (uint32_t i=0; i < audioIn.count; ++i) | for (uint32_t i=0; i < audioIn.count; ++i) | ||||
{ | { | ||||
CARLA_ASSERT(latencyBuffers[i] != nullptr); | |||||
CARLA_SAFE_ASSERT_CONTINUE(latencyBuffers[i] != nullptr); | |||||
if (latencyBuffers[i] != nullptr) | |||||
{ | |||||
delete[] latencyBuffers[i]; | |||||
latencyBuffers[i] = nullptr; | |||||
} | |||||
delete[] latencyBuffers[i]; | |||||
latencyBuffers[i] = nullptr; | |||||
} | } | ||||
delete[] latencyBuffers; | delete[] latencyBuffers; | ||||
@@ -72,6 +72,11 @@ if __name__ == '__main__': | |||||
# ------------------------------------------------------------- | # ------------------------------------------------------------- | ||||
# Init host backend | # Init host backend | ||||
Carla.isControl = False | |||||
Carla.isLocal = True | |||||
Carla.isPlugin = False | |||||
Carla.processMode = PROCESS_MODE_MULTIPLE_CLIENTS | |||||
initHost(appName, libPrefix) | initHost(appName, libPrefix) | ||||
# ------------------------------------------------------------- | # ------------------------------------------------------------- | ||||