| @@ -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 | ||||