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:
Jarek Kobus
2022-04-21 23:38:36 +02:00
parent 1587896537
commit c8a2e4aaa2
2 changed files with 14 additions and 31 deletions

View File

@@ -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

View File

@@ -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;