forked from qt-creator/qt-creator
PerfProfiler: Remove private fields of PerfProfilerRunner
Task-number: QTCREATORBUG-29168 Change-Id: If2a7c7d8159f9c6c1fc58765285d51325fd41cef Reviewed-by: hjk <hjk@qt.io>
This commit is contained in:
@@ -91,18 +91,19 @@ public:
|
|||||||
{
|
{
|
||||||
setId("PerfProfilerRunner");
|
setId("PerfProfilerRunner");
|
||||||
|
|
||||||
m_perfParserWorker = new PerfParserWorker(runControl);
|
PerfParserWorker *perfParserWorker = new PerfParserWorker(runControl);
|
||||||
addStopDependency(m_perfParserWorker);
|
addStopDependency(perfParserWorker);
|
||||||
|
|
||||||
// If the parser is gone, there is no point in going on.
|
// If the parser is gone, there is no point in going on.
|
||||||
m_perfParserWorker->setEssential(true);
|
perfParserWorker->setEssential(true);
|
||||||
m_perfRecordWorker = qobject_cast<ProcessRunner *>(runControl->createWorker("PerfRecorder"));
|
ProcessRunner *perfRecordWorker
|
||||||
|
= qobject_cast<ProcessRunner *>(runControl->createWorker("PerfRecorder"));
|
||||||
|
|
||||||
if (!m_perfRecordWorker) {
|
if (!perfRecordWorker) {
|
||||||
m_perfRecordWorker = new ProcessRunner(runControl);
|
perfRecordWorker = new ProcessRunner(runControl);
|
||||||
m_perfRecordWorker->suppressDefaultStdOutHandling();
|
perfRecordWorker->suppressDefaultStdOutHandling();
|
||||||
|
|
||||||
m_perfRecordWorker->setStartModifier([this, runControl] {
|
perfRecordWorker->setStartModifier([this, runControl, perfRecordWorker] {
|
||||||
const Store perfArgs = runControl->settingsData(PerfProfiler::Constants::PerfSettingsId);
|
const Store perfArgs = runControl->settingsData(PerfProfiler::Constants::PerfSettingsId);
|
||||||
const QString recordArgs = perfArgs[Constants::PerfRecordArgsId].toString();
|
const QString recordArgs = perfArgs[Constants::PerfRecordArgsId].toString();
|
||||||
|
|
||||||
@@ -111,20 +112,20 @@ public:
|
|||||||
cmd.addArgs({"-o", "-", "--"});
|
cmd.addArgs({"-o", "-", "--"});
|
||||||
cmd.addCommandLineAsArgs(runControl->commandLine(), CommandLine::Raw);
|
cmd.addCommandLineAsArgs(runControl->commandLine(), CommandLine::Raw);
|
||||||
|
|
||||||
m_perfRecordWorker->setCommandLine(cmd);
|
perfRecordWorker->setCommandLine(cmd);
|
||||||
m_perfRecordWorker->setWorkingDirectory(runControl->workingDirectory());
|
perfRecordWorker->setWorkingDirectory(runControl->workingDirectory());
|
||||||
m_perfRecordWorker->setEnvironment(runControl->environment());
|
perfRecordWorker->setEnvironment(runControl->environment());
|
||||||
appendMessage("Starting Perf: " + cmd.toUserOutput(), NormalMessageFormat);
|
appendMessage("Starting Perf: " + cmd.toUserOutput(), NormalMessageFormat);
|
||||||
});
|
});
|
||||||
|
|
||||||
// In the local case, the parser won't automatically stop when the recorder does. So we need
|
// In the local case, the parser won't automatically stop when the recorder does. So we need
|
||||||
// to mark the recorder as essential, too.
|
// to mark the recorder as essential, too.
|
||||||
m_perfRecordWorker->setEssential(true);
|
perfRecordWorker->setEssential(true);
|
||||||
}
|
}
|
||||||
addStartDependency(m_perfRecordWorker);
|
addStartDependency(perfRecordWorker);
|
||||||
|
|
||||||
m_perfParserWorker->addStartDependency(m_perfRecordWorker);
|
perfParserWorker->addStartDependency(perfRecordWorker);
|
||||||
m_perfParserWorker->addStopDependency(m_perfRecordWorker);
|
perfParserWorker->addStopDependency(perfRecordWorker);
|
||||||
PerfProfilerTool::instance()->onWorkerCreation(runControl);
|
PerfProfilerTool::instance()->onWorkerCreation(runControl);
|
||||||
|
|
||||||
auto tool = PerfProfilerTool::instance();
|
auto tool = PerfProfilerTool::instance();
|
||||||
@@ -134,17 +135,13 @@ public:
|
|||||||
connect(runControl, &RunControl::stopped, PerfProfilerTool::instance(),
|
connect(runControl, &RunControl::stopped, PerfProfilerTool::instance(),
|
||||||
&PerfProfilerTool::onRunControlFinished);
|
&PerfProfilerTool::onRunControlFinished);
|
||||||
|
|
||||||
PerfDataReader *reader = m_perfParserWorker->reader();
|
PerfDataReader *reader = perfParserWorker->reader();
|
||||||
connect(m_perfRecordWorker, &ProcessRunner::stdOutData,
|
connect(perfRecordWorker, &ProcessRunner::stdOutData,
|
||||||
this, [this, reader](const QByteArray &data) {
|
this, [this, reader](const QByteArray &data) {
|
||||||
if (!reader->feedParser(data))
|
if (!reader->feedParser(data))
|
||||||
reportFailure(Tr::tr("Failed to transfer Perf data to perfparser."));
|
reportFailure(Tr::tr("Failed to transfer Perf data to perfparser."));
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
private:
|
|
||||||
PerfParserWorker *m_perfParserWorker = nullptr;
|
|
||||||
ProcessRunner *m_perfRecordWorker = nullptr;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
// PerfProfilerRunWorkerFactory
|
// PerfProfilerRunWorkerFactory
|
||||||
|
Reference in New Issue
Block a user