@@ -754,12 +754,12 @@ public: | |||||
* Load \a filename session. | * Load \a filename session. | ||||
* \note Already loaded plugins are not removed; call removeAllPlugins() first if needed. | * \note Already loaded plugins are not removed; call removeAllPlugins() first if needed. | ||||
*/ | */ | ||||
void loadProject(const char* const filename); | |||||
bool loadProject(const char* const filename); | |||||
/*! | /*! | ||||
* Save current session to \a filename. | * Save current session to \a filename. | ||||
*/ | */ | ||||
void saveProject(const char* const filename); | |||||
bool saveProject(const char* const filename); | |||||
// ------------------------------------------------------------------- | // ------------------------------------------------------------------- | ||||
// Information (base) | // Information (base) | ||||
@@ -953,7 +953,7 @@ void CarlaEngine::__bridgePluginRegister(const unsigned short id, CarlaPlugin* c | |||||
// ----------------------------------------------------------------------- | // ----------------------------------------------------------------------- | ||||
// Information (base) | // Information (base) | ||||
void CarlaEngine::loadProject(const char* const filename) | |||||
bool CarlaEngine::loadProject(const char* const filename) | |||||
{ | { | ||||
CARLA_ASSERT(filename != nullptr); | CARLA_ASSERT(filename != nullptr); | ||||
@@ -963,9 +963,10 @@ void CarlaEngine::loadProject(const char* const filename) | |||||
// return; | // return; | ||||
//getSaveStateDictFromXML | //getSaveStateDictFromXML | ||||
return true; | |||||
} | } | ||||
void CarlaEngine::saveProject(const char* const filename) | |||||
bool CarlaEngine::saveProject(const char* const filename) | |||||
{ | { | ||||
CARLA_ASSERT(filename != nullptr); | CARLA_ASSERT(filename != nullptr); | ||||
@@ -991,6 +992,8 @@ void CarlaEngine::saveProject(const char* const filename) | |||||
out << "</CARLA-PRESET>\n"; | out << "</CARLA-PRESET>\n"; | ||||
file.close(); | file.close(); | ||||
return true; | |||||
} | } | ||||
// ----------------------------------------------------------------------- | // ----------------------------------------------------------------------- | ||||
@@ -66,7 +66,7 @@ void CarlaEngineOsc::init(const char* const name) | |||||
{ | { | ||||
fServerPathTCP = tmpServerPathTCP; | fServerPathTCP = tmpServerPathTCP; | ||||
fServerPathTCP += fName; | fServerPathTCP += fName; | ||||
free(tmpServerPathTCP); | |||||
std::free(tmpServerPathTCP); | |||||
} | } | ||||
lo_server_add_method(fServerTCP, nullptr, nullptr, osc_message_handler, this); | lo_server_add_method(fServerTCP, nullptr, nullptr, osc_message_handler, this); | ||||
@@ -80,7 +80,7 @@ void CarlaEngineOsc::init(const char* const name) | |||||
{ | { | ||||
fServerPathUDP = tmpServerPathUDP; | fServerPathUDP = tmpServerPathUDP; | ||||
fServerPathUDP += fName; | fServerPathUDP += fName; | ||||
free(tmpServerPathUDP); | |||||
std::free(tmpServerPathUDP); | |||||
} | } | ||||
lo_server_add_method(fServerUDP, nullptr, nullptr, osc_message_handler, this); | lo_server_add_method(fServerUDP, nullptr, nullptr, osc_message_handler, this); | ||||
@@ -367,23 +367,25 @@ int CarlaEngineOsc::handleMsgRegister(const int argc, const lo_arg* const* const | |||||
return 1; | return 1; | ||||
} | } | ||||
const char* const url = (const char*)&argv[0]->s; | |||||
const char* host; | |||||
const char* port; | |||||
const char* const url = &argv[0]->s; | |||||
qDebug("CarlaEngineOsc::handleMsgRegister() - OSC backend registered to %s", url); | qDebug("CarlaEngineOsc::handleMsgRegister() - OSC backend registered to %s", url); | ||||
host = lo_address_get_hostname(source); | |||||
port = lo_address_get_port(source); | |||||
fControlData.source = lo_address_new_with_proto(LO_TCP, host, port); | |||||
{ | |||||
const char* host = lo_address_get_hostname(source); | |||||
const char* port = lo_address_get_port(source); | |||||
fControlData.source = lo_address_new_with_proto(LO_TCP, host, port); | |||||
} | |||||
host = lo_url_get_hostname(url); | |||||
port = lo_url_get_port(url); | |||||
fControlData.path = lo_url_get_path(url); | |||||
fControlData.target = lo_address_new_with_proto(LO_TCP, host, port); | |||||
{ | |||||
char* host = lo_url_get_hostname(url); | |||||
char* port = lo_url_get_port(url); | |||||
fControlData.path = carla_strdup_free(lo_url_get_path(url)); | |||||
fControlData.target = lo_address_new_with_proto(LO_TCP, host, port); | |||||
free((void*)host); | |||||
free((void*)port); | |||||
std::free(host); | |||||
std::free(port); | |||||
} | |||||
for (unsigned short i=0; i < kEngine->currentPluginCount(); i++) | for (unsigned short i=0; i < kEngine->currentPluginCount(); i++) | ||||
{ | { | ||||
@@ -1005,25 +1005,28 @@ void CarlaPlugin::updateOscData(const lo_address& source, const char* const url) | |||||
// FIXME - remove debug prints later | // FIXME - remove debug prints later | ||||
qWarning("CarlaPlugin::updateOscData(%p, \"%s\")", source, url); | qWarning("CarlaPlugin::updateOscData(%p, \"%s\")", source, url); | ||||
const char* host; | |||||
const char* port; | |||||
const int proto = lo_address_get_protocol(source); | |||||
kData->osc.data.free(); | kData->osc.data.free(); | ||||
host = lo_address_get_hostname(source); | |||||
port = lo_address_get_port(source); | |||||
kData->osc.data.source = lo_address_new_with_proto(proto, host, port); | |||||
qWarning("CarlaPlugin::updateOscData() - source: host \"%s\", port \"%s\"", host, port); | |||||
const int proto = lo_address_get_protocol(source); | |||||
{ | |||||
const char* host = lo_address_get_hostname(source); | |||||
const char* port = lo_address_get_port(source); | |||||
kData->osc.data.source = lo_address_new_with_proto(proto, host, port); | |||||
host = lo_url_get_hostname(url); | |||||
port = lo_url_get_port(url); | |||||
kData->osc.data.path = lo_url_get_path(url); | |||||
kData->osc.data.target = lo_address_new_with_proto(proto, host, port); | |||||
qWarning("CarlaPlugin::updateOscData() - target: host \"%s\", port \"%s\", path \"%s\"", host, port, kData->osc.data.path); | |||||
qWarning("CarlaPlugin::updateOscData() - source: host \"%s\", port \"%s\"", host, port); | |||||
} | |||||
free((void*)host); | |||||
free((void*)port); | |||||
{ | |||||
char* host = lo_url_get_hostname(url); | |||||
char* port = lo_url_get_port(url); | |||||
kData->osc.data.path = carla_strdup_free(lo_url_get_path(url)); | |||||
kData->osc.data.target = lo_address_new_with_proto(proto, host, port); | |||||
qWarning("CarlaPlugin::updateOscData() - target: host \"%s\", port \"%s\", path \"%s\"", host, port, kData->osc.data.path); | |||||
std::free(host); | |||||
std::free(port); | |||||
} | |||||
#ifndef BUILD_BRIDGE | #ifndef BUILD_BRIDGE | ||||
if (fHints & PLUGIN_IS_BRIDGE) | if (fHints & PLUGIN_IS_BRIDGE) | ||||
@@ -279,13 +279,16 @@ struct PluginProgramData { | |||||
if (names != nullptr) | if (names != nullptr) | ||||
{ | { | ||||
for (uint32_t i=0; i < count; i++) | for (uint32_t i=0; i < count; i++) | ||||
std::free((void*)names[i]); | |||||
{ | |||||
if (names[i] != nullptr) | |||||
delete[] names[i]; | |||||
} | |||||
delete[] names; | delete[] names; | ||||
names = nullptr; | names = nullptr; | ||||
} | } | ||||
count = 0; | |||||
count = 0; | |||||
current = -1; | current = -1; | ||||
} | } | ||||
@@ -303,7 +303,10 @@ bool carla_load_project(const char* filename) | |||||
CARLA_ASSERT(filename != nullptr); | CARLA_ASSERT(filename != nullptr); | ||||
if (standalone.engine != nullptr) | if (standalone.engine != nullptr) | ||||
standalone.engine->loadProject(filename); | |||||
return standalone.engine->loadProject(filename); | |||||
standalone.lastError = "Engine is not started"; | |||||
return false; | |||||
} | } | ||||
bool carla_save_project(const char* filename) | bool carla_save_project(const char* filename) | ||||
@@ -312,7 +315,10 @@ bool carla_save_project(const char* filename) | |||||
CARLA_ASSERT(filename != nullptr); | CARLA_ASSERT(filename != nullptr); | ||||
if (standalone.engine != nullptr) | if (standalone.engine != nullptr) | ||||
standalone.engine->saveProject(filename); | |||||
return standalone.engine->saveProject(filename); | |||||
standalone.lastError = "Engine is not started"; | |||||
return false; | |||||
} | } | ||||
// ------------------------------------------------------------------------------------------------------------------- | // ------------------------------------------------------------------------------------------------------------------- | ||||
@@ -82,24 +82,25 @@ bool CarlaBridgeOsc::init(const char* const url) | |||||
if (! path) | if (! path) | ||||
{ | { | ||||
free(host); | |||||
std::free(host); | |||||
qCritical("CarlaBridgeOsc::init(\"%s\") - failed to get url path", url); | qCritical("CarlaBridgeOsc::init(\"%s\") - failed to get url path", url); | ||||
return false; | return false; | ||||
} | } | ||||
if (! port) | if (! port) | ||||
{ | { | ||||
free(host); | |||||
free(path); | |||||
std::free(host); | |||||
std::free(path); | |||||
qCritical("CarlaBridgeOsc::init(\"%s\") - failed to get url port", url); | qCritical("CarlaBridgeOsc::init(\"%s\") - failed to get url port", url); | ||||
return false; | return false; | ||||
} | } | ||||
m_controlData.path = path; | |||||
m_controlData.path = carla_strdup(path); | |||||
m_controlData.target = lo_address_new_with_proto(LO_TCP, host, port); | m_controlData.target = lo_address_new_with_proto(LO_TCP, host, port); | ||||
free(host); | |||||
free(port); | |||||
std::free(path); | |||||
std::free(host); | |||||
std::free(port); | |||||
if (! m_controlData.target) | if (! m_controlData.target) | ||||
{ | { | ||||
@@ -118,7 +119,7 @@ bool CarlaBridgeOsc::init(const char* const url) | |||||
if (char* const serverUrl = lo_server_get_url(m_server)) | if (char* const serverUrl = lo_server_get_url(m_server)) | ||||
{ | { | ||||
m_serverPath = strdup(QString("%1%2").arg(serverUrl).arg(m_name).toUtf8().constData()); | m_serverPath = strdup(QString("%1%2").arg(serverUrl).arg(m_name).toUtf8().constData()); | ||||
free(serverUrl); | |||||
std::free(serverUrl); | |||||
} | } | ||||
else | else | ||||
m_serverPath = strdup(QString("%1carla-bridge").arg(serverUrl).toUtf8().constData()); | m_serverPath = strdup(QString("%1carla-bridge").arg(serverUrl).toUtf8().constData()); | ||||
@@ -147,6 +147,14 @@ const char* carla_strdup(const char* const strBuf) | |||||
return buffer; | return buffer; | ||||
} | } | ||||
static inline | |||||
const char* carla_strdup_free(const char* const strBuf) | |||||
{ | |||||
const char* const buffer = carla_strdup(strBuf); | |||||
std::free((void*)strBuf); | |||||
return buffer; | |||||
} | |||||
// ------------------------------------------------- | // ------------------------------------------------- | ||||
// math functions | // math functions | ||||