From a04a16538555d0db110802d474aa999d316c4a62 Mon Sep 17 00:00:00 2001
From: Fawzi Mohamed <fawzi.mohamed@digia.com>
Date: Thu, 16 Jan 2014 11:43:59 +0100
Subject: [PATCH] qml: avoid dumping or reading type info multiple times

Change-Id: Id0c52f6a96a5c36893f64cbc96cc7eee300e6afa
Reviewed-by: Eike Ziller <eike.ziller@digia.com>
Reviewed-by: Kai Koehne <kai.koehne@digia.com>
---
 src/plugins/qmljstools/qmljsplugindumper.cpp | 9 ++++++---
 1 file changed, 6 insertions(+), 3 deletions(-)

diff --git a/src/plugins/qmljstools/qmljsplugindumper.cpp b/src/plugins/qmljstools/qmljsplugindumper.cpp
index 01c2d8518ef..71d00708701 100644
--- a/src/plugins/qmljstools/qmljsplugindumper.cpp
+++ b/src/plugins/qmljstools/qmljsplugindumper.cpp
@@ -171,12 +171,15 @@ void PluginDumper::onLoadPluginTypes(const QString &libraryPath, const QString &
     // add default qmltypes file if it exists
     const QLatin1String defaultQmltypesFileName("plugins.qmltypes");
     const QString defaultQmltypesPath = makeAbsolute(defaultQmltypesFileName, canonicalLibraryPath);
-    if (QFile::exists(defaultQmltypesPath))
+    if (!plugin.typeInfoPaths.contains(defaultQmltypesPath) && QFile::exists(defaultQmltypesPath))
         plugin.typeInfoPaths += defaultQmltypesPath;
 
     // add typeinfo files listed in qmldir
-    foreach (const QmlDirParser::TypeInfo &typeInfo, libraryInfo.typeInfos())
-        plugin.typeInfoPaths += makeAbsolute(typeInfo.fileName, canonicalLibraryPath);
+    foreach (const QmlDirParser::TypeInfo &typeInfo, libraryInfo.typeInfos()) {
+        QString pathNow = makeAbsolute(typeInfo.fileName, canonicalLibraryPath);
+        if (!plugin.typeInfoPaths.contains(pathNow) && QFile::exists(pathNow))
+            plugin.typeInfoPaths += pathNow;
+    }
 
     // watch plugin libraries
     foreach (const QmlDirParser::Plugin &plugin, snapshot.libraryInfo(canonicalLibraryPath).plugins()) {
-- 
GitLab