Use SynchronousProcess::runBlocking

Use SynchronousProcess::runBlocking in favor of SychronousProcess::run.
This avoid nested event loops which can produce really strange crashes
if not use carefully.

This patch only converts those processes that have a timeout of less
than 5 seconds or use the default timeout.

Change-Id: I9de8899dcc946af7049ea357a91972996c0256a1
Reviewed-by: Vikas Pachdha <vikas.pachdha@theqtcompany.com>
Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
This commit is contained in:
Tobias Hunger
2016-05-26 12:12:01 +02:00
parent 179153829a
commit 5d3823ac47
14 changed files with 23 additions and 22 deletions

View File

@@ -385,7 +385,8 @@ void AndroidConfig::updateAvailableSdkPlatforms() const
SynchronousProcess proc;
proc.setProcessEnvironment(androidToolEnvironment().toProcessEnvironment());
SynchronousProcessResponse response
= proc.run(androidToolPath().toString(), QStringList() << QLatin1String("list") << QLatin1String("target")); // list avaialbe AVDs
= proc.runBlocking(androidToolPath().toString(),
QStringList() << QLatin1String("list") << QLatin1String("target")); // list avaialbe AVDs
if (response.result != SynchronousProcessResponse::Finished)
return;
@@ -673,9 +674,9 @@ bool AndroidConfig::removeAVD(const QString &name) const
proc.setTimeoutS(5);
proc.setProcessEnvironment(androidToolEnvironment().toProcessEnvironment());
SynchronousProcessResponse response
= proc.run(androidToolPath().toString(),
QStringList() << QLatin1String("delete") << QLatin1String("avd")
<< QLatin1String("-n") << name);
= proc.runBlocking(androidToolPath().toString(),
QStringList() << QLatin1String("delete") << QLatin1String("avd")
<< QLatin1String("-n") << name);
return response.result == SynchronousProcessResponse::Finished && response.exitCode == 0;
}
@@ -875,7 +876,7 @@ QString AndroidConfig::getDeviceProperty(const QString &adbToolPath, const QStri
SynchronousProcess adbProc;
adbProc.setTimeoutS(10);
SynchronousProcessResponse response = adbProc.run(adbToolPath, arguments);
SynchronousProcessResponse response = adbProc.runBlocking(adbToolPath, arguments);
if (response.result != SynchronousProcessResponse::Finished)
return QString();
@@ -1467,7 +1468,7 @@ void AndroidConfigurations::load()
SynchronousProcess proc;
proc.setTimeoutS(2);
proc.setProcessChannelMode(QProcess::MergedChannels);
SynchronousProcessResponse response = proc.run(javaHomeExec.absoluteFilePath(), QStringList());
SynchronousProcessResponse response = proc.runBlocking(javaHomeExec.absoluteFilePath(), QStringList());
if (response.result == SynchronousProcessResponse::Finished) {
const QString &javaHome = response.allOutput().trimmed();
if (!javaHome.isEmpty() && QFileInfo::exists(javaHome))