From 1ae01df08d0f853f421a37c6ccdf2d479c61fa5a Mon Sep 17 00:00:00 2001 From: falkTX Date: Fri, 5 Apr 2019 11:56:22 +0900 Subject: [PATCH] Add option in settings for full-canvas repaints When activated, fixes noise and lefovers in background canvas area Signed-off-by: falkTX --- resources/ui/carla_settings.ui | 11 +++++++++-- source/frontend/carla_host.py | 7 ++++++- source/frontend/carla_settings.py | 3 +++ source/frontend/carla_shared.py | 2 ++ 4 files changed, 20 insertions(+), 3 deletions(-) diff --git a/resources/ui/carla_settings.ui b/resources/ui/carla_settings.ui index 328ec29b1..bbf466d3a 100644 --- a/resources/ui/carla_settings.ui +++ b/resources/ui/carla_settings.ui @@ -723,13 +723,20 @@ - Antialiasing + Anti-Aliasing true + + + + Full canvas repaints (slower, but prevents drawing issues) + + + @@ -2459,7 +2466,7 @@ false - High Quality Antiliasing (OpenGL only) + High Quality Anti-Aliasing (OpenGL only) diff --git a/source/frontend/carla_host.py b/source/frontend/carla_host.py index 902b3c64b..916608e16 100644 --- a/source/frontend/carla_host.py +++ b/source/frontend/carla_host.py @@ -401,7 +401,6 @@ class HostWindow(QMainWindow): if withCanvas: self.scene = patchcanvas.PatchScene(self, self.ui.graphicsView) self.ui.graphicsView.setScene(self.scene) - #self.ui.graphicsView.setViewportUpdateMode(QGraphicsView.FullViewportUpdate) if self.fSavedSettings[CARLA_KEY_CANVAS_USE_OPENGL] and hasGL: self.ui.glView = QGLWidget(self) @@ -1378,6 +1377,11 @@ class HostWindow(QMainWindow): else: self.ui.graphicsView.setRenderHint(QPainter.Antialiasing, False) + if self.fSavedSettings[CARLA_KEY_CANVAS_FULL_REPAINTS]: + self.ui.graphicsView.setViewportUpdateMode(QGraphicsView.FullViewportUpdate) + else: + self.ui.graphicsView.setViewportUpdateMode(QGraphicsView.MinimalViewportUpdate) + def updateCanvasInitialPos(self): x = self.ui.graphicsView.horizontalScrollBar().value() + self.width()/4 y = self.ui.graphicsView.verticalScrollBar().value() + self.height()/4 @@ -1708,6 +1712,7 @@ class HostWindow(QMainWindow): CARLA_KEY_CANVAS_USE_OPENGL: settings.value(CARLA_KEY_CANVAS_USE_OPENGL, CARLA_DEFAULT_CANVAS_USE_OPENGL, type=bool), CARLA_KEY_CANVAS_ANTIALIASING: settings.value(CARLA_KEY_CANVAS_ANTIALIASING, CARLA_DEFAULT_CANVAS_ANTIALIASING, type=int), CARLA_KEY_CANVAS_HQ_ANTIALIASING: settings.value(CARLA_KEY_CANVAS_HQ_ANTIALIASING, CARLA_DEFAULT_CANVAS_HQ_ANTIALIASING, type=bool), + CARLA_KEY_CANVAS_FULL_REPAINTS: settings.value(CARLA_KEY_CANVAS_FULL_REPAINTS, CARLA_DEFAULT_CANVAS_FULL_REPAINTS, type=bool), CARLA_KEY_CANVAS_INLINE_DISPLAYS: settings.value(CARLA_KEY_CANVAS_INLINE_DISPLAYS, CARLA_DEFAULT_CANVAS_INLINE_DISPLAYS, type=bool), CARLA_KEY_CUSTOM_PAINTING: (settings.value(CARLA_KEY_MAIN_USE_PRO_THEME, True, type=bool) and settings.value(CARLA_KEY_MAIN_PRO_THEME_COLOR, "Black", type=str).lower() == "black"), diff --git a/source/frontend/carla_settings.py b/source/frontend/carla_settings.py index 4893d4434..6850d47ff 100755 --- a/source/frontend/carla_settings.py +++ b/source/frontend/carla_settings.py @@ -376,6 +376,7 @@ class CarlaSettingsW(QDialog): self.ui.cb_canvas_use_opengl.setChecked(settings.value(CARLA_KEY_CANVAS_USE_OPENGL, CARLA_DEFAULT_CANVAS_USE_OPENGL, type=bool) and self.ui.cb_canvas_use_opengl.isEnabled()) self.ui.cb_canvas_render_aa.setCheckState(settings.value(CARLA_KEY_CANVAS_ANTIALIASING, CARLA_DEFAULT_CANVAS_ANTIALIASING, type=int)) self.ui.cb_canvas_render_hq_aa.setChecked(settings.value(CARLA_KEY_CANVAS_HQ_ANTIALIASING, CARLA_DEFAULT_CANVAS_HQ_ANTIALIASING, type=bool) and self.ui.cb_canvas_render_hq_aa.isEnabled()) + self.ui.cb_canvas_full_repaints.setChecked(settings.value(CARLA_KEY_CANVAS_FULL_REPAINTS, CARLA_DEFAULT_CANVAS_FULL_REPAINTS, type=bool)) self.ui.cb_canvas_inline_displays.setChecked(settings.value(CARLA_KEY_CANVAS_INLINE_DISPLAYS, CARLA_DEFAULT_CANVAS_INLINE_DISPLAYS, type=bool)) # ---------------------------------------------------------------------------------------------------- @@ -600,6 +601,7 @@ class CarlaSettingsW(QDialog): settings.setValue(CARLA_KEY_CANVAS_USE_OPENGL, self.ui.cb_canvas_use_opengl.isChecked()) settings.setValue(CARLA_KEY_CANVAS_HQ_ANTIALIASING, self.ui.cb_canvas_render_hq_aa.isChecked()) settings.setValue(CARLA_KEY_CANVAS_ANTIALIASING, self.ui.cb_canvas_render_aa.checkState()) # 0, 1, 2 match their enum variants + settings.setValue(CARLA_KEY_CANVAS_FULL_REPAINTS, self.ui.cb_canvas_full_repaints.isChecked()) settings.setValue(CARLA_KEY_CANVAS_INLINE_DISPLAYS, self.ui.cb_canvas_inline_displays.isChecked()) # ---------------------------------------------------------------------------------------------------- @@ -758,6 +760,7 @@ class CarlaSettingsW(QDialog): self.ui.cb_canvas_auto_select.setChecked(CARLA_DEFAULT_CANVAS_AUTO_SELECT_ITEMS) self.ui.cb_canvas_eyecandy.setChecked(CARLA_DEFAULT_CANVAS_EYE_CANDY) self.ui.cb_canvas_render_aa.setCheckState(Qt.PartiallyChecked) # CARLA_DEFAULT_CANVAS_ANTIALIASING + self.ui.cb_canvas_full_repaints.setChecked(CARLA_DEFAULT_CANVAS_FULL_REPAINTS) # ---------------------------------------------------------------------------------------------------- # Engine diff --git a/source/frontend/carla_shared.py b/source/frontend/carla_shared.py index 935caeed5..2b9c90b89 100644 --- a/source/frontend/carla_shared.py +++ b/source/frontend/carla_shared.py @@ -199,6 +199,7 @@ CARLA_KEY_CANVAS_USE_OPENGL = "Canvas/UseOpenGL" # bool CARLA_KEY_CANVAS_ANTIALIASING = "Canvas/Antialiasing" # enum CARLA_KEY_CANVAS_HQ_ANTIALIASING = "Canvas/HQAntialiasing" # bool CARLA_KEY_CANVAS_INLINE_DISPLAYS = "Canvas/InlineDisplays" # bool +CARLA_KEY_CANVAS_FULL_REPAINTS = "Canvas/FullRepaints" # bool CARLA_KEY_ENGINE_DRIVER_PREFIX = "Engine/Driver-" CARLA_KEY_ENGINE_AUDIO_DRIVER = "Engine/AudioDriver" # str @@ -272,6 +273,7 @@ CARLA_DEFAULT_CANVAS_USE_OPENGL = False CARLA_DEFAULT_CANVAS_ANTIALIASING = CANVAS_ANTIALIASING_SMALL CARLA_DEFAULT_CANVAS_HQ_ANTIALIASING = False CARLA_DEFAULT_CANVAS_INLINE_DISPLAYS = False +CARLA_DEFAULT_CANVAS_FULL_REPAINTS = False # Engine CARLA_DEFAULT_FORCE_STEREO = False