aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/qmlprofiler/qmlprofilerruncontrolfactory.cpp
diff options
context:
space:
mode:
authorhjk <hjk121@nokiamail.com>2013-07-30 11:33:03 +0200
committerhjk <hjk121@nokiamail.com>2013-08-01 10:32:24 +0200
commit2ba88d1c18bb903627a4a03692eb70f31c313a6f (patch)
tree5064c778d513665f3b4f482c005511729bc91293 /src/plugins/qmlprofiler/qmlprofilerruncontrolfactory.cpp
parentdb2dc342f45f4f53a23db62f3a03179dd4be6b9e (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.cpp62
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);