diff options
author | Kaj Grönholm <kaj.gronholm@qt.io> | 2018-11-21 11:51:05 +0200 |
---|---|---|
committer | Laszlo Agocs <laszlo.agocs@qt.io> | 2018-11-26 10:00:04 +0000 |
commit | 5f8f448e0304e5637fe7f2b64c05c93b3aa48410 (patch) | |
tree | 7e119bb0cade04ab38b6c29a1abfd9acd8027bf4 | |
parent | 0e5983e737abcd664e07f22da342f1ae41b52124 (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.cpp | 4 | ||||
-rw-r--r-- | src/runtime/q3dsengine.cpp | 2 |
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()); |