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.InstanceContainer import InstanceContainer
from UM.Settings.SettingFunction import SettingFunction
from UM.Signal import postponeSignals
from UM.Signal import postponeSignals, CompressTechnique
import UM.FlameProfiler
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.
@pyqtSlot(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)
if not containers or not self._active_container_stack:
return
@ -770,7 +770,7 @@ class MachineManager(QObject):
@pyqtSlot(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)
if not containers or not self._active_container_stack:
return
@ -793,7 +793,7 @@ class MachineManager(QObject):
# \param quality_id The quality_id of either a quality or a quality_changes
@pyqtSlot(str)
def setActiveQuality(self, quality_id: str):
with postponeSignals(*self._getContainerChangedSignals(), compress = True):
with postponeSignals(*self._getContainerChangedSignals(), compress = CompressTechnique.CompressPerParameterValue):
self.blurSettings.emit()
containers = ContainerRegistry.getInstance().findInstanceContainers(id = quality_id)