From c1de315d6cbf8c94888aa4598d574ee2c3db272e Mon Sep 17 00:00:00 2001
From: hjk <hjk@theqtcompany.com>
Date: Wed, 13 Apr 2016 15:13:54 +0200
Subject: [PATCH] Debugger: Avoid looking up references too often

Change-Id: Icec24ce1af8d273c3439ee91800ed1f4381ee19a
Reviewed-by: Ulf Hermann <ulf.hermann@theqtcompany.com>
---
 src/plugins/debugger/qml/qmlengine.cpp | 12 +++++++++---
 1 file changed, 9 insertions(+), 3 deletions(-)

diff --git a/src/plugins/debugger/qml/qmlengine.cpp b/src/plugins/debugger/qml/qmlengine.cpp
index b8a7c2d5326..bbbd1158ec1 100644
--- a/src/plugins/debugger/qml/qmlengine.cpp
+++ b/src/plugins/debugger/qml/qmlengine.cpp
@@ -125,7 +125,7 @@ struct LookupData
     QByteArray exp;
 };
 
-typedef QMultiHash<int, LookupData> LookupItems; // id -> (iname, exp)
+typedef QHash<int, LookupData> LookupItems; // id -> (iname, exp)
 
 class QmlEnginePrivate : QmlDebugClient
 {
@@ -1362,8 +1362,14 @@ void QmlEnginePrivate::lookup(const LookupItems &items)
     if (items.isEmpty())
         return;
 
-    QList<int> handles = items.keys();
-    currentlyLookingUp += items;
+    QList<int> handles;
+    for (auto it = items.begin(); it != items.end(); ++it) {
+        const int handle = it.key();
+        if (!currentlyLookingUp.contains(handle)) {
+            currentlyLookingUp.insert(handle, it.value());
+            handles.append(handle);
+        }
+    }
 
     DebuggerCommand cmd(LOOKUP);
     cmd.arg(HANDLES, handles);
-- 
GitLab