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

This commit is contained in:
Jaime van Kessel 2019-02-19 17:40:44 +01:00
parent 22b70e1a34
commit aef89e2bd3
3 changed files with 14 additions and 6 deletions

View file

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

View file

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

View file

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