Use per-parameter-value compression for signals

This will only emit one signal for each unique combination of parameters.

Contributes to issue CURA-3803.
This commit is contained in:
Ghostkeeper 2017-05-22 15:35:34 +02:00
parent bec43d5b9a
commit 1f33a0d4cd
No known key found for this signature in database
GPG key ID: C5F96EE2BC0F7E75

View file

@ -16,7 +16,7 @@ from UM.Settings.ContainerRegistry import ContainerRegistry
from UM.Settings.ContainerStack import ContainerStack from UM.Settings.ContainerStack import ContainerStack
from UM.Settings.InstanceContainer import InstanceContainer from UM.Settings.InstanceContainer import InstanceContainer
from UM.Settings.SettingFunction import SettingFunction from UM.Settings.SettingFunction import SettingFunction
from UM.Signal import postponeSignals from UM.Signal import postponeSignals, CompressTechnique
import UM.FlameProfiler import UM.FlameProfiler
from cura.QualityManager import QualityManager from cura.QualityManager import QualityManager
@ -705,7 +705,7 @@ class MachineManager(QObject):
# Depending on from/to material+current variant, a quality profile is chosen and set. # Depending on from/to material+current variant, a quality profile is chosen and set.
@pyqtSlot(str) @pyqtSlot(str)
def setActiveMaterial(self, material_id: str): def setActiveMaterial(self, material_id: str):
with postponeSignals(*self._getContainerChangedSignals()): with postponeSignals(*self._getContainerChangedSignals(), compress = CompressTechnique.CompressPerParameterValue):
containers = ContainerRegistry.getInstance().findInstanceContainers(id = material_id) containers = ContainerRegistry.getInstance().findInstanceContainers(id = material_id)
if not containers or not self._active_container_stack: if not containers or not self._active_container_stack:
return return
@ -770,7 +770,7 @@ class MachineManager(QObject):
@pyqtSlot(str) @pyqtSlot(str)
def setActiveVariant(self, variant_id: str): def setActiveVariant(self, variant_id: str):
with postponeSignals(*self._getContainerChangedSignals()): with postponeSignals(*self._getContainerChangedSignals(), compress = CompressTechnique.CompressPerParameterValue):
containers = ContainerRegistry.getInstance().findInstanceContainers(id = variant_id) containers = ContainerRegistry.getInstance().findInstanceContainers(id = variant_id)
if not containers or not self._active_container_stack: if not containers or not self._active_container_stack:
return return
@ -793,7 +793,7 @@ class MachineManager(QObject):
# \param quality_id The quality_id of either a quality or a quality_changes # \param quality_id The quality_id of either a quality or a quality_changes
@pyqtSlot(str) @pyqtSlot(str)
def setActiveQuality(self, quality_id: str): def setActiveQuality(self, quality_id: str):
with postponeSignals(*self._getContainerChangedSignals(), compress = True): with postponeSignals(*self._getContainerChangedSignals(), compress = CompressTechnique.CompressPerParameterValue):
self.blurSettings.emit() self.blurSettings.emit()
containers = ContainerRegistry.getInstance().findInstanceContainers(id = quality_id) containers = ContainerRegistry.getInstance().findInstanceContainers(id = quality_id)