From 200b18d44a930fed1e3ee52bb34435cbe63c757e Mon Sep 17 00:00:00 2001
From: hjk <qtc-committer@nokia.com>
Date: Mon, 28 Jun 2010 09:10:20 +0200
Subject: [PATCH] debugger: don't load registers if view is not shown

---
 src/plugins/debugger/debuggerengine.cpp | 4 ++++
 src/plugins/debugger/debuggerplugin.cpp | 5 +++++
 src/plugins/debugger/debuggerplugin.h   | 2 ++
 src/plugins/debugger/gdb/gdbengine.cpp  | 3 +++
 4 files changed, 14 insertions(+)

diff --git a/src/plugins/debugger/debuggerengine.cpp b/src/plugins/debugger/debuggerengine.cpp
index 04fd03a42c2..8e286a8ac62 100644
--- a/src/plugins/debugger/debuggerengine.cpp
+++ b/src/plugins/debugger/debuggerengine.cpp
@@ -359,6 +359,10 @@ void DebuggerEngine::handleCommand(int role, const QVariant &value)
             reloadModules();
             break;
 
+        case RequestReloadRegistersRole:
+            reloadRegisters();
+            break;
+
         case RequestExecContinueRole:
             continueInferior();
             break;
diff --git a/src/plugins/debugger/debuggerplugin.cpp b/src/plugins/debugger/debuggerplugin.cpp
index f5fc8ce96f6..b527bbbcd82 100644
--- a/src/plugins/debugger/debuggerplugin.cpp
+++ b/src/plugins/debugger/debuggerplugin.cpp
@@ -2548,6 +2548,11 @@ DebuggerEngine *DebuggerPlugin::sessionTemplate()
     return d->m_sessionEngine;
 }
 
+bool DebuggerPlugin::isRegisterViewVisible() const
+{
+    return d->m_registerDock->toggleViewAction()->isChecked();
+}
+
 //////////////////////////////////////////////////////////////////////
 //
 // Testing
diff --git a/src/plugins/debugger/debuggerplugin.h b/src/plugins/debugger/debuggerplugin.h
index 552f5184b0a..d3fadff4c6c 100644
--- a/src/plugins/debugger/debuggerplugin.h
+++ b/src/plugins/debugger/debuggerplugin.h
@@ -103,6 +103,8 @@ public:
     Internal::DebuggerEngine *sessionTemplate();
     void updateState(Internal::DebuggerEngine *engine);
 
+    bool isRegisterViewVisible() const;
+
 public slots:
     void exitDebugger();  // FIXME: remove
     void clearCppCodeModelSnapshot();
diff --git a/src/plugins/debugger/gdb/gdbengine.cpp b/src/plugins/debugger/gdb/gdbengine.cpp
index 5605cb8088f..eac740c0d89 100644
--- a/src/plugins/debugger/gdb/gdbengine.cpp
+++ b/src/plugins/debugger/gdb/gdbengine.cpp
@@ -3079,6 +3079,9 @@ void GdbEngine::activateSnapshot2()
 
 void GdbEngine::reloadRegisters()
 {
+    if (!plugin()->isRegisterViewVisible())
+        return;
+
     if (state() != InferiorStopped && state() != InferiorUnrunnable)
         return;
     if (!m_registerNamesListed) {
-- 
GitLab