Browse Source

Add few more cases where Camera changes caused un-needed updates

Jaime van Kessel 6 years ago
parent
commit
aef89e2bd3

+ 10 - 4
cura/ObjectsModel.py

@@ -5,6 +5,7 @@ from PyQt5.QtCore import QTimer
 
 from UM.Application import Application
 from UM.Qt.ListModel import ListModel
+from UM.Scene.Camera import Camera
 from UM.Scene.Iterator.DepthFirstIterator import DepthFirstIterator
 from UM.Scene.SceneNode import SceneNode
 from UM.Scene.Selection import Selection
@@ -19,19 +20,24 @@ class ObjectsModel(ListModel):
     def __init__(self):
         super().__init__()
 
-        Application.getInstance().getController().getScene().sceneChanged.connect(self._updateDelayed)
+        Application.getInstance().getController().getScene().sceneChanged.connect(self._updateSceneDelayed)
         Application.getInstance().getPreferences().preferenceChanged.connect(self._updateDelayed)
 
         self._update_timer = QTimer()
-        self._update_timer.setInterval(100)
+        self._update_timer.setInterval(200)
         self._update_timer.setSingleShot(True)
         self._update_timer.timeout.connect(self._update)
 
         self._build_plate_number = -1
 
     def setActiveBuildPlate(self, nr):
-        self._build_plate_number = nr
-        self._update()
+        if self._build_plate_number != nr:
+            self._build_plate_number = nr
+            self._update()
+
+    def _updateSceneDelayed(self, source):
+        if not isinstance(source, Camera):
+            self._update_timer.start()
 
     def _updateDelayed(self, *args):
         self._update_timer.start()

+ 2 - 1
cura/Scene/CuraSceneController.py

@@ -3,6 +3,7 @@ from UM.Logger import Logger
 from PyQt5.QtCore import Qt, pyqtSlot, QObject
 from PyQt5.QtWidgets import QApplication
 
+from UM.Scene.Camera import Camera
 from cura.ObjectsModel import ObjectsModel
 from cura.Machines.Models.MultiBuildPlateModel import MultiBuildPlateModel
 
@@ -33,7 +34,7 @@ class CuraSceneController(QObject):
             source = args[0]
         else:
             source = None
-        if not isinstance(source, SceneNode):
+        if not isinstance(source, SceneNode) or isinstance(source, Camera):
             return
         max_build_plate = self._calcMaxBuildPlate()
         changed = False

+ 2 - 1
plugins/CuraEngineBackend/CuraEngineBackend.py

@@ -10,6 +10,7 @@ from time import time
 from typing import Any, cast, Dict, List, Optional, Set, TYPE_CHECKING
 
 from UM.Backend.Backend import Backend, BackendState
+from UM.Scene.Camera import Camera
 from UM.Scene.SceneNode import SceneNode
 from UM.Signal import Signal
 from UM.Logger import Logger
@@ -476,7 +477,7 @@ class CuraEngineBackend(QObject, Backend):
     #
     #   \param source The scene node that was changed.
     def _onSceneChanged(self, source: SceneNode) -> None:
-        if not isinstance(source, SceneNode):
+        if not isinstance(source, SceneNode) or isinstance(source, Camera):
             return
 
         # This case checks if the source node is a node that contains GCode. In this case the