summaryrefslogtreecommitdiffstats
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
parentb4f524874ff25559034f1c1ce940386280ae776b (diff)
Fix Valgrind found issues
Change-Id: Iccacab527abf745e7ccd1e562ff9ea5dea4c8005 Reviewed-by: Tomi Korpipää <tomi.korpipaa@digia.com>
-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
-rw-r--r--tests/multigraphs/data.cpp1
-rw-r--r--tests/scattertest/scatterchart.cpp28
-rw-r--r--tests/surfacetest/main.cpp28
9 files changed, 64 insertions, 50 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)
diff --git a/tests/multigraphs/data.cpp b/tests/multigraphs/data.cpp
index 1164a2f1..9fd27b96 100644
--- a/tests/multigraphs/data.cpp
+++ b/tests/multigraphs/data.cpp
@@ -149,6 +149,7 @@ void Data::setResolution(int selection)
if (m_mode == Scatter) {
m_resize = true;
m_resolution /= 3;
+ delete m_scatterDataArray;
m_scatterDataArray = new QScatterDataArray;
m_scatterDataArray->resize(m_resolution.width() * m_resolution.height());
} else if (m_mode == Bars) {
diff --git a/tests/scattertest/scatterchart.cpp b/tests/scattertest/scatterchart.cpp
index 6ee7711e..aa0c5454 100644
--- a/tests/scattertest/scatterchart.cpp
+++ b/tests/scattertest/scatterchart.cpp
@@ -433,19 +433,21 @@ void ScatterDataModifier::setGradient()
singleHighlightGradient.setColorAt(0.25, Qt::yellow);
singleHighlightGradient.setColorAt(0.0, Qt::white);
- m_targetSeries->setBaseColor(Qt::green);
- m_targetSeries->setSingleHighlightColor(Qt::white);
-
- m_targetSeries->setBaseGradient(baseGradient);
- m_targetSeries->setSingleHighlightGradient(singleHighlightGradient);
-
- Q3DTheme::ColorStyle oldStyle = m_targetSeries->colorStyle();
- if (oldStyle == Q3DTheme::ColorStyleUniform)
- m_targetSeries->setColorStyle(Q3DTheme::ColorStyleObjectGradient);
- else if (oldStyle == Q3DTheme::ColorStyleObjectGradient)
- m_targetSeries->setColorStyle(Q3DTheme::ColorStyleRangeGradient);
- if (oldStyle == Q3DTheme::ColorStyleRangeGradient)
- m_targetSeries->setColorStyle(Q3DTheme::ColorStyleUniform);
+ if (m_targetSeries) {
+ m_targetSeries->setBaseColor(Qt::green);
+ m_targetSeries->setSingleHighlightColor(Qt::white);
+
+ m_targetSeries->setBaseGradient(baseGradient);
+ m_targetSeries->setSingleHighlightGradient(singleHighlightGradient);
+
+ Q3DTheme::ColorStyle oldStyle = m_targetSeries->colorStyle();
+ if (oldStyle == Q3DTheme::ColorStyleUniform)
+ m_targetSeries->setColorStyle(Q3DTheme::ColorStyleObjectGradient);
+ else if (oldStyle == Q3DTheme::ColorStyleObjectGradient)
+ m_targetSeries->setColorStyle(Q3DTheme::ColorStyleRangeGradient);
+ if (oldStyle == Q3DTheme::ColorStyleRangeGradient)
+ m_targetSeries->setColorStyle(Q3DTheme::ColorStyleUniform);
+ }
}
void ScatterDataModifier::addSeries()
diff --git a/tests/surfacetest/main.cpp b/tests/surfacetest/main.cpp
index 5ebd1a33..99c60893 100644
--- a/tests/surfacetest/main.cpp
+++ b/tests/surfacetest/main.cpp
@@ -382,23 +382,23 @@ int main(int argc, char *argv[])
vLayout->addWidget(new QLabel(QStringLiteral("Adjust axis minimum")));
vLayout->addWidget(axisMinSliderX);
vLayout->addWidget(axisMinSliderZ);
- vLayout->addWidget(colorPB);
- vLayout->addWidget(new QLabel(QStringLiteral("Change font")));
- vLayout->addWidget(fontList);
- vLayout->addWidget(labelButton);
- vLayout->addWidget(meshButton);
- vLayout->addWidget(new QLabel(QStringLiteral("Change theme")));
- vLayout->addWidget(themeList);
- vLayout->addWidget(new QLabel(QStringLiteral("Adjust shadow quality")));
- vLayout->addWidget(shadowQuality);
- vLayout->addWidget(new QLabel(QStringLiteral("Selection Mode")));
- vLayout->addWidget(selectionMode);
+ vLayout2->addWidget(new QLabel(QStringLiteral("Change font")));
+ vLayout2->addWidget(fontList);
+ vLayout2->addWidget(labelButton);
+ vLayout2->addWidget(meshButton);
+ vLayout2->addWidget(new QLabel(QStringLiteral("Change theme")));
+ vLayout2->addWidget(themeList);
+ vLayout2->addWidget(new QLabel(QStringLiteral("Adjust shadow quality")));
+ vLayout2->addWidget(shadowQuality);
+ vLayout2->addWidget(new QLabel(QStringLiteral("Selection Mode")));
+ vLayout2->addWidget(selectionMode);
#ifndef MULTI_SERIES
- vLayout->addWidget(selectButton);
- vLayout->addWidget(selectionInfoLabel);
- vLayout->addWidget(flipViewsButton);
+ vLayout2->addWidget(selectButton);
+ vLayout2->addWidget(selectionInfoLabel);
+ vLayout2->addWidget(flipViewsButton);
#endif
+ vLayout2->addWidget(colorPB);
vLayout2->addWidget(changeRowButton);
vLayout2->addWidget(changeRowsButton);
vLayout2->addWidget(changeMultipleRowsButton);