summaryrefslogtreecommitdiffstats
path: root/src/datavisualization/engine/abstract3drenderer_p.h
diff options
context:
space:
mode:
authorMiikka Heikkinen <miikka.heikkinen@theqtcompany.com>2014-10-13 10:21:20 +0300
committerMiikka Heikkinen <miikka.heikkinen@theqtcompany.com>2014-10-13 10:33:10 +0300
commit732c9f39f08d7867c8e127c84d319ae514d682fd (patch)
treeacb14a3dbe2cb98e154c28b6845b83c687abb752 /src/datavisualization/engine/abstract3drenderer_p.h
parent8ff6a5d6d89d80707dc07fc96e22160fa1f8e973 (diff)
Fix context cleanup
Context was not getting properly cleaned up in cases where render thread stopped before the cleanup took place. Now we ensure that required cleanup is done before context thread terminates. Change-Id: I1489914dafec928eebb69bac737f6f858ff49432 Reviewed-by: Tomi Korpipää <tomi.korpipaa@digia.com>
Diffstat (limited to 'src/datavisualization/engine/abstract3drenderer_p.h')
-rw-r--r--src/datavisualization/engine/abstract3drenderer_p.h9
1 files changed, 9 insertions, 0 deletions
diff --git a/src/datavisualization/engine/abstract3drenderer_p.h b/src/datavisualization/engine/abstract3drenderer_p.h
index d8ca7696..1857278c 100644
--- a/src/datavisualization/engine/abstract3drenderer_p.h
+++ b/src/datavisualization/engine/abstract3drenderer_p.h
@@ -37,6 +37,8 @@
#include "seriesrendercache_p.h"
#include "customrenderitem_p.h"
+class QSurface;
+
QT_BEGIN_NAMESPACE_DATAVISUALIZATION
class TextureHelper;
@@ -229,6 +231,9 @@ protected:
void queriedGraphPosition(const QMatrix4x4 &projectionViewMatrix, const QVector3D &scaling,
GLuint defaultFboHandle);
+ void fixContextBeforeDelete();
+ void restoreContextAfterDelete();
+
bool m_hasNegativeValues;
Q3DTheme *m_cachedTheme;
Drawer *m_drawer;
@@ -318,6 +323,10 @@ protected:
qreal m_reflectivity;
QLocale m_locale;
+ QPointer<QOpenGLContext> m_context; // Not owned
+ QOpenGLContext *m_currentContextAtDelete; // Not owned
+ QSurface *m_currentSurfaceAtDelete; // Not owned
+ QWindow *m_dummySurfaceAtDelete;
private:
friend class Abstract3DController;