From 4dfb56bb107dea165f60bcc1e198dc02eb79c59e Mon Sep 17 00:00:00 2001
From: hjk <hjk@theqtcompany.com>
Date: Thu, 21 May 2015 15:12:34 +0200
Subject: [PATCH] Debugger: Directly tell memory agents about finishing

Change-Id: I79a718f45835a709daa37dd785ed718c3743d77e
Reviewed-by: Christian Stenger <christian.stenger@theqtcompany.com>
Reviewed-by: David Schulz <david.schulz@theqtcompany.com>
---
 src/plugins/debugger/debuggerengine.cpp |  1 +
 src/plugins/debugger/memoryagent.cpp    | 20 ++++++--------------
 src/plugins/debugger/memoryagent.h      |  2 +-
 3 files changed, 8 insertions(+), 15 deletions(-)

diff --git a/src/plugins/debugger/debuggerengine.cpp b/src/plugins/debugger/debuggerengine.cpp
index 1ec592bc81..a2d293be67 100644
--- a/src/plugins/debugger/debuggerengine.cpp
+++ b/src/plugins/debugger/debuggerengine.cpp
@@ -1265,6 +1265,7 @@ void DebuggerEngine::setState(DebuggerState state, bool forced)
         foreach (Breakpoint bp, breakHandler()->engineBreakpoints(this))
             bp.notifyBreakpointReleased();
         DebuggerToolTipManager::deregisterEngine(this);
+        d->m_memoryAgent.handleDebuggerFinished();
     }
 
     showMessage(msg, LogDebug);
diff --git a/src/plugins/debugger/memoryagent.cpp b/src/plugins/debugger/memoryagent.cpp
index 24c41da594..66904783ba 100644
--- a/src/plugins/debugger/memoryagent.cpp
+++ b/src/plugins/debugger/memoryagent.cpp
@@ -88,8 +88,6 @@ MemoryAgent::MemoryAgent(DebuggerEngine *engine)
     : QObject(engine), m_engine(engine)
 {
     QTC_CHECK(engine);
-    connect(engine, &DebuggerEngine::stateChanged,
-            this, &MemoryAgent::engineStateChanged);
     connect(engine, &DebuggerEngine::stackFrameCompleted,
             this, &MemoryAgent::updateContents);
 }
@@ -254,19 +252,13 @@ bool MemoryAgent::hasVisibleEditor() const
     return false;
 }
 
-void MemoryAgent::engineStateChanged(Debugger::DebuggerState s)
+void MemoryAgent::handleDebuggerFinished()
 {
-    switch (s) {
-    case DebuggerFinished:
-        closeViews();
-        foreach (const QPointer<IEditor> &editor, m_editors)
-            if (editor) { // Prevent triggering updates, etc.
-                MemoryView::setBinEditorReadOnly(editor->widget(), true);
-                editor->widget()->disconnect(this);
-            }
-        break;
-    default:
-        break;
+    foreach (const QPointer<IEditor> &editor, m_editors) {
+        if (editor) { // Prevent triggering updates, etc.
+            MemoryView::setBinEditorReadOnly(editor->widget(), true);
+            editor->widget()->disconnect(this);
+        }
     }
 }
 
diff --git a/src/plugins/debugger/memoryagent.h b/src/plugins/debugger/memoryagent.h
index 33386f126e..a2be79fce5 100644
--- a/src/plugins/debugger/memoryagent.h
+++ b/src/plugins/debugger/memoryagent.h
@@ -101,6 +101,7 @@ public slots:
     void updateContents();
     void closeEditors();
     void closeViews();
+    void handleDebuggerFinished();
 
 private slots:
     void fetchLazyData(quint64 block);
@@ -108,7 +109,6 @@ private slots:
     void handleDataChanged(quint64 address, const QByteArray &data);
     void handleWatchpointRequest(quint64 address, uint size);
     void updateMemoryView(quint64 address, quint64 length);
-    void engineStateChanged(Debugger::DebuggerState s);
 
 private:
     void connectBinEditorWidget(QWidget *w);
-- 
GitLab