summaryrefslogtreecommitdiffstats
path: root/src/Authoring/Studio/Palettes
diff options
context:
space:
mode:
authorMiikka Heikkinen <miikka.heikkinen@qt.io>2018-09-27 10:47:15 +0300
committerMiikka Heikkinen <miikka.heikkinen@qt.io>2018-09-27 07:57:38 +0000
commit05afa85a3a3320a688bcf276607c15a95743a9ba (patch)
treef3e65728fa48802020689dcb6be4e605a839cb68 /src/Authoring/Studio/Palettes
parenteda406902e1d7a08d482d05a9c715609f93ff7b2 (diff)
Fix constant CPU load when project contains qml files
Checking whether a file is a behavior or qml stream is expensive, and it was getting done continuously for some reason. Now we cache the result of the first check for each file. Task-number: QT3DS-2404 Change-Id: Iaf7fab48559790c6561ecf6b00d60febd68e6a08 Reviewed-by: Kimmo Leppälä <kimmo.leppala@qt.io> Reviewed-by: Antti Määttä <antti.maatta@qt.io> Reviewed-by: Mahmoud Badri <mahmoud.badri@qt.io>
Diffstat (limited to 'src/Authoring/Studio/Palettes')
-rw-r--r--src/Authoring/Studio/Palettes/Project/ProjectView.cpp15
1 files changed, 1 insertions, 14 deletions
diff --git a/src/Authoring/Studio/Palettes/Project/ProjectView.cpp b/src/Authoring/Studio/Palettes/Project/ProjectView.cpp
index 6b7a5a49..fcfa8c2b 100644
--- a/src/Authoring/Studio/Palettes/Project/ProjectView.cpp
+++ b/src/Authoring/Studio/Palettes/Project/ProjectView.cpp
@@ -50,7 +50,6 @@
#include <QtQml/qqmlengine.h>
#include <QtQml/qqmlfile.h>
#include <QtQuick/qquickitem.h>
-#include <QtQml/qqmlapplicationengine.h>
ProjectView::ProjectView(const QSize &preferredSize, QWidget *parent) : QQuickWidget(parent)
, m_ProjectModel(new ProjectFileSystemModel(this))
@@ -369,19 +368,7 @@ bool ProjectView::isPresentation(int row) const
bool ProjectView::isQmlStream(int row) const
{
- const QString filePath = m_ProjectModel->filePath(row);
-
- if (!filePath.endsWith(QLatin1String(".qml")))
- return false;
-
- QQmlApplicationEngine qmlEngine(filePath);
- if (qmlEngine.rootObjects().size() > 0) {
- const char *rootClassName = qmlEngine.rootObjects().at(0)
- ->metaObject()->superClass()->className();
- return strcmp(rootClassName, "Q3DStudio::Q3DSQmlBehavior") != 0;
- } else {
- return false;
- }
+ return g_StudioApp.isQmlStream(m_ProjectModel->filePath(row));
}
bool ProjectView::isRefreshable(int row) const