diff options
author | Miikka Heikkinen <miikka.heikkinen@digia.com> | 2013-12-20 11:31:04 +0200 |
---|---|---|
committer | Miikka Heikkinen <miikka.heikkinen@digia.com> | 2013-12-20 11:41:54 +0200 |
commit | c32f52c8a00292d91ada5b8cf05b6edc6713ead2 (patch) | |
tree | fdc67cd89f339ecfda8d59ee33ef5b428e3d7d75 /src/datavisualization/utils | |
parent | dcf57ae33cbe173724f7f18d94c3d67cac27fac1 (diff) |
Check context before attempting to release opengl resources
In case of QMl ApplicationWindow using applications, openGL context
seems to be 0 when the renderer gets destroyed at application
shutdown. Work around this by checking for context validity on
destructors before attempting to free openGL resources.
Change-Id: I5ba5209740f8f4467f4ba2cc8dd195171bcd13c8
Reviewed-by: Mika Salmela <mika.salmela@digia.com>
Diffstat (limited to 'src/datavisualization/utils')
-rw-r--r-- | src/datavisualization/utils/abstractobjecthelper.cpp | 10 | ||||
-rw-r--r-- | src/datavisualization/utils/surfaceobject.cpp | 3 |
2 files changed, 8 insertions, 5 deletions
diff --git a/src/datavisualization/utils/abstractobjecthelper.cpp b/src/datavisualization/utils/abstractobjecthelper.cpp index d47f2fe6..96cdc0c4 100644 --- a/src/datavisualization/utils/abstractobjecthelper.cpp +++ b/src/datavisualization/utils/abstractobjecthelper.cpp @@ -34,10 +34,12 @@ AbstractObjectHelper::AbstractObjectHelper() AbstractObjectHelper::~AbstractObjectHelper() { - glDeleteBuffers(1, &m_vertexbuffer); - glDeleteBuffers(1, &m_uvbuffer); - glDeleteBuffers(1, &m_normalbuffer); - glDeleteBuffers(1, &m_elementbuffer); + if (QOpenGLContext::currentContext()) { + glDeleteBuffers(1, &m_vertexbuffer); + glDeleteBuffers(1, &m_uvbuffer); + glDeleteBuffers(1, &m_normalbuffer); + glDeleteBuffers(1, &m_elementbuffer); + } } GLuint AbstractObjectHelper::vertexBuf() diff --git a/src/datavisualization/utils/surfaceobject.cpp b/src/datavisualization/utils/surfaceobject.cpp index 605376e2..6e4765e5 100644 --- a/src/datavisualization/utils/surfaceobject.cpp +++ b/src/datavisualization/utils/surfaceobject.cpp @@ -39,7 +39,8 @@ SurfaceObject::SurfaceObject() SurfaceObject::~SurfaceObject() { - glDeleteBuffers(1, &m_gridElementbuffer); + if (QOpenGLContext::currentContext()) + glDeleteBuffers(1, &m_gridElementbuffer); } void SurfaceObject::setUpSmoothData(const QSurfaceDataArray &dataArray, const QRect &space, |