aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorhjk <hjk@theqtcompany.com>2016-04-13 15:13:54 +0200
committerhjk <hjk@theqtcompany.com>2016-04-15 14:24:35 +0000
commit12788ffb2dafea1536efa49fd9e1b1c98898cd35 (patch)
tree8b351b7d49cc256cfe598917f8592e44fc412616
parent25603f9dc830f3b0f8a5eecbf236d98a06193195 (diff)
Debugger: Avoid looking up references too often
Multiple copies of lookup requests may accumulate when stepping too quickly, outsmarting the 'all updates done' logic, keeping Locals&Expressions in the grey 'update ongoing' state. Change-Id: Icec24ce1af8d273c3439ee91800ed1f4381ee19a Reviewed-by: Ulf Hermann <ulf.hermann@theqtcompany.com> (cherry picked from commit c1de315d6cbf8c94888aa4598d574ee2c3db272e)
-rw-r--r--src/plugins/debugger/qml/qmlengine.cpp12
1 files changed, 9 insertions, 3 deletions
diff --git a/src/plugins/debugger/qml/qmlengine.cpp b/src/plugins/debugger/qml/qmlengine.cpp
index e60af006903..3a12d27271f 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
{
@@ -1375,8 +1375,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);