diff options
author | hjk <hjk@theqtcompany.com> | 2016-04-13 15:13:54 +0200 |
---|---|---|
committer | hjk <hjk@theqtcompany.com> | 2016-04-15 14:24:35 +0000 |
commit | 12788ffb2dafea1536efa49fd9e1b1c98898cd35 (patch) | |
tree | 8b351b7d49cc256cfe598917f8592e44fc412616 | |
parent | 25603f9dc830f3b0f8a5eecbf236d98a06193195 (diff) | |
download | qt-creator-12788ffb2dafea1536efa49fd9e1b1c98898cd35.tar.gz |
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.cpp | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/src/plugins/debugger/qml/qmlengine.cpp b/src/plugins/debugger/qml/qmlengine.cpp index e60af00690..3a12d27271 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); |