diff --git a/src/plugins/valgrind/valgrindplugin.cpp b/src/plugins/valgrind/valgrindplugin.cpp index 4a2e3f73d1d..51711f4cc3d 100644 --- a/src/plugins/valgrind/valgrindplugin.cpp +++ b/src/plugins/valgrind/valgrindplugin.cpp @@ -131,12 +131,9 @@ void ValgrindPlugin::extensionsInitialized() auto mcWidgetCreator = [mcTool] { return mcTool->createWidgets(); }; auto cgTool = new CallgrindTool(this); auto cgWidgetCreator = [cgTool] { return cgTool->createWidgets(); }; - auto cgRunControlCreator = [cgTool](const AnalyzerStartParameters &sp, + auto cgRunControlCreator = [cgTool](const AnalyzerStartParameters &, RunConfiguration *runConfiguration, Core::Id) { - auto runControl = cgTool->createRunControl(runConfiguration); - runControl->setRunnable(AnalyzerRunnable(sp)); - runControl->setConnection(AnalyzerConnection(sp)); - return runControl; + return cgTool->createRunControl(runConfiguration); }; if (!Utils::HostOsInfo::isWindowsHost()) { @@ -144,13 +141,9 @@ void ValgrindPlugin::extensionsInitialized() action->setActionId("Memcheck.Local"); action->setToolId("Memcheck"); action->setWidgetCreator(mcWidgetCreator); - action->setRunControlCreator([mcTool](const AnalyzerStartParameters &sp, - ProjectExplorer::RunConfiguration *runConfig, Core::Id runMode) - { - auto runControl = mcTool->createRunControl(runConfig, runMode); - runControl->setRunnable(AnalyzerRunnable(sp)); - runControl->setConnection(AnalyzerConnection(sp)); - return runControl; + action->setRunControlCreator([mcTool](const AnalyzerStartParameters &, + ProjectExplorer::RunConfiguration *runConfig, Core::Id runMode) { + return mcTool->createRunControl(runConfig, runMode); }); action->setToolMode(DebugMode); action->setRunMode(MEMCHECK_RUN_MODE); @@ -165,13 +158,9 @@ void ValgrindPlugin::extensionsInitialized() action->setActionId("MemcheckWithGdb.Local"); action->setToolId("MemcheckWithGdb"); action->setWidgetCreator([mcgTool] { return mcgTool->createWidgets(); }); - action->setRunControlCreator([mcgTool](const AnalyzerStartParameters &sp, - ProjectExplorer::RunConfiguration *runConfig, Core::Id runMode) - { - auto runControl = mcgTool->createRunControl(runConfig, runMode); - runControl->setRunnable(AnalyzerRunnable(sp)); - runControl->setConnection(AnalyzerConnection(sp)); - return runControl; + action->setRunControlCreator([mcgTool](const AnalyzerStartParameters &, + ProjectExplorer::RunConfiguration *runConfig, Core::Id runMode) { + return mcgTool->createRunControl(runConfig, runMode); }); action->setToolMode(DebugMode); action->setRunMode(MEMCHECK_WITH_GDB_RUN_MODE); diff --git a/src/plugins/valgrind/valgrindruncontrolfactory.cpp b/src/plugins/valgrind/valgrindruncontrolfactory.cpp index 710a7d488e7..bfa6258c4a7 100644 --- a/src/plugins/valgrind/valgrindruncontrolfactory.cpp +++ b/src/plugins/valgrind/valgrindruncontrolfactory.cpp @@ -71,18 +71,21 @@ bool ValgrindRunControlFactory::canRun(RunConfiguration *runConfiguration, Core: RunControl *ValgrindRunControlFactory::create(RunConfiguration *runConfiguration, Core::Id mode, QString *errorMessage) { Q_UNUSED(errorMessage); + auto runControl = qobject_cast(AnalyzerManager::createRunControl(runConfiguration, mode)); + QTC_ASSERT(runControl, return 0); ApplicationLauncher::Mode localRunMode = ApplicationLauncher::Gui; Utils::Environment environment; - AnalyzerStartParameters sp; + AnalyzerRunnable runnable; + AnalyzerConnection connection; QString workingDirectory; if (auto rc1 = qobject_cast(runConfiguration)) { EnvironmentAspect *aspect = runConfiguration->extraAspect(); if (aspect) environment = aspect->environment(); workingDirectory = rc1->workingDirectory(); - sp.debuggee = rc1->executable(); - sp.debuggeeArgs = rc1->commandLineArguments(); + runnable.debuggee = rc1->executable(); + runnable.debuggeeArgs = rc1->commandLineArguments(); const IDevice::ConstPtr device = DeviceKitInformation::device(runConfiguration->target()->kit()); QTC_ASSERT(device, return 0); @@ -92,25 +95,23 @@ RunControl *ValgrindRunControlFactory::create(RunConfiguration *runConfiguration qWarning() << "Cannot open port on host for profiling."; return 0; } - sp.connParams.host = server.serverAddress().toString(); - sp.connParams.port = server.serverPort(); + connection.connParams.host = server.serverAddress().toString(); + connection.connParams.port = server.serverPort(); localRunMode = rc1->runMode(); - } else if (RemoteLinux::AbstractRemoteLinuxRunConfiguration *rc2 = - qobject_cast(runConfiguration)) { - sp.debuggee = rc2->remoteExecutableFilePath(); - sp.connParams = DeviceKitInformation::device(rc2->target()->kit())->sshParameters(); - sp.debuggeeArgs = rc2->arguments(); + } else if (auto rc2 = qobject_cast(runConfiguration)) { + runnable.debuggee = rc2->remoteExecutableFilePath(); + runnable.debuggeeArgs = rc2->arguments(); + connection.connParams = DeviceKitInformation::device(rc2->target()->kit())->sshParameters(); } else { QTC_ASSERT(false, return 0); } - auto analyzerRunControl = AnalyzerManager::createRunControl(sp, runConfiguration, mode); - if (auto valgrindRunControl = qobject_cast(analyzerRunControl)) { - valgrindRunControl->setLocalRunMode(localRunMode); - valgrindRunControl->setEnvironment(environment); - valgrindRunControl->setWorkingDirectory(workingDirectory); - } - return analyzerRunControl; + runControl->setRunnable(runnable); + runControl->setConnection(connection); + runControl->setLocalRunMode(localRunMode); + runControl->setEnvironment(environment); + runControl->setWorkingDirectory(workingDirectory); + return runControl; }