From 29abe5011845848ca2b652d5d231b156b0ce9f33 Mon Sep 17 00:00:00 2001 From: falkTX Date: Mon, 17 Feb 2014 21:01:33 +0000 Subject: [PATCH] Misc fixes for using canvas in rack mode --- source/backend/engine/CarlaEngine.cpp | 3 ++ source/backend/engine/CarlaEngineJack.cpp | 2 +- source/backend/engine/CarlaEngineJuce.cpp | 2 +- source/backend/engine/CarlaEngineRtAudio.cpp | 2 +- source/carla | 1 + source/carla_patchbay.py | 35 +++++++++++++++----- 6 files changed, 33 insertions(+), 12 deletions(-) diff --git a/source/backend/engine/CarlaEngine.cpp b/source/backend/engine/CarlaEngine.cpp index 18626e0b8..9dd072939 100644 --- a/source/backend/engine/CarlaEngine.cpp +++ b/source/backend/engine/CarlaEngine.cpp @@ -953,6 +953,9 @@ bool CarlaEngine::addPlugin(const BinaryType btype, const PluginType ptype, cons { ++pData->curPluginCount; callback(ENGINE_CALLBACK_PLUGIN_ADDED, id, 0, 0, 0.0f, plugin->getName()); + + if (pData->curPluginCount == 1 && pData->options.processMode == ENGINE_PROCESS_MODE_CONTINUOUS_RACK) + callback(ENGINE_CALLBACK_PATCHBAY_CLIENT_DATA_CHANGED, 0, PATCHBAY_ICON_CARLA, 0, 0.0f, nullptr); } return true; diff --git a/source/backend/engine/CarlaEngineJack.cpp b/source/backend/engine/CarlaEngineJack.cpp index 30bc4bb74..3adccc1f4 100644 --- a/source/backend/engine/CarlaEngineJack.cpp +++ b/source/backend/engine/CarlaEngineJack.cpp @@ -1800,7 +1800,7 @@ private: groupNameToId.setData(fLastGroupId++, ourName); fUsedGroupNames.append(groupNameToId); - callback(ENGINE_CALLBACK_PATCHBAY_CLIENT_ADDED, 0 /* our client */, PATCHBAY_ICON_CARLA, 0, 0.0f, ourName); + callback(ENGINE_CALLBACK_PATCHBAY_CLIENT_ADDED, 0 /* our client */, PATCHBAY_ICON_CARLA, -1, 0.0f, ourName); } if (const char** const ports = jackbridge_get_ports(fClient, nullptr, nullptr, 0)) diff --git a/source/backend/engine/CarlaEngineJuce.cpp b/source/backend/engine/CarlaEngineJuce.cpp index b5425ec55..e45e7d474 100644 --- a/source/backend/engine/CarlaEngineJuce.cpp +++ b/source/backend/engine/CarlaEngineJuce.cpp @@ -233,7 +233,7 @@ public: // Main { - callback(ENGINE_CALLBACK_PATCHBAY_CLIENT_ADDED, RACK_PATCHBAY_GROUP_CARLA, PATCHBAY_ICON_CARLA, 0, 0.0f, getName()); + callback(ENGINE_CALLBACK_PATCHBAY_CLIENT_ADDED, RACK_PATCHBAY_GROUP_CARLA, PATCHBAY_ICON_CARLA, -1, 0.0f, getName()); callback(ENGINE_CALLBACK_PATCHBAY_PORT_ADDED, RACK_PATCHBAY_GROUP_CARLA, RACK_PATCHBAY_PORT_AUDIO_IN1, PATCHBAY_PORT_TYPE_AUDIO|PATCHBAY_PORT_IS_INPUT, 0.0f, "audio-in1"); callback(ENGINE_CALLBACK_PATCHBAY_PORT_ADDED, RACK_PATCHBAY_GROUP_CARLA, RACK_PATCHBAY_PORT_AUDIO_IN2, PATCHBAY_PORT_TYPE_AUDIO|PATCHBAY_PORT_IS_INPUT, 0.0f, "audio-in2"); diff --git a/source/backend/engine/CarlaEngineRtAudio.cpp b/source/backend/engine/CarlaEngineRtAudio.cpp index 6fba1c01b..bdbd5c2cf 100644 --- a/source/backend/engine/CarlaEngineRtAudio.cpp +++ b/source/backend/engine/CarlaEngineRtAudio.cpp @@ -432,7 +432,7 @@ public: // Main { - callback(ENGINE_CALLBACK_PATCHBAY_CLIENT_ADDED, RACK_PATCHBAY_GROUP_CARLA, PATCHBAY_ICON_CARLA, 0, 0.0f, getName()); + callback(ENGINE_CALLBACK_PATCHBAY_CLIENT_ADDED, RACK_PATCHBAY_GROUP_CARLA, PATCHBAY_ICON_CARLA, -1, 0.0f, getName()); callback(ENGINE_CALLBACK_PATCHBAY_PORT_ADDED, RACK_PATCHBAY_GROUP_CARLA, RACK_PATCHBAY_PORT_AUDIO_IN1, PATCHBAY_PORT_TYPE_AUDIO|PATCHBAY_PORT_IS_INPUT, 0.0f, "audio-in1"); callback(ENGINE_CALLBACK_PATCHBAY_PORT_ADDED, RACK_PATCHBAY_GROUP_CARLA, RACK_PATCHBAY_PORT_AUDIO_IN2, PATCHBAY_PORT_TYPE_AUDIO|PATCHBAY_PORT_IS_INPUT, 0.0f, "audio-in2"); diff --git a/source/carla b/source/carla index e01de8535..6da4ccb5b 100755 --- a/source/carla +++ b/source/carla @@ -116,6 +116,7 @@ class CarlaMultiW(QTabWidget): def removeAllPlugins(self): self.fRack.removeAllPlugins() + self.fPatchbay.removeAllPlugins() # ----------------------------------------------------------------- diff --git a/source/carla_patchbay.py b/source/carla_patchbay.py index 0e4453c0e..e985dc791 100644 --- a/source/carla_patchbay.py +++ b/source/carla_patchbay.py @@ -219,6 +219,9 @@ class CarlaPatchbayW(QFrame): def removePlugin(self, pluginId): patchcanvas.handlePluginRemoved(pluginId) + if pluginId in self.fSelectedPlugins: + self.clearSideStuff() + if not self.fIsOnlyPatchbay: self.fPluginCount -= 1 return @@ -260,18 +263,17 @@ class CarlaPatchbayW(QFrame): return def removeAllPlugins(self): - for i in range(self.fPluginCount): - pitem = self.fPluginList[i] - + for pitem in self.fPluginList: if pitem is None: break - pitem.close() del pitem self.fPluginCount = 0 self.fPluginList = [] + self.clearSideStuff() + # ----------------------------------------------------------------- def engineStarted(self): @@ -286,6 +288,9 @@ class CarlaPatchbayW(QFrame): # ----------------------------------------------------------------- def idleFast(self): + if self.fPluginCount == 0: + return + for pluginId in self.fSelectedPlugins: self.fPeaksCleared = False if self.fPeaksIn.isVisible(): @@ -295,6 +300,7 @@ class CarlaPatchbayW(QFrame): self.fPeaksOut.displayMeter(1, gCarla.host.get_output_peak_value(pluginId, True)) self.fPeaksOut.displayMeter(2, gCarla.host.get_output_peak_value(pluginId, False)) return + if self.fPeaksCleared: return @@ -305,12 +311,9 @@ class CarlaPatchbayW(QFrame): self.fPeaksOut.displayMeter(2, 0.0, True) def idleSlow(self): - for i in range(self.fPluginCount): - pitem = self.fPluginList[i] - + for pitem in self.fPluginList: if pitem is None: break - pitem.idleSlow() # ----------------------------------------------------------------- @@ -345,6 +348,20 @@ class CarlaPatchbayW(QFrame): # ----------------------------------------------------------------- + def clearSideStuff(self): + self.scene.clearSelection() + + self.fSelectedPlugins = [] + + self.fKeys.keyboard.allNotesOff(False) + self.fKeys.setEnabled(False) + + self.fPeaksCleared = True + self.fPeaksIn.displayMeter(1, 0.0, True) + self.fPeaksIn.displayMeter(2, 0.0, True) + self.fPeaksOut.displayMeter(1, 0.0, True) + self.fPeaksOut.displayMeter(2, 0.0, True) + def setupCanvas(self): pOptions = patchcanvas.options_t() pOptions.theme_name = self.fParent.fSavedSettings[CARLA_KEY_CANVAS_THEME] @@ -450,7 +467,7 @@ class CarlaPatchbayW(QFrame): @pyqtSlot(list) def slot_canvasPluginSelected(self, pluginList): self.fKeys.keyboard.allNotesOff(False) - self.fKeys.setEnabled(len(pluginList) != 0) + self.fKeys.setEnabled(len(pluginList) != 0) # and self.fPluginCount > 0 self.fSelectedPlugins = pluginList @pyqtSlot(float, float)