summaryrefslogtreecommitdiffstats
path: root/src/opengl/qgl_qpa.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/opengl/qgl_qpa.cpp')
-rw-r--r--src/opengl/qgl_qpa.cpp12
1 files changed, 10 insertions, 2 deletions
diff --git a/src/opengl/qgl_qpa.cpp b/src/opengl/qgl_qpa.cpp
index 46dfd54adf..afa2772a6f 100644
--- a/src/opengl/qgl_qpa.cpp
+++ b/src/opengl/qgl_qpa.cpp
@@ -148,7 +148,9 @@ bool QGLContext::chooseContext(const QGLContext* shareContext)
widget->winId();//make window
}
- delete d->guiGlContext;
+ if (d->ownContext)
+ delete d->guiGlContext;
+ d->ownContext = true;
QOpenGLContext *shareGlContext = shareContext ? shareContext->d_func()->guiGlContext : 0;
d->guiGlContext = new QOpenGLContext;
d->guiGlContext->setFormat(winFormat);
@@ -180,8 +182,13 @@ void QGLContext::reset()
d->initDone = false;
QGLContextGroup::removeShare(this);
if (d->guiGlContext) {
- d->guiGlContext->setQGLContextHandle(0,0);
+ if (d->ownContext)
+ delete d->guiGlContext;
+ else
+ d->guiGlContext->setQGLContextHandle(0,0);
+ d->guiGlContext = 0;
}
+ d->ownContext = false;
}
void QGLContext::makeCurrent()
@@ -385,6 +392,7 @@ QGLContext::QGLContext(QOpenGLContext *context)
d->init(0, QGLFormat::fromSurfaceFormat(context->format()));
d->guiGlContext = context;
d->guiGlContext->setQGLContextHandle(this,qDeleteQGLContext);
+ d->ownContext = false;
d->valid = context->isValid();
d->setupSharing();
}