forked from qt-creator/qt-creator
Android: Use line-based output callback
Change-Id: I5d2ede450ee3e36cc16d7f1566083125204ce552 Reviewed-by: Alessandro Portale <alessandro.portale@qt.io> Reviewed-by: hjk <hjk@qt.io>
This commit is contained in:
@@ -294,10 +294,15 @@ AndroidDeployQtStep::DeployErrorCode AndroidDeployQtStep::runDeploy()
|
|||||||
m_process->setUseCtrlCStub(true);
|
m_process->setUseCtrlCStub(true);
|
||||||
|
|
||||||
DeployErrorCode deployError = NoError;
|
DeployErrorCode deployError = NoError;
|
||||||
connect(m_process, &Utils::QtcProcess::readyReadStandardOutput,
|
|
||||||
std::bind(&AndroidDeployQtStep::processReadyReadStdOutput, this, std::ref(deployError)));
|
m_process->setStdOutLineCallback([this, &deployError](const QString &line) {
|
||||||
connect(m_process, &Utils::QtcProcess::readyReadStandardError,
|
deployError |= parseDeployErrors(line);
|
||||||
std::bind(&AndroidDeployQtStep::processReadyReadStdError, this, std::ref(deployError)));
|
stdOutput(line);
|
||||||
|
});
|
||||||
|
m_process->setStdErrLineCallback([this, &deployError](const QString &line) {
|
||||||
|
deployError |= parseDeployErrors(line);
|
||||||
|
stdError(line);
|
||||||
|
});
|
||||||
|
|
||||||
m_process->start();
|
m_process->start();
|
||||||
|
|
||||||
@@ -523,41 +528,11 @@ QWidget *AndroidDeployQtStep::createConfigWidget()
|
|||||||
return widget;
|
return widget;
|
||||||
}
|
}
|
||||||
|
|
||||||
void AndroidDeployQtStep::processReadyReadStdOutput(DeployErrorCode &errorCode)
|
|
||||||
{
|
|
||||||
const QByteArray output = m_process->readAllStandardOutput();
|
|
||||||
int start = 0;
|
|
||||||
int end;
|
|
||||||
|
|
||||||
do {
|
|
||||||
end = output.indexOf('\n', start);
|
|
||||||
QString line = QString::fromLocal8Bit(output.mid(start, end - start));
|
|
||||||
errorCode |= parseDeployErrors(line);
|
|
||||||
stdOutput(line);
|
|
||||||
start = end + 1;
|
|
||||||
} while (end >= 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
void AndroidDeployQtStep::stdOutput(const QString &line)
|
void AndroidDeployQtStep::stdOutput(const QString &line)
|
||||||
{
|
{
|
||||||
emit addOutput(line, BuildStep::OutputFormat::Stdout, BuildStep::DontAppendNewline);
|
emit addOutput(line, BuildStep::OutputFormat::Stdout, BuildStep::DontAppendNewline);
|
||||||
}
|
}
|
||||||
|
|
||||||
void AndroidDeployQtStep::processReadyReadStdError(DeployErrorCode &errorCode)
|
|
||||||
{
|
|
||||||
const QByteArray output = m_process->readAllStandardError();
|
|
||||||
int start = 0;
|
|
||||||
int end;
|
|
||||||
|
|
||||||
do {
|
|
||||||
end = output.indexOf('\n', start);
|
|
||||||
QString line = QString::fromLocal8Bit(output.mid(start, end - start));
|
|
||||||
errorCode |= parseDeployErrors(line);
|
|
||||||
stdError(line);
|
|
||||||
start = end + 1;
|
|
||||||
} while (end >= 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
void AndroidDeployQtStep::stdError(const QString &line)
|
void AndroidDeployQtStep::stdError(const QString &line)
|
||||||
{
|
{
|
||||||
emit addOutput(line, BuildStep::OutputFormat::Stderr, BuildStep::DontAppendNewline);
|
emit addOutput(line, BuildStep::OutputFormat::Stderr, BuildStep::DontAppendNewline);
|
||||||
@@ -575,7 +550,8 @@ void AndroidDeployQtStep::stdError(const QString &line)
|
|||||||
TaskHub::addTask(DeploymentTask(Task::Error, newOutput));
|
TaskHub::addTask(DeploymentTask(Task::Error, newOutput));
|
||||||
}
|
}
|
||||||
|
|
||||||
AndroidDeployQtStep::DeployErrorCode AndroidDeployQtStep::parseDeployErrors(QString &deployOutputLine) const
|
AndroidDeployQtStep::DeployErrorCode AndroidDeployQtStep::parseDeployErrors(
|
||||||
|
const QString &deployOutputLine) const
|
||||||
{
|
{
|
||||||
DeployErrorCode errorCode = NoError;
|
DeployErrorCode errorCode = NoError;
|
||||||
|
|
||||||
|
@@ -81,7 +81,7 @@ private:
|
|||||||
void stdOutput(const QString &line);
|
void stdOutput(const QString &line);
|
||||||
void processReadyReadStdError(DeployErrorCode &errorCode);
|
void processReadyReadStdError(DeployErrorCode &errorCode);
|
||||||
void stdError(const QString &line);
|
void stdError(const QString &line);
|
||||||
DeployErrorCode parseDeployErrors(QString &deployOutputLine) const;
|
DeployErrorCode parseDeployErrors(const QString &deployOutputLine) const;
|
||||||
|
|
||||||
friend void operator|=(DeployErrorCode &e1, const DeployErrorCode &e2) { e1 = static_cast<AndroidDeployQtStep::DeployErrorCode>((int)e1 | (int)e2); }
|
friend void operator|=(DeployErrorCode &e1, const DeployErrorCode &e2) { e1 = static_cast<AndroidDeployQtStep::DeployErrorCode>((int)e1 | (int)e2); }
|
||||||
friend DeployErrorCode operator|(const DeployErrorCode &e1, const DeployErrorCode &e2) { return static_cast<AndroidDeployQtStep::DeployErrorCode>((int)e1 | (int)e2); }
|
friend DeployErrorCode operator|(const DeployErrorCode &e1, const DeployErrorCode &e2) { return static_cast<AndroidDeployQtStep::DeployErrorCode>((int)e1 | (int)e2); }
|
||||||
|
Reference in New Issue
Block a user