| @@ -754,12 +754,12 @@ public: | |||
| * Load \a filename session. | |||
| * \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. | |||
| */ | |||
| void saveProject(const char* const filename); | |||
| bool saveProject(const char* const filename); | |||
| // ------------------------------------------------------------------- | |||
| // Information (base) | |||
| @@ -953,7 +953,7 @@ void CarlaEngine::__bridgePluginRegister(const unsigned short id, CarlaPlugin* c | |||
| // ----------------------------------------------------------------------- | |||
| // Information (base) | |||
| void CarlaEngine::loadProject(const char* const filename) | |||
| bool CarlaEngine::loadProject(const char* const filename) | |||
| { | |||
| CARLA_ASSERT(filename != nullptr); | |||
| @@ -963,9 +963,10 @@ void CarlaEngine::loadProject(const char* const filename) | |||
| // return; | |||
| //getSaveStateDictFromXML | |||
| return true; | |||
| } | |||
| void CarlaEngine::saveProject(const char* const filename) | |||
| bool CarlaEngine::saveProject(const char* const filename) | |||
| { | |||
| CARLA_ASSERT(filename != nullptr); | |||
| @@ -991,6 +992,8 @@ void CarlaEngine::saveProject(const char* const filename) | |||
| out << "</CARLA-PRESET>\n"; | |||
| file.close(); | |||
| return true; | |||
| } | |||
| // ----------------------------------------------------------------------- | |||
| @@ -66,7 +66,7 @@ void CarlaEngineOsc::init(const char* const name) | |||
| { | |||
| fServerPathTCP = tmpServerPathTCP; | |||
| fServerPathTCP += fName; | |||
| free(tmpServerPathTCP); | |||
| std::free(tmpServerPathTCP); | |||
| } | |||
| 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 += fName; | |||
| free(tmpServerPathUDP); | |||
| std::free(tmpServerPathUDP); | |||
| } | |||
| 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; | |||
| } | |||
| 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); | |||
| 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++) | |||
| { | |||
| @@ -1005,25 +1005,28 @@ void CarlaPlugin::updateOscData(const lo_address& source, const char* const url) | |||
| // FIXME - remove debug prints later | |||
| 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(); | |||
| 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 | |||
| if (fHints & PLUGIN_IS_BRIDGE) | |||
| @@ -279,13 +279,16 @@ struct PluginProgramData { | |||
| if (names != nullptr) | |||
| { | |||
| for (uint32_t i=0; i < count; i++) | |||
| std::free((void*)names[i]); | |||
| { | |||
| if (names[i] != nullptr) | |||
| delete[] names[i]; | |||
| } | |||
| delete[] names; | |||
| names = nullptr; | |||
| } | |||
| count = 0; | |||
| count = 0; | |||
| current = -1; | |||
| } | |||
| @@ -303,7 +303,10 @@ bool carla_load_project(const char* filename) | |||
| CARLA_ASSERT(filename != 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) | |||
| @@ -312,7 +315,10 @@ bool carla_save_project(const char* filename) | |||
| CARLA_ASSERT(filename != 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) | |||
| { | |||
| free(host); | |||
| std::free(host); | |||
| qCritical("CarlaBridgeOsc::init(\"%s\") - failed to get url path", url); | |||
| return false; | |||
| } | |||
| if (! port) | |||
| { | |||
| free(host); | |||
| free(path); | |||
| std::free(host); | |||
| std::free(path); | |||
| qCritical("CarlaBridgeOsc::init(\"%s\") - failed to get url port", url); | |||
| return false; | |||
| } | |||
| m_controlData.path = path; | |||
| m_controlData.path = carla_strdup(path); | |||
| 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) | |||
| { | |||
| @@ -118,7 +119,7 @@ bool CarlaBridgeOsc::init(const char* const url) | |||
| if (char* const serverUrl = lo_server_get_url(m_server)) | |||
| { | |||
| m_serverPath = strdup(QString("%1%2").arg(serverUrl).arg(m_name).toUtf8().constData()); | |||
| free(serverUrl); | |||
| std::free(serverUrl); | |||
| } | |||
| else | |||
| m_serverPath = strdup(QString("%1carla-bridge").arg(serverUrl).toUtf8().constData()); | |||
| @@ -147,6 +147,14 @@ const char* carla_strdup(const char* const strBuf) | |||
| 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 | |||