diff --git a/src/carla-backend/carla_engine.cpp b/src/carla-backend/carla_engine.cpp index b0be734..0d02844 100644 --- a/src/carla-backend/carla_engine.cpp +++ b/src/carla-backend/carla_engine.cpp @@ -240,38 +240,38 @@ short CarlaEngine::addPlugin(const BinaryType btype, const PluginType ptype, con 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]) - 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);