summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorMiikka Heikkinen <miikka.heikkinen@digia.com>2014-02-25 12:01:21 +0200
committerTomi Korpipää <tomi.korpipaa@digia.com>2014-02-25 12:34:12 +0200
commit149c93ced7fdfa7af2192d4999837a74c268cc25 (patch)
tree5e99b10e9b95eb234ee985b368c389ec4530b592 /src
parentb4f524874ff25559034f1c1ce940386280ae776b (diff)
Fix Valgrind found issues
Change-Id: Iccacab527abf745e7ccd1e562ff9ea5dea4c8005 Reviewed-by: Tomi Korpipää <tomi.korpipaa@digia.com>
Diffstat (limited to 'src')
-rw-r--r--src/datavisualization/engine/seriesrendercache.cpp10
-rw-r--r--src/datavisualization/engine/seriesrendercache_p.h2
-rw-r--r--src/datavisualization/engine/surface3drenderer.cpp9
-rw-r--r--src/datavisualization/engine/surfaceseriesrendercache.cpp33
-rw-r--r--src/datavisualization/engine/surfaceseriesrendercache_p.h2
-rw-r--r--src/datavisualizationqml2/declarativerendernode.cpp1
6 files changed, 34 insertions, 23 deletions
diff --git a/src/datavisualization/engine/seriesrendercache.cpp b/src/datavisualization/engine/seriesrendercache.cpp
index 1c7e5e80..896b3b28 100644
--- a/src/datavisualization/engine/seriesrendercache.cpp
+++ b/src/datavisualization/engine/seriesrendercache.cpp
@@ -185,10 +185,12 @@ void SeriesRenderCache::populate(QAbstract3DSeries *series, Abstract3DRenderer *
void SeriesRenderCache::cleanup(TextureHelper *texHelper)
{
delete m_object;
- texHelper->deleteTexture(&m_baseUniformTexture);
- texHelper->deleteTexture(&m_baseGradientTexture);
- texHelper->deleteTexture(&m_singleHighlightGradientTexture);
- texHelper->deleteTexture(&m_multiHighlightGradientTexture);
+ if (QOpenGLContext::currentContext()) {
+ texHelper->deleteTexture(&m_baseUniformTexture);
+ texHelper->deleteTexture(&m_baseGradientTexture);
+ texHelper->deleteTexture(&m_singleHighlightGradientTexture);
+ texHelper->deleteTexture(&m_multiHighlightGradientTexture);
+ }
}
QT_END_NAMESPACE_DATAVISUALIZATION
diff --git a/src/datavisualization/engine/seriesrendercache_p.h b/src/datavisualization/engine/seriesrendercache_p.h
index 7994339a..77e050b0 100644
--- a/src/datavisualization/engine/seriesrendercache_p.h
+++ b/src/datavisualization/engine/seriesrendercache_p.h
@@ -45,7 +45,7 @@ public:
virtual ~SeriesRenderCache();
void populate(QAbstract3DSeries *series, Abstract3DRenderer *renderer);
- void cleanup(TextureHelper *texHelper);
+ virtual void cleanup(TextureHelper *texHelper);
// NOTE: Series pointer can only be used to access the series when syncing with controller.
// It is not guaranteed to be valid while rendering and should only be used as an identifier.
diff --git a/src/datavisualization/engine/surface3drenderer.cpp b/src/datavisualization/engine/surface3drenderer.cpp
index 47978170..ffcdeb7a 100644
--- a/src/datavisualization/engine/surface3drenderer.cpp
+++ b/src/datavisualization/engine/surface3drenderer.cpp
@@ -119,10 +119,6 @@ Surface3DRenderer::~Surface3DRenderer()
m_textureHelper->deleteTexture(&m_depthTexture);
m_textureHelper->deleteTexture(&m_depthModelTexture);
m_textureHelper->deleteTexture(&m_selectionResultTexture);
- foreach (SurfaceSeriesRenderCache *cache, m_renderCacheList) {
- GLuint texture = cache->selectionTexture();
- m_textureHelper->deleteTexture(&texture);
- }
}
delete m_depthShader;
delete m_backgroundShader;
@@ -136,8 +132,10 @@ Surface3DRenderer::~Surface3DRenderer()
delete m_gridLineObj;
delete m_labelObj;
- foreach (SurfaceSeriesRenderCache *cache, m_renderCacheList)
+ foreach (SurfaceSeriesRenderCache *cache, m_renderCacheList) {
+ cache->cleanup(m_textureHelper);
delete cache;
+ }
m_renderCacheList.clear();
}
@@ -272,6 +270,7 @@ void Surface3DRenderer::updateSeries(const QList<QAbstract3DSeries *> &seriesLis
updateSelectedPoint(Surface3DController::invalidSelectionPosition(), 0);
m_renderCacheList.remove(cache->series());
+ cache->cleanup(m_textureHelper);
delete cache;
m_selectionTexturesDirty = true;
diff --git a/src/datavisualization/engine/surfaceseriesrendercache.cpp b/src/datavisualization/engine/surfaceseriesrendercache.cpp
index bc261f05..ba25d71d 100644
--- a/src/datavisualization/engine/surfaceseriesrendercache.cpp
+++ b/src/datavisualization/engine/surfaceseriesrendercache.cpp
@@ -50,18 +50,6 @@ SurfaceSeriesRenderCache::SurfaceSeriesRenderCache()
SurfaceSeriesRenderCache::~SurfaceSeriesRenderCache()
{
- delete m_surfaceObj;
- delete m_sliceSurfaceObj;
- for (int i = 0; i < m_dataArray.size(); i++)
- delete m_dataArray.at(i);
- m_dataArray.clear();
-
- for (int i = 0; i < m_sliceDataArray.size(); i++)
- delete m_sliceDataArray.at(i);
- m_sliceDataArray.clear();
-
- delete m_sliceSelectionPointer;
- delete m_mainSelectionPointer;
}
void SurfaceSeriesRenderCache::populate(QSurface3DSeries *series, Abstract3DRenderer *renderer)
@@ -79,4 +67,25 @@ void SurfaceSeriesRenderCache::populate(QSurface3DSeries *series, Abstract3DRend
}
}
+void SurfaceSeriesRenderCache::cleanup(TextureHelper *texHelper)
+{
+ if (QOpenGLContext::currentContext())
+ texHelper->deleteTexture(&m_selectionTexture);
+
+ delete m_surfaceObj;
+ delete m_sliceSurfaceObj;
+ for (int i = 0; i < m_dataArray.size(); i++)
+ delete m_dataArray.at(i);
+ m_dataArray.clear();
+
+ for (int i = 0; i < m_sliceDataArray.size(); i++)
+ delete m_sliceDataArray.at(i);
+ m_sliceDataArray.clear();
+
+ delete m_sliceSelectionPointer;
+ delete m_mainSelectionPointer;
+
+ SeriesRenderCache::cleanup(texHelper);
+}
+
QT_END_NAMESPACE_DATAVISUALIZATION
diff --git a/src/datavisualization/engine/surfaceseriesrendercache_p.h b/src/datavisualization/engine/surfaceseriesrendercache_p.h
index e44691fd..2dda0670 100644
--- a/src/datavisualization/engine/surfaceseriesrendercache_p.h
+++ b/src/datavisualization/engine/surfaceseriesrendercache_p.h
@@ -51,7 +51,7 @@ public:
virtual ~SurfaceSeriesRenderCache();
void populate(QSurface3DSeries *series, Abstract3DRenderer *renderer);
- void cleanup(TextureHelper *texHelper);
+ virtual void cleanup(TextureHelper *texHelper);
inline bool surfaceVisible() const { return m_surfaceVisible; }
inline bool surfaceGridVisible() const { return m_surfaceGridVisible; }
diff --git a/src/datavisualizationqml2/declarativerendernode.cpp b/src/datavisualizationqml2/declarativerendernode.cpp
index 00e4caa5..1f6d4b56 100644
--- a/src/datavisualizationqml2/declarativerendernode.cpp
+++ b/src/datavisualizationqml2/declarativerendernode.cpp
@@ -46,6 +46,7 @@ DeclarativeRenderNode::~DeclarativeRenderNode()
{
delete m_fbo;
delete m_multisampledFBO;
+ delete m_texture;
}
void DeclarativeRenderNode::setSize(const QSize &size)