summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorSami Varanka <sami.varanka@qt.io>2021-06-07 12:55:22 +0300
committerQt Cherry-pick Bot <cherrypick_bot@qt-project.org>2021-06-23 09:45:51 +0000
commit6b627c3e060b83251c30b0adb26bfb8c55120255 (patch)
tree9477d5b7325a91f6ad97a244db91d35318803242 /src
parent0de43933a09e079dad2caf5a8e7e84f5801e2c87 (diff)
Fix Q3DScatter memory leak
When using static optimization for scattergraph and series mesh type is not point mesh, the scatter3D renderer uses ScatterObjectBufferHelper's fullLoad. In the fullLoad old data buffers are deleted, if m_meshDataLoaded is set to true. However, at the beginning of the fullLoad, the flag was always set to false so old data buffers were never deleted. Moved the setting of the m_meshDataLoaded to false after the deletion of old buffers. Added similar code to scatterpointbufferhelper for consistency. Fixes: QTBUG-80194 Change-Id: I2fd71af86b1fd73621074187f112fd9783df36df Reviewed-by: Tomi Korpipää <tomi.korpipaa@qt.io> (cherry picked from commit c0fd354690a6de2923e975bb4586fa5bbf310bb1) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
Diffstat (limited to 'src')
-rw-r--r--src/datavisualization/utils/scatterobjectbufferhelper.cpp2
-rw-r--r--src/datavisualization/utils/scatterpointbufferhelper.cpp1
2 files changed, 2 insertions, 1 deletions
diff --git a/src/datavisualization/utils/scatterobjectbufferhelper.cpp b/src/datavisualization/utils/scatterobjectbufferhelper.cpp
index 04aa350a..0efd8572 100644
--- a/src/datavisualization/utils/scatterobjectbufferhelper.cpp
+++ b/src/datavisualization/utils/scatterobjectbufferhelper.cpp
@@ -48,7 +48,6 @@ ScatterObjectBufferHelper::~ScatterObjectBufferHelper()
void ScatterObjectBufferHelper::fullLoad(ScatterSeriesRenderCache *cache, qreal dotScale)
{
- m_meshDataLoaded = false;
m_indexCount = 0;
ObjectHelper *dotObj = cache->object();
@@ -71,6 +70,7 @@ void ScatterObjectBufferHelper::fullLoad(ScatterSeriesRenderCache *cache, qreal
m_uvbuffer = 0;
m_normalbuffer = 0;
m_elementbuffer = 0;
+ m_meshDataLoaded = false;
}
// Index vertices
diff --git a/src/datavisualization/utils/scatterpointbufferhelper.cpp b/src/datavisualization/utils/scatterpointbufferhelper.cpp
index 751e5639..9600a386 100644
--- a/src/datavisualization/utils/scatterpointbufferhelper.cpp
+++ b/src/datavisualization/utils/scatterpointbufferhelper.cpp
@@ -97,6 +97,7 @@ void ScatterPointBufferHelper::load(ScatterSeriesRenderCache *cache)
m_bufferedPoints.clear();
m_pointbuffer = 0;
m_uvbuffer = 0;
+ m_meshDataLoaded = false;
}
bool itemsVisible = false;