diff options
Diffstat (limited to 'src/opengl/qgl_qpa.cpp')
-rw-r--r-- | src/opengl/qgl_qpa.cpp | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/src/opengl/qgl_qpa.cpp b/src/opengl/qgl_qpa.cpp index f52beceaae..ba07f6121c 100644 --- a/src/opengl/qgl_qpa.cpp +++ b/src/opengl/qgl_qpa.cpp @@ -186,9 +186,14 @@ void QGLContext::reset() d->initDone = false; QGLContextGroup::removeShare(this); if (d->guiGlContext) { - if (d->ownContext) - delete d->guiGlContext; - else + if (QOpenGLContext::currentContext() == d->guiGlContext) + doneCurrent(); + if (d->ownContext) { + if (d->guiGlContext->thread() == QThread::currentThread()) + delete d->guiGlContext; + else + d->guiGlContext->deleteLater(); + } else d->guiGlContext->setQGLContextHandle(0,0); d->guiGlContext = 0; } |