diff options
author | Sami Varanka <sami.varanka@qt.io> | 2021-06-07 12:55:22 +0300 |
---|---|---|
committer | Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> | 2021-06-23 09:45:51 +0000 |
commit | 6b627c3e060b83251c30b0adb26bfb8c55120255 (patch) | |
tree | 9477d5b7325a91f6ad97a244db91d35318803242 /src | |
parent | 0de43933a09e079dad2caf5a8e7e84f5801e2c87 (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.cpp | 2 | ||||
-rw-r--r-- | src/datavisualization/utils/scatterpointbufferhelper.cpp | 1 |
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; |