Browse Source

Remove unnecessary listening to switching extruder tabs

Also fix unnecessary emitting of switching extruder tabs.

This should improve performance a lot. I tested a lot of things and am convinced that it didn't break anything. But the automated GUI tests and QA team should be the final arbiters of that...

Contributes to issue CURA-6793.
Ghostkeeper 5 years ago
parent
commit
ce4c5a1c93

+ 0 - 4
cura/BuildVolume.py

@@ -126,10 +126,6 @@ class BuildVolume(SceneNode):
         # Therefore this works.
         self._machine_manager.activeQualityChanged.connect(self._onStackChanged)
 
-        # This should also ways work, and it is semantically more correct,
-        # but it does not update the disallowed areas after material change
-        self._machine_manager.activeStackChanged.connect(self._onStackChanged)
-
         # Enable and disable extruder
         self._machine_manager.extruderChanged.connect(self.updateNodeBoundaryCheck)
 

+ 1 - 1
cura/Machines/Models/BaseMaterialsModel.py

@@ -42,7 +42,7 @@ class BaseMaterialsModel(ListModel):
         self._machine_manager.globalContainerChanged.connect(self._updateExtruderStack)
         self._updateExtruderStack()
 
-        # Update this model when switching machines, when adding materials or changing their metadata.
+        # Update this model when switching machines or tabs, when adding materials or changing their metadata.
         self._machine_manager.activeStackChanged.connect(self._update)
         ContainerTree.getInstance().materialsChanged.connect(self._materialsListChanged)
         self._application.getMaterialManagementModel().favoritesChanged.connect(self._update)

+ 4 - 1
cura/Machines/Models/IntentCategoryModel.py

@@ -48,7 +48,10 @@ class IntentCategoryModel(ListModel):
 
         ContainerRegistry.getInstance().containerAdded.connect(self._onContainerChange)
         ContainerRegistry.getInstance().containerRemoved.connect(self._onContainerChange)
-        cura.CuraApplication.CuraApplication.getInstance().getMachineManager().activeStackChanged.connect(self.update)
+        machine_manager = cura.CuraApplication.CuraApplication.getInstance().getMachineManager()
+        machine_manager.activeMaterialChanged.connect(self.update)
+        machine_manager.activeVariantChanged.connect(self.update)
+        machine_manager.extruderChanged.connect(self.update)
 
         self.update()
 

+ 2 - 1
cura/Machines/Models/QualityProfilesDropDownMenuModel.py

@@ -40,7 +40,8 @@ class QualityProfilesDropDownMenuModel(ListModel):
 
         application.globalContainerStackChanged.connect(self._onChange)
         machine_manager.activeQualityGroupChanged.connect(self._onChange)
-        machine_manager.activeStackChanged.connect(self._onChange)
+        machine_manager.activeMaterialChanged.connect(self._onChange)
+        machine_manager.activeVariantChanged.connect(self._onChange)
         machine_manager.extruderChanged.connect(self._onChange)
 
         self._layer_height_unit = ""  # This is cached

+ 2 - 6
cura/Settings/MachineManager.py

@@ -139,8 +139,8 @@ class MachineManager(QObject):
     activeVariantChanged = pyqtSignal()
     activeQualityChanged = pyqtSignal()
     activeIntentChanged = pyqtSignal()
-    activeStackChanged = pyqtSignal()  # Emitted whenever the active extruder stack is changed (ie: when changing between extruders, changing a profile, but not when changing a value)
-    extruderChanged = pyqtSignal()
+    activeStackChanged = pyqtSignal()  # Emitted whenever the active extruder stack is changed (ie: when switching the active extruder tab or changing between printers)
+    extruderChanged = pyqtSignal()  # Emitted whenever an extruder is activated or deactivated or the default extruder changes.
 
     activeStackValueChanged = pyqtSignal()  # Emitted whenever a value inside the active stack is changed.
     activeStackValidationChanged = pyqtSignal()  # Emitted whenever a validation inside active container is changed
@@ -269,11 +269,7 @@ class MachineManager(QObject):
 
     def _onActiveExtruderStackChanged(self) -> None:
         self.blurSettings.emit()  # Ensure no-one has focus.
-        if self._active_container_stack is not None:
-            self._active_container_stack.pyqtContainersChanged.disconnect(self.activeStackChanged)  # Unplug from the old one.
         self._active_container_stack = ExtruderManager.getInstance().getActiveExtruderStack()
-        if self._active_container_stack is not None:
-            self._active_container_stack.pyqtContainersChanged.connect(self.activeStackChanged)  # Plug into the new one.
 
     def __emitChangedSignals(self) -> None:
         self.activeQualityChanged.emit()