summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--tools/q3dsviewer/q3dsmainwindow.cpp13
-rw-r--r--tools/q3dsviewer/q3dsmainwindow.h4
2 files changed, 16 insertions, 1 deletions
diff --git a/tools/q3dsviewer/q3dsmainwindow.cpp b/tools/q3dsviewer/q3dsmainwindow.cpp
index 837c63c..1182d8e 100644
--- a/tools/q3dsviewer/q3dsmainwindow.cpp
+++ b/tools/q3dsviewer/q3dsmainwindow.cpp
@@ -58,6 +58,13 @@ Q3DStudioMainWindow::Q3DStudioMainWindow(Q3DSWindow *view, Q3DSRemoteDeploymentM
styleFile.open(QFile::ReadOnly);
qApp->setStyleSheet(styleFile.readAll());
+ // This timer makes sure that reloads are not called more often than once per second
+ m_refreshTimer.setInterval(1000);
+ m_refreshTimer.setSingleShot(true);
+ connect(&m_refreshTimer, &QTimer::timeout, [this] {
+ m_okToReload = true;
+ });
+
static const bool enableDebugMenu = qEnvironmentVariableIntValue("Q3DS_DEBUG") >= 1;
QWidget *wrapper = QWidget::createWindowContainer(view);
@@ -98,7 +105,11 @@ Q3DStudioMainWindow::Q3DStudioMainWindow(Q3DSWindow *view, Q3DSRemoteDeploymentM
remote->state() != Q3DSRemoteDeploymentManager::LocalProject &&
remote->state() != Q3DSRemoteDeploymentManager::RemoteProject)
return;
- view->engine()->setSource(view->engine()->source());
+ if (m_okToReload) {
+ view->engine()->setSource(view->engine()->source());
+ m_refreshTimer.start();
+ m_okToReload = false;
+ }
});
fileMenu->addAction(reloadAction);
addAction(reloadAction);
diff --git a/tools/q3dsviewer/q3dsmainwindow.h b/tools/q3dsviewer/q3dsmainwindow.h
index 1d29f88..c38118c 100644
--- a/tools/q3dsviewer/q3dsmainwindow.h
+++ b/tools/q3dsviewer/q3dsmainwindow.h
@@ -31,6 +31,7 @@
#define Q3DSTUDIOMAINWINDOW_H
#include <QMainWindow>
+#include <QTimer>
QT_BEGIN_NAMESPACE
@@ -44,6 +45,9 @@ public:
explicit Q3DStudioMainWindow(Q3DSWindow *view, Q3DSRemoteDeploymentManager *remote = nullptr, QWidget *parent = nullptr);
static QString fileFilter();
+private:
+ QTimer m_refreshTimer;
+ bool m_okToReload = true;
};
QT_END_NAMESPACE