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