summaryrefslogtreecommitdiffstats
path: root/src/opengl/qgl_qpa.cpp
diff options
context:
space:
mode:
authorSamuel Rødal <samuel.rodal@nokia.com>2011-09-07 09:30:53 +0200
committerJørgen Lind <jorgen.lind@nokia.com>2011-09-07 10:09:36 +0200
commite2be53891fe218c9a1a63c2d385d149d2b1f982f (patch)
treedd88bf4a6d6f78bb97638a662e2a41c37dc206df /src/opengl/qgl_qpa.cpp
parentfa0407bdb50262f8748e955cf698181cc6906542 (diff)
Fixed tst_QGL::destroyFBOAfterContext().
Properly free QOpenGLContext in QGLContext::reset(), if we own it. Change-Id: Ibd913283cf8b3b8a4dc6295a878a22a3989309a7 Reviewed-on: http://codereview.qt.nokia.com/4320 Reviewed-by: Qt Sanity Bot <qt_sanity_bot@ovi.com> Reviewed-by: Jørgen Lind <jorgen.lind@nokia.com>
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();
}