forked from qt-creator/qt-creator
QtcProcess: Get rid of setProcessUserEventWhileRunning()
Introduce EventLoopMode enum and pass it to the QtcProcess::runBlocking() instead. There is no need to store this setting. By default this value is NoEventLoop. Change-Id: Icad98b77bec5280b79039b7e5aa4ec408261521c Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: hjk <hjk@qt.io> Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
This commit is contained in:
@@ -705,7 +705,6 @@ public:
|
||||
StartFailure m_startFailure = NoFailure;
|
||||
bool m_timeOutMessageBoxEnabled = false;
|
||||
bool m_waitingForUser = false;
|
||||
bool m_processUserEvents = false;
|
||||
};
|
||||
|
||||
void QtcProcessPrivate::clearForRun()
|
||||
@@ -1445,11 +1444,6 @@ void ChannelBuffer::handleRest()
|
||||
}
|
||||
}
|
||||
|
||||
void QtcProcess::setProcessUserEventWhileRunning()
|
||||
{
|
||||
d->m_processUserEvents = true;
|
||||
}
|
||||
|
||||
void QtcProcess::setTimeoutS(int timeoutS)
|
||||
{
|
||||
if (timeoutS > 0)
|
||||
@@ -1486,7 +1480,7 @@ static bool isGuiThread()
|
||||
}
|
||||
#endif
|
||||
|
||||
void QtcProcess::runBlocking()
|
||||
void QtcProcess::runBlocking(QtcProcess::EventLoopMode eventLoopMode)
|
||||
{
|
||||
// FIXME: Implement properly
|
||||
|
||||
@@ -1497,10 +1491,10 @@ void QtcProcess::runBlocking()
|
||||
};
|
||||
|
||||
qCDebug(processLog).noquote() << "Starting blocking:" << d->m_commandLine.toUserOutput()
|
||||
<< " process user events: " << d->m_processUserEvents;
|
||||
<< " process user events: " << (eventLoopMode == QtcProcess::WithEventLoop);
|
||||
ExecuteOnDestruction logResult([this] { qCDebug(processLog) << *this; });
|
||||
|
||||
if (d->m_processUserEvents) {
|
||||
if (eventLoopMode == QtcProcess::WithEventLoop) {
|
||||
QtcProcess::start();
|
||||
|
||||
// On Windows, start failure is triggered immediately if the
|
||||
|
||||
@@ -126,11 +126,15 @@ public:
|
||||
|
||||
static bool startDetached(const CommandLine &cmd, const FilePath &workingDirectory = {},
|
||||
qint64 *pid = nullptr);
|
||||
// Starts the command and waits for finish. User input processing depends
|
||||
// on whether setProcessUserEventWhileRunning was called.
|
||||
void runBlocking();
|
||||
// This starts a nested event loop when running the command.
|
||||
void setProcessUserEventWhileRunning(); // Avoid.
|
||||
|
||||
enum EventLoopMode {
|
||||
NoEventLoop,
|
||||
WithEventLoop // Avoid
|
||||
};
|
||||
|
||||
// Starts the command and waits for finish.
|
||||
// User input processing is enabled when WithEventLoop was passed.
|
||||
void runBlocking(EventLoopMode eventLoopMode = NoEventLoop);
|
||||
|
||||
/* Timeout for hanging processes (triggers after no more output
|
||||
* occurs on stderr/stdout). */
|
||||
|
||||
@@ -416,8 +416,7 @@ void ShellCommand::runSynchronous(QtcProcess &process, const FilePath &workingDi
|
||||
if (d->m_codec)
|
||||
process.setCodec(d->m_codec);
|
||||
|
||||
process.setProcessUserEventWhileRunning();
|
||||
process.runBlocking();
|
||||
process.runBlocking(QtcProcess::WithEventLoop);
|
||||
}
|
||||
|
||||
const QVariant &ShellCommand::cookie() const
|
||||
|
||||
@@ -1061,8 +1061,7 @@ QAbstractItemModel *AndroidBuildApkStep::keystoreCertificates()
|
||||
QtcProcess keytoolProc;
|
||||
keytoolProc.setTimeoutS(30);
|
||||
keytoolProc.setCommand({AndroidConfigurations::currentConfig().keytoolPath(), params});
|
||||
keytoolProc.setProcessUserEventWhileRunning();
|
||||
keytoolProc.runBlocking();
|
||||
keytoolProc.runBlocking(QtcProcess::WithEventLoop);
|
||||
if (keytoolProc.result() > QtcProcess::FinishedWithError)
|
||||
QMessageBox::critical(nullptr, tr("Error"), tr("Failed to run keytool."));
|
||||
else
|
||||
|
||||
@@ -199,8 +199,7 @@ void AndroidCreateKeystoreCertificate::buttonBoxAccepted()
|
||||
QtcProcess genKeyCertProc;
|
||||
genKeyCertProc.setTimeoutS(15);
|
||||
genKeyCertProc.setCommand(command);
|
||||
genKeyCertProc.setProcessUserEventWhileRunning();
|
||||
genKeyCertProc.runBlocking();
|
||||
genKeyCertProc.runBlocking(QtcProcess::WithEventLoop);
|
||||
|
||||
if (genKeyCertProc.result() != QtcProcess::FinishedWithSuccess) {
|
||||
QMessageBox::critical(this, tr("Error"),
|
||||
|
||||
@@ -527,8 +527,7 @@ void AndroidDeployQtStep::runCommand(const CommandLine &command)
|
||||
OutputFormat::NormalMessage);
|
||||
|
||||
buildProc.setCommand(command);
|
||||
buildProc.setProcessUserEventWhileRunning();
|
||||
buildProc.runBlocking();
|
||||
buildProc.runBlocking(QtcProcess::WithEventLoop);
|
||||
if (buildProc.result() != QtcProcess::FinishedWithSuccess)
|
||||
reportWarningOrError(buildProc.exitMessage(), Task::Error);
|
||||
}
|
||||
|
||||
@@ -591,8 +591,7 @@ bool AndroidManager::checkKeystorePassword(const QString &keystorePath, const QS
|
||||
QtcProcess proc;
|
||||
proc.setTimeoutS(10);
|
||||
proc.setCommand(cmd);
|
||||
proc.setProcessUserEventWhileRunning();
|
||||
proc.runBlocking();
|
||||
proc.runBlocking(QtcProcess::WithEventLoop);
|
||||
return proc.result() == QtcProcess::FinishedWithSuccess;
|
||||
}
|
||||
|
||||
@@ -609,8 +608,7 @@ bool AndroidManager::checkCertificatePassword(const QString &keystorePath, const
|
||||
QtcProcess proc;
|
||||
proc.setTimeoutS(10);
|
||||
proc.setCommand({AndroidConfigurations::currentConfig().keytoolPath(), arguments});
|
||||
proc.setProcessUserEventWhileRunning();
|
||||
proc.runBlocking();
|
||||
proc.runBlocking(QtcProcess::WithEventLoop);
|
||||
return proc.result() == QtcProcess::FinishedWithSuccess;
|
||||
}
|
||||
|
||||
@@ -624,8 +622,7 @@ bool AndroidManager::checkCertificateExists(const QString &keystorePath,
|
||||
QtcProcess proc;
|
||||
proc.setTimeoutS(10);
|
||||
proc.setCommand({AndroidConfigurations::currentConfig().keytoolPath(), arguments});
|
||||
proc.setProcessUserEventWhileRunning();
|
||||
proc.runBlocking();
|
||||
proc.runBlocking(QtcProcess::WithEventLoop);
|
||||
return proc.result() == QtcProcess::FinishedWithSuccess;
|
||||
}
|
||||
|
||||
@@ -780,8 +777,7 @@ SdkToolResult AndroidManager::runCommand(const CommandLine &command,
|
||||
cmdProc.setWriteData(writeData);
|
||||
qCDebug(androidManagerLog) << "Running command (sync):" << command.toUserOutput();
|
||||
cmdProc.setCommand(command);
|
||||
cmdProc.setProcessUserEventWhileRunning();
|
||||
cmdProc.runBlocking();
|
||||
cmdProc.runBlocking(QtcProcess::WithEventLoop);
|
||||
cmdResult.m_stdOut = cmdProc.stdOut().trimmed();
|
||||
cmdResult.m_stdErr = cmdProc.stdErr().trimmed();
|
||||
cmdResult.m_success = cmdProc.result() == QtcProcess::FinishedWithSuccess;
|
||||
|
||||
@@ -136,8 +136,7 @@ static bool sdkManagerCommand(const AndroidConfig &config, const QStringList &ar
|
||||
proc.setTimeoutS(timeout);
|
||||
proc.setTimeOutMessageBoxEnabled(true);
|
||||
proc.setCommand({config.sdkManagerToolPath(), newArgs});
|
||||
proc.setProcessUserEventWhileRunning();
|
||||
proc.runBlocking();
|
||||
proc.runBlocking(QtcProcess::WithEventLoop);
|
||||
if (output)
|
||||
*output = proc.allOutput();
|
||||
return proc.result() == QtcProcess::FinishedWithSuccess;
|
||||
@@ -178,8 +177,7 @@ static void sdkManagerCommand(const AndroidConfig &config, const QStringList &ar
|
||||
&proc, &QtcProcess::stopProcess);
|
||||
}
|
||||
proc.setCommand({config.sdkManagerToolPath(), newArgs});
|
||||
proc.setProcessUserEventWhileRunning();
|
||||
proc.runBlocking();
|
||||
proc.runBlocking(QtcProcess::WithEventLoop);
|
||||
if (assertionFound) {
|
||||
output.success = false;
|
||||
output.stdOutput = proc.stdOut();
|
||||
|
||||
@@ -2354,8 +2354,7 @@ QString ClearCasePluginPrivate::runExtDiff(const FilePath &workingDir, const QSt
|
||||
process.setWorkingDirectory(workingDir);
|
||||
process.setCodec(outputCodec ? outputCodec : QTextCodec::codecForName("UTF-8"));
|
||||
process.setCommand(diff);
|
||||
process.setProcessUserEventWhileRunning();
|
||||
process.runBlocking();
|
||||
process.runBlocking(QtcProcess::WithEventLoop);
|
||||
if (process.result() != QtcProcess::FinishedWithSuccess)
|
||||
return QString();
|
||||
return process.allOutput();
|
||||
|
||||
@@ -1270,8 +1270,7 @@ PerforceResponse PerforcePluginPrivate::synchronousProcess(const FilePath &worki
|
||||
}
|
||||
process.setTimeOutMessageBoxEnabled(true);
|
||||
process.setCommand({m_settings.p4BinaryPath.filePath(), args});
|
||||
process.setProcessUserEventWhileRunning();
|
||||
process.runBlocking();
|
||||
process.runBlocking(QtcProcess::WithEventLoop);
|
||||
|
||||
PerforceResponse response;
|
||||
response.error = true;
|
||||
|
||||
@@ -115,8 +115,7 @@ static bool
|
||||
qDebug("In %s, running:\n%s\n", qPrintable(workingDirectory.toUserOutput()),
|
||||
qPrintable(cmd.toUserOutput()));
|
||||
process.setCommand(cmd);
|
||||
process.setProcessUserEventWhileRunning();
|
||||
process.runBlocking();
|
||||
process.runBlocking(QtcProcess::WithEventLoop);
|
||||
if (process.result() != Utils::QtcProcess::FinishedWithSuccess) {
|
||||
*errorMessage = QString("Generator script failed: %1").arg(process.exitMessage());
|
||||
const QString stdErr = process.stdErr();
|
||||
|
||||
Reference in New Issue
Block a user