| @@ -240,38 +240,38 @@ short CarlaEngine::addPlugin(const BinaryType btype, const PluginType ptype, con | |||||
| bool CarlaEngine::removePlugin(const unsigned short id) | bool CarlaEngine::removePlugin(const unsigned short id) | ||||
| { | { | ||||
| for (unsigned short i=0; i < MAX_PLUGINS; i++) | |||||
| { | |||||
| CarlaPlugin* const plugin = m_carlaPlugins[i]; | |||||
| CarlaPlugin* const plugin = m_carlaPlugins[id]; | |||||
| if (plugin && plugin->id() == id) | |||||
| { | |||||
| processLock(); | |||||
| plugin->setEnabled(false); | |||||
| processUnlock(); | |||||
| if (plugin && plugin->id() == id) | |||||
| { | |||||
| processLock(); | |||||
| plugin->setEnabled(false); | |||||
| processUnlock(); | |||||
| if (m_checkThread.isRunning()) | |||||
| m_checkThread.stopNow(); | |||||
| if (m_checkThread.isRunning()) | |||||
| m_checkThread.stopNow(); | |||||
| delete plugin; | |||||
| delete plugin; | |||||
| m_carlaPlugins[i] = nullptr; | |||||
| m_uniqueNames[i] = nullptr; | |||||
| m_carlaPlugins[id] = nullptr; | |||||
| m_uniqueNames[id] = nullptr; | |||||
| for (unsigned short j=i+1; j < MAX_PLUGINS; i++, j++) | |||||
| if (carlaOptions.process_mode == PROCESS_MODE_CONTINUOUS_RACK) | |||||
| { | |||||
| for (unsigned short i=id; i < MAX_PLUGINS; i++) | |||||
| { | { | ||||
| m_carlaPlugins[i] = m_carlaPlugins[j]; | |||||
| m_uniqueNames[i] = m_uniqueNames[j]; | |||||
| m_carlaPlugins[i] = m_carlaPlugins[i+1]; | |||||
| m_uniqueNames[i] = m_uniqueNames[i+1]; | |||||
| if (m_carlaPlugins[i]) | if (m_carlaPlugins[i]) | ||||
| m_carlaPlugins[i]->setId(j); | |||||
| m_carlaPlugins[i]->setId(i+1); | |||||
| } | } | ||||
| } | |||||
| if (isRunning()) | |||||
| m_checkThread.start(QThread::HighPriority); | |||||
| if (isRunning()) | |||||
| m_checkThread.start(QThread::HighPriority); | |||||
| return true; | |||||
| } | |||||
| return true; | |||||
| } | } | ||||
| qCritical("remove_plugin(%i) - could not find plugin", id); | qCritical("remove_plugin(%i) - could not find plugin", id); | ||||