From 5349cab4b258b636c1e2b988d9539243edccfc82 Mon Sep 17 00:00:00 2001 From: Vicki Pfau Date: Fri, 24 Jun 2022 01:55:52 -0700 Subject: [PATCH] Qt: Better error checking in mGLWidget --- src/platform/qt/DisplayGL.cpp | 13 ++++++++++--- src/platform/qt/DisplayGL.h | 2 +- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/src/platform/qt/DisplayGL.cpp b/src/platform/qt/DisplayGL.cpp index 27183899d..21703dd5f 100644 --- a/src/platform/qt/DisplayGL.cpp +++ b/src/platform/qt/DisplayGL.cpp @@ -87,8 +87,14 @@ void mGLWidget::initializeGL() { connect(&m_refresh, &QTimer::timeout, this, static_cast(&QWidget::update)); } -void mGLWidget::finalizeVAO() { +bool mGLWidget::finalizeVAO() { + if (!context() || !m_vao) { + return false; + } QOpenGLFunctions_Baseline* fn = context()->versionFunctions(); + if (!fn) { + return false; + } fn->glGetError(); // Clear the error m_vao->bind(); fn->glBindBuffer(GL_ARRAY_BUFFER, m_vbo); @@ -98,6 +104,7 @@ void mGLWidget::finalizeVAO() { if (fn->glGetError() == GL_NO_ERROR) { m_vaoDone = true; } + return m_vaoDone; } void mGLWidget::reset() { @@ -105,8 +112,8 @@ void mGLWidget::reset() { } void mGLWidget::paintGL() { - if (!m_vaoDone) { - finalizeVAO(); + if (!m_vaoDone && !finalizeVAO()) { + return; } QOpenGLFunctions_Baseline* fn = context()->versionFunctions(); m_program->bind(); diff --git a/src/platform/qt/DisplayGL.h b/src/platform/qt/DisplayGL.h index 007cf6165..dfaee22f5 100644 --- a/src/platform/qt/DisplayGL.h +++ b/src/platform/qt/DisplayGL.h @@ -52,7 +52,7 @@ Q_OBJECT public: void setTex(GLuint tex) { m_tex = tex; } void setVBO(GLuint vbo) { m_vbo = vbo; } - void finalizeVAO(); + bool finalizeVAO(); void reset(); protected: