From 079fc49e911549713904d6428852e762f3fa1df0 Mon Sep 17 00:00:00 2001
From: Kai Koehne <kai.koehne@nokia.com>
Date: Mon, 23 Jan 2012 14:57:51 +0100
Subject: [PATCH] RemoteGdb: Fix setup for attaching via dialog

Fix regression introduced in 9e8f935a while at the same time decoupling
the 'useServerStartScript' setting from whether the engine uses
requestRemoteSetup, or not.

Task-number: QTCREATORBUG-6841
Change-Id: I0850ec60e0f45ac66ba6736bcb9f75fdf73c1d23
Reviewed-by: Christian Kandeler <christian.kandeler@nokia.com>
---
 src/plugins/debugger/debuggerstartparameters.h    |  2 ++
 .../debugger/gdb/remotegdbserveradapter.cpp       |  5 ++++-
 .../debugger/gdb/remoteplaingdbadapter.cpp        | 15 ++++++++++-----
 src/plugins/debugger/qml/qmlengine.cpp            |  3 +--
 .../qt-s60/s60devicedebugruncontrol.cpp           |  6 ++++--
 .../remotelinux/remotelinuxdebugsupport.cpp       |  2 +-
 6 files changed, 22 insertions(+), 11 deletions(-)

diff --git a/src/plugins/debugger/debuggerstartparameters.h b/src/plugins/debugger/debuggerstartparameters.h
index ed3f9c4f2f5..220229e4abe 100644
--- a/src/plugins/debugger/debuggerstartparameters.h
+++ b/src/plugins/debugger/debuggerstartparameters.h
@@ -69,6 +69,7 @@ public:
         qmlServerPort(ProjectExplorer::Constants::QML_DEFAULT_DEBUG_SERVER_PORT),
         useServerStartScript(false),
         connParams(Utils::SshConnectionParameters::NoProxy),
+        requestRemoteSetup(false),
         startMode(NoStartMode),
         executableUid(0),
         communicationChannel(CommunicationChannelTcpIp),
@@ -115,6 +116,7 @@ public:
     QString remoteMountPoint;
     QString localMountDir;
     Utils::SshConnectionParameters connParams;
+    bool requestRemoteSetup;
 
     QString debuggerCommand;
     ProjectExplorer::Abi toolChainAbi;
diff --git a/src/plugins/debugger/gdb/remotegdbserveradapter.cpp b/src/plugins/debugger/gdb/remotegdbserveradapter.cpp
index 3b7bf8fb106..5c322c62c38 100644
--- a/src/plugins/debugger/gdb/remotegdbserveradapter.cpp
+++ b/src/plugins/debugger/gdb/remotegdbserveradapter.cpp
@@ -95,7 +95,10 @@ void RemoteGdbServerAdapter::startAdapter()
             m_uploadProc.waitForStarted();
         }
     }
-    m_engine->requestRemoteSetup();
+    if (startParameters().requestRemoteSetup)
+        m_engine->requestRemoteSetup();
+    else
+        handleSetupDone();
 }
 
 void RemoteGdbServerAdapter::uploadProcError(QProcess::ProcessError error)
diff --git a/src/plugins/debugger/gdb/remoteplaingdbadapter.cpp b/src/plugins/debugger/gdb/remoteplaingdbadapter.cpp
index c332a8ec3b9..bd09d2d4e20 100644
--- a/src/plugins/debugger/gdb/remoteplaingdbadapter.cpp
+++ b/src/plugins/debugger/gdb/remoteplaingdbadapter.cpp
@@ -54,7 +54,16 @@ void RemotePlainGdbAdapter::startAdapter()
 {
     QTC_ASSERT(state() == EngineSetupRequested, qDebug() << state());
     showMessage(QLatin1String("TRYING TO START ADAPTER"));
-    m_engine->requestRemoteSetup();
+
+    if (!startParameters().workingDirectory.isEmpty())
+        m_gdbProc.setWorkingDirectory(startParameters().workingDirectory);
+    if (startParameters().environment.size())
+        m_gdbProc.setEnvironment(startParameters().environment.toStringList());
+
+    if (startParameters().requestRemoteSetup)
+        m_engine->requestRemoteSetup();
+    else
+        handleRemoteSetupDone(startParameters().connParams.port, startParameters().qmlServerPort);
 }
 
 void RemotePlainGdbAdapter::setupInferior()
@@ -106,10 +115,6 @@ void RemotePlainGdbAdapter::handleRemoteSetupDone(int gdbServerPort, int qmlPort
 
     if (qmlPort != -1)
         startParameters().qmlServerPort = qmlPort;
-    if (!startParameters().workingDirectory.isEmpty())
-        m_gdbProc.setWorkingDirectory(startParameters().workingDirectory);
-    if (startParameters().environment.size())
-        m_gdbProc.setEnvironment(startParameters().environment.toStringList());
     m_gdbProc.realStart(m_engine->startParameters().debuggerCommand,
         QStringList() << QLatin1String("-i") << QLatin1String("mi"),
         m_engine->startParameters().executable);
diff --git a/src/plugins/debugger/qml/qmlengine.cpp b/src/plugins/debugger/qml/qmlengine.cpp
index f66847f8bc4..d402fcbf04a 100644
--- a/src/plugins/debugger/qml/qmlengine.cpp
+++ b/src/plugins/debugger/qml/qmlengine.cpp
@@ -450,8 +450,7 @@ void QmlEngine::shutdownEngine()
 
 void QmlEngine::setupEngine()
 {
-    if (startParameters().startMode == AttachToQmlPort
-             || startParameters().startMode == AttachToRemoteServer) {
+    if (startParameters().requestRemoteSetup) {
         // we need to get the port first
         emit requestRemoteSetup();
     } else {
diff --git a/src/plugins/qt4projectmanager/qt-s60/s60devicedebugruncontrol.cpp b/src/plugins/qt4projectmanager/qt-s60/s60devicedebugruncontrol.cpp
index f0200e43be5..1160ae9bd7a 100644
--- a/src/plugins/qt4projectmanager/qt-s60/s60devicedebugruncontrol.cpp
+++ b/src/plugins/qt4projectmanager/qt-s60/s60devicedebugruncontrol.cpp
@@ -84,10 +84,12 @@ static Debugger::DebuggerStartParameters s60DebuggerStartParams(const S60DeviceR
 
     sp.remoteChannel = activeDeployConf->serialPortName();
     sp.processArgs = rc->commandLineArguments();
-    if (rc->useQmlDebugger() && !rc->useCppDebugger())
+    if (rc->useQmlDebugger() && !rc->useCppDebugger()) {
+        sp.requestRemoteSetup = true;
         sp.startMode = Debugger::AttachToRemoteServer;
-    else
+    } else {
         sp.startMode = Debugger::StartInternal;
+    }
 
     sp.toolChainAbi = rc->abi();
     sp.executable = debugFileName;
diff --git a/src/plugins/remotelinux/remotelinuxdebugsupport.cpp b/src/plugins/remotelinux/remotelinuxdebugsupport.cpp
index 2135ad9ccad..35314964fa2 100644
--- a/src/plugins/remotelinux/remotelinuxdebugsupport.cpp
+++ b/src/plugins/remotelinux/remotelinuxdebugsupport.cpp
@@ -109,7 +109,7 @@ DebuggerStartParameters AbstractRemoteLinuxDebugSupport::startParameters(const R
         params.executable = runConfig->localExecutableFilePath();
         params.debuggerCommand = runConfig->gdbCmd();
         params.remoteChannel = devConf->sshParameters().host + QLatin1String(":-1");
-        params.useServerStartScript = true;
+        params.requestRemoteSetup = true;
 
         // TODO: This functionality should be inside the debugger.
         const ProjectExplorer::Abi &abi = runConfig->target()
-- 
GitLab