diff --git a/src/plugins/debugger/debuggerengine.cpp b/src/plugins/debugger/debuggerengine.cpp index 3c6e210ce13d50f5b1e6f3910842539f244a82cd..e355de2de0d6ae559471e6250e1bdf3af1620b62 100644 --- a/src/plugins/debugger/debuggerengine.cpp +++ b/src/plugins/debugger/debuggerengine.cpp @@ -246,6 +246,7 @@ public slots: void scheduleResetLocation() { m_stackHandler.scheduleResetLocation(); + m_disassemblerAgent.scheduleResetLocation(); m_locationTimer.setSingleShot(true); m_locationTimer.start(80); } diff --git a/src/plugins/debugger/disassembleragent.cpp b/src/plugins/debugger/disassembleragent.cpp index fa8f91d2e03eb05f5317f31149aaf0c93692d212..5b354aa1eaf4181f38137f8121a9f474e32e5ed7 100644 --- a/src/plugins/debugger/disassembleragent.cpp +++ b/src/plugins/debugger/disassembleragent.cpp @@ -117,13 +117,15 @@ public: QHash<QString, DisassemblerLines> cache; QString mimeType; + bool m_resetLocationScheduled; }; DisassemblerAgentPrivate::DisassemblerAgentPrivate() : editor(0), tryMixed(true), locationMark(new LocationMark2), - mimeType(_("text/x-qtcreator-generic-asm")) + mimeType(_("text/x-qtcreator-generic-asm")), + m_resetLocationScheduled(false) { } @@ -162,11 +164,19 @@ void DisassemblerAgent::cleanup() d->cache.clear(); } +void DisassemblerAgent::scheduleResetLocation() +{ + d->m_resetLocationScheduled = true; +} + void DisassemblerAgent::resetLocation() { if (!d->editor) return; - d->editor->markableInterface()->removeMark(d->locationMark); + if (d->m_resetLocationScheduled) { + d->m_resetLocationScheduled = false; + d->editor->markableInterface()->removeMark(d->locationMark); + } } static QString frameKey(const Location &loc) diff --git a/src/plugins/debugger/disassembleragent.h b/src/plugins/debugger/disassembleragent.h index f2b69f8b05f76339e4e5b40a9c1fa3681a6704fc..7c779315b3a75b4c0880336911a19314159e3ca2 100644 --- a/src/plugins/debugger/disassembleragent.h +++ b/src/plugins/debugger/disassembleragent.h @@ -57,6 +57,7 @@ public: void setTryMixed(bool on); void setLocation(const Location &location); const Location &location() const; + void scheduleResetLocation(); void resetLocation(); void setContents(const DisassemblerLines &contents); void updateLocationMarker();