From 7f4ca56af8d543c1dbf7b8ce12c3d7c6f2ce05d6 Mon Sep 17 00:00:00 2001 From: Vicki Pfau Date: Wed, 18 Sep 2019 18:51:09 -0700 Subject: [PATCH] Qt: Fix shader loading while thread not running (fixes #1528) --- src/platform/qt/DisplayGL.cpp | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/platform/qt/DisplayGL.cpp b/src/platform/qt/DisplayGL.cpp index 175ddc042..af0dac717 100644 --- a/src/platform/qt/DisplayGL.cpp +++ b/src/platform/qt/DisplayGL.cpp @@ -296,7 +296,6 @@ PainterGL::PainterGL(QWindow* surface, QOpenGLContext* parent, int forceVersion) m_shader.preprocessShader = static_cast(&reinterpret_cast(m_backend)->initialShader); } #endif - m_gl->doneCurrent(); m_backend->user = this; m_backend->filter = false; @@ -517,6 +516,12 @@ void PainterGL::setShaders(struct VDir* dir) { return; } #ifdef BUILD_GLES2 + if (!m_started) { + m_gl->makeCurrent(m_surface); +#if defined(_WIN32) && defined(USE_EPOXY) + epoxy_handle_external_wglMakeCurrent(); +#endif + } if (m_shader.passes) { mGLES2ShaderDetach(reinterpret_cast(m_backend)); mGLES2ShaderFree(&m_shader); @@ -524,6 +529,8 @@ void PainterGL::setShaders(struct VDir* dir) { mGLES2ShaderLoad(&m_shader, dir); if (m_started) { mGLES2ShaderAttach(reinterpret_cast(m_backend), static_cast(m_shader.passes), m_shader.nPasses); + } else { + m_gl->doneCurrent(); } #endif }