summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-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());