forked from qt-creator/qt-creator
RemoteLinuxEnvironmentReader: Connect to QtcProcess::done() signal
Instead of connecting to errorOccurred() and finished() signals. Change-Id: I357b95db5889c09d036abdb76ca9f014be7a9cf5 Reviewed-by: <github-actions-qt-creator@cristianadam.eu> Reviewed-by: hjk <hjk@qt.io>
This commit is contained in:
@@ -52,29 +52,20 @@ void RemoteLinuxEnvironmentReader::start()
|
|||||||
setFinished();
|
setFinished();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
m_stop = false;
|
|
||||||
m_deviceProcess = m_device->createProcess(this);
|
m_deviceProcess = m_device->createProcess(this);
|
||||||
connect(m_deviceProcess, &QtcProcess::errorOccurred,
|
connect(m_deviceProcess, &QtcProcess::done,
|
||||||
this, &RemoteLinuxEnvironmentReader::handleError);
|
this, &RemoteLinuxEnvironmentReader::handleDone);
|
||||||
connect(m_deviceProcess, &QtcProcess::finished,
|
|
||||||
this, &RemoteLinuxEnvironmentReader::remoteProcessFinished);
|
|
||||||
m_deviceProcess->setCommand({"env", {}});
|
m_deviceProcess->setCommand({"env", {}});
|
||||||
m_deviceProcess->start();
|
m_deviceProcess->start();
|
||||||
}
|
}
|
||||||
|
|
||||||
void RemoteLinuxEnvironmentReader::stop()
|
void RemoteLinuxEnvironmentReader::stop()
|
||||||
{
|
{
|
||||||
m_stop = true;
|
if (!m_deviceProcess)
|
||||||
destroyProcess();
|
|
||||||
}
|
|
||||||
|
|
||||||
void RemoteLinuxEnvironmentReader::handleError()
|
|
||||||
{
|
|
||||||
if (m_stop)
|
|
||||||
return;
|
return;
|
||||||
|
m_deviceProcess->disconnect(this);
|
||||||
emit error(tr("Error: %1").arg(m_deviceProcess->errorString()));
|
m_deviceProcess->deleteLater();
|
||||||
setFinished();
|
m_deviceProcess = nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
void RemoteLinuxEnvironmentReader::handleCurrentDeviceConfigChanged()
|
void RemoteLinuxEnvironmentReader::handleCurrentDeviceConfigChanged()
|
||||||
@@ -83,10 +74,13 @@ void RemoteLinuxEnvironmentReader::handleCurrentDeviceConfigChanged()
|
|||||||
setFinished();
|
setFinished();
|
||||||
}
|
}
|
||||||
|
|
||||||
void RemoteLinuxEnvironmentReader::remoteProcessFinished()
|
void RemoteLinuxEnvironmentReader::handleDone()
|
||||||
{
|
{
|
||||||
if (m_stop)
|
if (m_deviceProcess->result() != ProcessResult::FinishedWithSuccess) {
|
||||||
|
emit error(tr("Error: %1").arg(m_deviceProcess->errorString()));
|
||||||
|
setFinished();
|
||||||
return;
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
m_env.clear();
|
m_env.clear();
|
||||||
QString errorMessage;
|
QString errorMessage;
|
||||||
@@ -96,6 +90,7 @@ void RemoteLinuxEnvironmentReader::remoteProcessFinished()
|
|||||||
errorMessage = tr("Process exited with code %1.")
|
errorMessage = tr("Process exited with code %1.")
|
||||||
.arg(m_deviceProcess->exitCode());
|
.arg(m_deviceProcess->exitCode());
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!errorMessage.isEmpty()) {
|
if (!errorMessage.isEmpty()) {
|
||||||
errorMessage = tr("Error running 'env': %1").arg(errorMessage);
|
errorMessage = tr("Error running 'env': %1").arg(errorMessage);
|
||||||
const QString remoteStderr
|
const QString remoteStderr
|
||||||
@@ -104,7 +99,7 @@ void RemoteLinuxEnvironmentReader::remoteProcessFinished()
|
|||||||
errorMessage += QLatin1Char('\n') + tr("Remote stderr was: \"%1\"").arg(remoteStderr);
|
errorMessage += QLatin1Char('\n') + tr("Remote stderr was: \"%1\"").arg(remoteStderr);
|
||||||
emit error(errorMessage);
|
emit error(errorMessage);
|
||||||
} else {
|
} else {
|
||||||
QString remoteOutput = QString::fromUtf8(m_deviceProcess->readAllStandardOutput());
|
const QString remoteOutput = QString::fromUtf8(m_deviceProcess->readAllStandardOutput());
|
||||||
if (!remoteOutput.isEmpty()) {
|
if (!remoteOutput.isEmpty()) {
|
||||||
m_env = Utils::Environment(remoteOutput.split(QLatin1Char('\n'),
|
m_env = Utils::Environment(remoteOutput.split(QLatin1Char('\n'),
|
||||||
Qt::SkipEmptyParts), Utils::OsTypeLinux);
|
Qt::SkipEmptyParts), Utils::OsTypeLinux);
|
||||||
@@ -119,14 +114,5 @@ void RemoteLinuxEnvironmentReader::setFinished()
|
|||||||
emit finished();
|
emit finished();
|
||||||
}
|
}
|
||||||
|
|
||||||
void RemoteLinuxEnvironmentReader::destroyProcess()
|
|
||||||
{
|
|
||||||
if (!m_deviceProcess)
|
|
||||||
return;
|
|
||||||
m_deviceProcess->disconnect(this);
|
|
||||||
m_deviceProcess->deleteLater();
|
|
||||||
m_deviceProcess = nullptr;
|
|
||||||
}
|
|
||||||
|
|
||||||
} // namespace Internal
|
} // namespace Internal
|
||||||
} // namespace RemoteLinux
|
} // namespace RemoteLinux
|
||||||
|
@@ -53,12 +53,9 @@ signals:
|
|||||||
void error(const QString &error);
|
void error(const QString &error);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void handleError();
|
void handleDone();
|
||||||
void remoteProcessFinished();
|
|
||||||
void setFinished();
|
void setFinished();
|
||||||
void destroyProcess();
|
|
||||||
|
|
||||||
bool m_stop = false;
|
|
||||||
Utils::Environment m_env;
|
Utils::Environment m_env;
|
||||||
ProjectExplorer::IDeviceConstPtr m_device;
|
ProjectExplorer::IDeviceConstPtr m_device;
|
||||||
Utils::QtcProcess *m_deviceProcess = nullptr;
|
Utils::QtcProcess *m_deviceProcess = nullptr;
|
||||||
|
Reference in New Issue
Block a user