From dd24196e353bca448006ca7397882b6f1758f161 Mon Sep 17 00:00:00 2001 From: Chen Kasirer Date: Thu, 26 Feb 2026 15:34:10 +0100 Subject: [PATCH] clear lingering errors before initializing OpenGL --- CHANGELOG.md | 2 ++ src/compas_viewer/renderer/renderer.py | 10 ++++++++++ 2 files changed, 12 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index dae8097d4..9a0d919cd 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,6 +11,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed +* Fixed `invalid enumerant` error (1280) on call to `Viewer.show()` which occurs due to lingering OpenGL errors. + ### Removed diff --git a/src/compas_viewer/renderer/renderer.py b/src/compas_viewer/renderer/renderer.py index 83c004629..2050f6abe 100644 --- a/src/compas_viewer/renderer/renderer.py +++ b/src/compas_viewer/renderer/renderer.py @@ -205,6 +205,13 @@ def clear(self): """ GL.glClear(GL.GL_COLOR_BUFFER_BIT | GL.GL_DEPTH_BUFFER_BIT) # type: ignore + def _clear_opengl_errors(self): + while True: + error = GL.glGetError() + if error == GL.GL_NO_ERROR: + break + print(f"Cleared stale OpenGL error: {error}") + def initializeGL(self): """ Initialize the OpenGL canvas. @@ -220,6 +227,9 @@ def initializeGL(self): * https://doc.qt.io/qtforpython-6/PySide6/QtOpenGL/QOpenGLWindow.html#PySide6.QtOpenGL.PySide6.QtOpenGL.QOpenGLWindow.initializeGL """ + # any stale errors caused e.g. by the windowing framework and were not cleared may trigger a crash as soon as we start issuing GL calls. + self._clear_opengl_errors() + GL.glClearColor(*self.viewer.config.renderer.backgroundcolor.rgba) GL.glPolygonOffset(1.0, 1.0) GL.glEnable(GL.GL_CULL_FACE)