diff options
author | hjk <hjk121@nokiamail.com> | 2013-07-30 11:33:03 +0200 |
---|---|---|
committer | hjk <hjk121@nokiamail.com> | 2013-08-01 10:32:24 +0200 |
commit | 2ba88d1c18bb903627a4a03692eb70f31c313a6f (patch) | |
tree | 5064c778d513665f3b4f482c005511729bc91293 /src/plugins/qmlprofiler/qmlprofilerruncontrolfactory.cpp | |
parent | db2dc342f45f4f53a23db62f3a03179dd4be6b9e (diff) |
Analyzer: Remove IAnalizerTool::createStartParameters
That's a needless indirection. The run control factories know pretty
well what kind of start parameters they need.
Change-Id: Ia2d92beb6512cd99254fe22e215950cc67d5d0ed
Reviewed-by: Aurindam Jana <aurindam.jana@digia.com>
Reviewed-by: Christiaan Janssen <christiaan.janssen@digia.com>
Diffstat (limited to 'src/plugins/qmlprofiler/qmlprofilerruncontrolfactory.cpp')
-rw-r--r-- | src/plugins/qmlprofiler/qmlprofilerruncontrolfactory.cpp | 62 |
1 files changed, 58 insertions, 4 deletions
diff --git a/src/plugins/qmlprofiler/qmlprofilerruncontrolfactory.cpp b/src/plugins/qmlprofiler/qmlprofilerruncontrolfactory.cpp index 10fb74b1ba..e823a6d2e6 100644 --- a/src/plugins/qmlprofiler/qmlprofilerruncontrolfactory.cpp +++ b/src/plugins/qmlprofiler/qmlprofilerruncontrolfactory.cpp @@ -37,11 +37,22 @@ #include <analyzerbase/analyzerruncontrol.h> #include <analyzerbase/analyzersettings.h> +#include <debugger/debuggerrunconfigurationaspect.h> + +#include <projectexplorer/environmentaspect.h> #include <projectexplorer/kitinformation.h> +#include <projectexplorer/localapplicationrunconfiguration.h> +#include <projectexplorer/projectexplorer.h> +#include <projectexplorer/project.h> +#include <projectexplorer/session.h> #include <projectexplorer/target.h> +#include <qmlprojectmanager/qmlprojectrunconfiguration.h> + #include <utils/qtcassert.h> +#include <QTcpServer> + using namespace Analyzer; using namespace ProjectExplorer; @@ -63,6 +74,51 @@ bool QmlProfilerRunControlFactory::canRun(RunConfiguration *runConfiguration, Ru return false; } +static AnalyzerStartParameters createQmlProfilerStartParameters(RunConfiguration *runConfiguration) +{ + AnalyzerStartParameters sp; + EnvironmentAspect *environment = runConfiguration->extraAspect<EnvironmentAspect>(); + Debugger::DebuggerRunConfigurationAspect *debugger + = runConfiguration->extraAspect<Debugger::DebuggerRunConfigurationAspect>(); + QTC_ASSERT(debugger, return sp); + + // FIXME: This is only used to communicate the connParams settings. + if (QmlProjectManager::QmlProjectRunConfiguration *rc1 = + qobject_cast<QmlProjectManager::QmlProjectRunConfiguration *>(runConfiguration)) { + // This is a "plain" .qmlproject. + if (environment) + sp.environment = environment->environment(); + sp.workingDirectory = rc1->workingDirectory(); + sp.debuggee = rc1->observerPath(); + sp.debuggeeArgs = rc1->viewerArguments(); + sp.displayName = rc1->displayName(); + } else if (LocalApplicationRunConfiguration *rc2 = + qobject_cast<LocalApplicationRunConfiguration *>(runConfiguration)) { + if (environment) + sp.environment = environment->environment(); + sp.workingDirectory = rc2->workingDirectory(); + sp.debuggee = rc2->executable(); + sp.debuggeeArgs = rc2->commandLineArguments(); + sp.displayName = rc2->displayName(); + } else { + // What could that be? + QTC_ASSERT(false, return sp); + } + const IDevice::ConstPtr device = DeviceKitInformation::device(runConfiguration->target()->kit()); + if (device->type() == ProjectExplorer::Constants::DESKTOP_DEVICE_TYPE) { + QTcpServer server; + if (!server.listen(QHostAddress::LocalHost) && !server.listen(QHostAddress::LocalHostIPv6)) { + qWarning() << "Cannot open port on host for QML profiling."; + return sp; + } + sp.analyzerHost = server.serverAddress().toString(); + sp.analyzerPort = server.serverPort(); + } + sp.startMode = StartQml; + sp.toolId = "QmlProfiler"; + return sp; +} + RunControl *QmlProfilerRunControlFactory::create(RunConfiguration *runConfiguration, RunMode mode, QString *errorMessage) { IAnalyzerTool *tool = AnalyzerManager::toolFromRunMode(mode); @@ -74,12 +130,10 @@ RunControl *QmlProfilerRunControlFactory::create(RunConfiguration *runConfigurat QTC_ASSERT(canRun(runConfiguration, mode), return 0); - AnalyzerStartParameters sp = tool->createStartParameters(runConfiguration, mode); - sp.toolId = tool->id(); + AnalyzerStartParameters sp = createQmlProfilerStartParameters(runConfiguration); // only desktop device is supported - const ProjectExplorer::IDevice::ConstPtr device = - ProjectExplorer::DeviceKitInformation::device(runConfiguration->target()->kit()); + const IDevice::ConstPtr device = DeviceKitInformation::device(runConfiguration->target()->kit()); QTC_ASSERT(device->type() == ProjectExplorer::Constants::DESKTOP_DEVICE_TYPE, return 0); AnalyzerRunControl *rc = new AnalyzerRunControl(tool, sp, runConfiguration); |