diff --git a/src/plugins/analyzerbase/analyzerruncontrol.cpp b/src/plugins/analyzerbase/analyzerruncontrol.cpp index eda2675b548..e051cd7c1ad 100644 --- a/src/plugins/analyzerbase/analyzerruncontrol.cpp +++ b/src/plugins/analyzerbase/analyzerruncontrol.cpp @@ -60,7 +60,9 @@ AnalyzerRunControl::AnalyzerRunControl(const AnalyzerStartParameters &sp, if (m_workingDirectory.isEmpty()) m_workingDirectory = runConfiguration->target()->project()->projectDirectory().toString(); } - m_sp = sp; + + setRunnable(AnalyzerRunnable(sp)); + setConnection(AnalyzerConnection(sp)); connect(this, &AnalyzerRunControl::finished, this, &AnalyzerRunControl::runControlFinished); @@ -68,6 +70,16 @@ AnalyzerRunControl::AnalyzerRunControl(const AnalyzerStartParameters &sp, this, &AnalyzerRunControl::stopIt); } +const AnalyzerRunnable &AnalyzerRunControl::runnable() const +{ + return RunControl::runnable().as(); +} + +const AnalyzerConnection &AnalyzerRunControl::connection() const +{ + return RunControl::connection().as(); +} + void AnalyzerRunControl::stopIt() { if (stop() == RunControl::StoppedSynchronously) diff --git a/src/plugins/analyzerbase/analyzerruncontrol.h b/src/plugins/analyzerbase/analyzerruncontrol.h index ecdfbb9218a..6938724c69c 100644 --- a/src/plugins/analyzerbase/analyzerruncontrol.h +++ b/src/plugins/analyzerbase/analyzerruncontrol.h @@ -50,6 +50,9 @@ public: ProjectExplorer::RunConfiguration *runConfiguration, Core::Id runMode); + AnalyzerRunControl(ProjectExplorer::RunConfiguration *runConfiguration, + Core::Id runMode); + /// Start analyzation process. virtual bool startEngine() = 0; /// Trigger async stop of the analyzation process. @@ -60,8 +63,8 @@ public: virtual void pause() {} virtual void unpause() {} - /// The start parameters for this engine. - const AnalyzerStartParameters &startParameters() const { return m_sp; } + const AnalyzerRunnable &runnable() const; + const AnalyzerConnection &connection() const; virtual void notifyRemoteSetupDone(quint16) {} virtual void notifyRemoteFinished() {} @@ -96,7 +99,6 @@ protected: private: QString m_displayName; // Default to runConfig->displayName, unless overridden by setDisplayName QString m_workingDirectory; - AnalyzerStartParameters m_sp; }; } // namespace Analyzer diff --git a/src/plugins/analyzerbase/analyzerstartparameters.h b/src/plugins/analyzerbase/analyzerstartparameters.h index 8d48327016a..8e845a80c96 100644 --- a/src/plugins/analyzerbase/analyzerstartparameters.h +++ b/src/plugins/analyzerbase/analyzerstartparameters.h @@ -38,17 +38,28 @@ namespace Analyzer { -class ANALYZER_EXPORT AnalyzerStartParameters +class ANALYZER_EXPORT AnalyzerRunnable +{ +public: + QString debuggee; + QString debuggeeArgs; +}; + +class ANALYZER_EXPORT AnalyzerConnection { public: QSsh::SshConnectionParameters connParams; - QString debuggee; - QString debuggeeArgs; QString analyzerHost; QString analyzerSocket; quint16 analyzerPort = 0; }; +class ANALYZER_EXPORT AnalyzerStartParameters + : public AnalyzerRunnable, public AnalyzerConnection +{ +public: +}; + } // namespace Analyzer #endif // ANALYZERSTARTPARAMETERS_H diff --git a/src/plugins/qmlprofiler/qmlprofilerruncontrol.cpp b/src/plugins/qmlprofiler/qmlprofilerruncontrol.cpp index 1f202128cf7..edbbc653475 100644 --- a/src/plugins/qmlprofiler/qmlprofilerruncontrol.cpp +++ b/src/plugins/qmlprofiler/qmlprofilerruncontrol.cpp @@ -105,9 +105,9 @@ bool QmlProfilerRunControl::startEngine() { QTC_ASSERT(d->m_profilerState, return false); - if (startParameters().analyzerPort != 0) - emit processRunning(startParameters().analyzerPort); - else if (startParameters().analyzerSocket.isEmpty()) + if (connection().analyzerPort != 0) + emit processRunning(connection().analyzerPort); + else if (connection().analyzerSocket.isEmpty()) d->m_noDebugOutputTimer.start(); d->m_profilerState->setCurrentState(QmlProfilerStateManager::AppRunning); @@ -229,7 +229,7 @@ void QmlProfilerRunControl::processIsRunning(quint16 port) d->m_noDebugOutputTimer.stop(); if (port == 0) - port = startParameters().analyzerPort; + port = connection().analyzerPort; if (port != 0) emit processRunning(port); } diff --git a/src/plugins/qnx/qnxanalyzesupport.cpp b/src/plugins/qnx/qnxanalyzesupport.cpp index 2a5522289a7..7e2a7b71f9c 100644 --- a/src/plugins/qnx/qnxanalyzesupport.cpp +++ b/src/plugins/qnx/qnxanalyzesupport.cpp @@ -93,7 +93,7 @@ void QnxAnalyzeSupport::startExecution() setState(StartingRemoteProcess); const QStringList args = QStringList() - << Utils::QtcProcess::splitArgs(m_runControl->startParameters().debuggeeArgs) + << Utils::QtcProcess::splitArgs(m_runControl->runnable().debuggeeArgs) << QmlDebug::qmlDebugTcpArguments(QmlDebug::QmlProfilerServices, m_qmlPort); appRunner()->setEnvironment(environment()); diff --git a/src/plugins/valgrind/memcheckengine.cpp b/src/plugins/valgrind/memcheckengine.cpp index 1d89ec9bcce..da59e10172b 100644 --- a/src/plugins/valgrind/memcheckengine.cpp +++ b/src/plugins/valgrind/memcheckengine.cpp @@ -151,10 +151,9 @@ QStringList MemcheckWithGdbRunControl::toolArguments() const void MemcheckWithGdbRunControl::startDebugger() { const qint64 valgrindPid = runner()->valgrindProcess()->pid(); - const AnalyzerStartParameters &mySp = startParameters(); Debugger::DebuggerStartParameters sp; - sp.executable = mySp.debuggee; + sp.executable = runnable().debuggee; sp.startMode = Debugger::AttachToRemoteServer; sp.displayName = QString::fromLatin1("VGdb %1").arg(valgrindPid); sp.remoteChannel = QString::fromLatin1("| vgdb --pid=%1").arg(valgrindPid); diff --git a/src/plugins/valgrind/valgrindengine.cpp b/src/plugins/valgrind/valgrindengine.cpp index 938d056f4de..506feca46bf 100644 --- a/src/plugins/valgrind/valgrindengine.cpp +++ b/src/plugins/valgrind/valgrindengine.cpp @@ -82,21 +82,20 @@ bool ValgrindRunControl::startEngine() this, &ValgrindRunControl::handleProgressFinished); m_progress.reportStarted(); - const AnalyzerStartParameters &sp = startParameters(); #if VALGRIND_DEBUG_OUTPUT emit outputReceived(tr("Valgrind options: %1").arg(toolArguments().join(QLatin1Char(' '))), DebugFormat); - emit outputReceived(tr("Working directory: %1").arg(sp.workingDirectory), DebugFormat); - emit outputReceived(tr("Command line arguments: %1").arg(sp.debuggeeArgs), DebugFormat); + emit outputReceived(tr("Working directory: %1").arg(runnable().workingDirectory), DebugFormat); + emit outputReceived(tr("Command line arguments: %1").arg(runnable().debuggeeArgs), DebugFormat); #endif ValgrindRunner *run = runner(); run->setWorkingDirectory(workingDirectory()); run->setValgrindExecutable(m_settings->valgrindExecutable()); run->setValgrindArguments(genericToolArguments() + toolArguments()); - run->setDebuggeeExecutable(sp.debuggee); - run->setDebuggeeArguments(sp.debuggeeArgs); + run->setDebuggeeExecutable(runnable().debuggee); + run->setDebuggeeArguments(runnable().debuggeeArgs); run->setEnvironment(m_environment); - run->setConnectionParameters(sp.connParams); + run->setConnectionParameters(connection().connParams); run->setUseStartupProject(!m_isCustomStart); run->setLocalRunMode(m_localRunMode); @@ -122,7 +121,7 @@ void ValgrindRunControl::stopEngine() QString ValgrindRunControl::executable() const { - return startParameters().debuggee; + return runnable().debuggee; } void ValgrindRunControl::setEnvironment(const Utils::Environment &environment)