summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKaj Grönholm <kaj.gronholm@qt.io>2018-11-21 11:51:05 +0200
committerLaszlo Agocs <laszlo.agocs@qt.io>2018-11-26 10:00:04 +0000
commit5f8f448e0304e5637fe7f2b64c05c93b3aa48410 (patch)
tree7e119bb0cade04ab38b6c29a1abfd9acd8027bf4
parent0e5983e737abcd664e07f22da342f1ae41b52124 (diff)
Cleanup Q3DSViewerSettings when reloadingv2.2.0-beta2
Also don't leak previous Q3DSViewportSettings. Task-number: QT3DS-2705 Change-Id: I37ec0ddfeed21eedae49211d7f99655595d1b759 Reviewed-by: Tomi Korpipää <tomi.korpipaa@qt.io> Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
-rw-r--r--src/runtime/api/q3dsviewersettings.cpp4
-rw-r--r--src/runtime/q3dsengine.cpp2
2 files changed, 6 insertions, 0 deletions
diff --git a/src/runtime/api/q3dsviewersettings.cpp b/src/runtime/api/q3dsviewersettings.cpp
index d2d488c..461af0a 100644
--- a/src/runtime/api/q3dsviewersettings.cpp
+++ b/src/runtime/api/q3dsviewersettings.cpp
@@ -247,6 +247,10 @@ void Q3DSViewerSettings::load(const QString &group,
Q3DSViewportSettings *Q3DSViewerSettingsPrivate::createViewportSettingsProxy()
{
Q_Q(Q3DSViewerSettings);
+
+ // Cleanup connections if recreating
+ q->disconnect();
+
Q3DSViewportSettings *vp = new Q3DSViewportSettings(q);
vp->setShowRenderStats(q->isShowingRenderStats());
QObject::connect(q, &Q3DSViewerSettings::showRenderStatsChanged, q, [vp, q] {
diff --git a/src/runtime/q3dsengine.cpp b/src/runtime/q3dsengine.cpp
index 6bb87b5..c0dee6d 100644
--- a/src/runtime/q3dsengine.cpp
+++ b/src/runtime/q3dsengine.cpp
@@ -1228,6 +1228,8 @@ void Q3DSEngine::setViewportSettings(Q3DSViewportSettings *viewportSettings)
if (m_viewportSettings == viewportSettings)
return;
+ delete m_viewportSettings;
+
m_viewportSettings = viewportSettings;
connect(m_viewportSettings, &Q3DSViewportSettings::showRenderStatsChanged, [this] {
setProfileUiVisible(m_viewportSettings->isShowingRenderStats());