summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorSami Varanka <sami.varanka@qt.io>2021-06-07 12:55:22 +0300
committerSami Varanka <sami.varanka@qt.io>2021-06-08 10:23:53 +0300
commitc0fd354690a6de2923e975bb4586fa5bbf310bb1 (patch)
treef3dce70fe715247f485deba018aa953b4303171f /src
parentde73026a3a7695e1e2f450772a4d9af6260938a4 (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. Pick-to: 5.15 6.1 Fixes: QTBUG-80194 Change-Id: I2fd71af86b1fd73621074187f112fd9783df36df Reviewed-by: Tomi Korpipää <tomi.korpipaa@qt.io>
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;