forked from qt-creator/qt-creator
		
	Use QtcProcess in startAvdAsync()
Change-Id: I47d6522f944ffe95a047e22971e94bba4fc93e2a Reviewed-by: hjk <hjk@qt.io> Reviewed-by: Alessandro Portale <alessandro.portale@qt.io>
This commit is contained in:
		@@ -173,14 +173,14 @@ static CreateAvdInfo createAvdCommand(const AndroidConfig &config, const CreateA
 | 
			
		||||
    return result;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void avdProcessFinished(int exitCode, QProcess *p)
 | 
			
		||||
static void avdProcessFinished(int exitCode, QtcProcess *p)
 | 
			
		||||
{
 | 
			
		||||
    QTC_ASSERT(p, return);
 | 
			
		||||
    if (exitCode) {
 | 
			
		||||
        QString title = QCoreApplication::translate("Android::Internal::AndroidAvdManager",
 | 
			
		||||
                                                    "AVD Start Error");
 | 
			
		||||
        QMessageBox::critical(Core::ICore::dialogParent(), title,
 | 
			
		||||
                              QString::fromLatin1(p->readAll()));
 | 
			
		||||
                              QString::fromLatin1(p->readAllStandardOutput()));
 | 
			
		||||
    }
 | 
			
		||||
    p->deleteLater();
 | 
			
		||||
}
 | 
			
		||||
@@ -293,23 +293,21 @@ bool AndroidAvdManager::startAvdAsync(const QString &avdName) const
 | 
			
		||||
                              .arg(m_config.emulatorToolPath().toString()));
 | 
			
		||||
        return false;
 | 
			
		||||
    }
 | 
			
		||||
    auto avdProcess = new QProcess();
 | 
			
		||||
    auto avdProcess = new QtcProcess();
 | 
			
		||||
    avdProcess->setProcessChannelMode(QProcess::MergedChannels);
 | 
			
		||||
    QObject::connect(avdProcess,
 | 
			
		||||
                     QOverload<int, QProcess::ExitStatus>::of(&QProcess::finished),
 | 
			
		||||
                     avdProcess,
 | 
			
		||||
                     std::bind(&avdProcessFinished, std::placeholders::_1, avdProcess));
 | 
			
		||||
    QObject::connect(avdProcess, &QtcProcess::finished, avdProcess,
 | 
			
		||||
                     [avdProcess] { avdProcessFinished(avdProcess->exitCode(), avdProcess); });
 | 
			
		||||
 | 
			
		||||
    // start the emulator
 | 
			
		||||
    QStringList arguments;
 | 
			
		||||
    if (AndroidConfigurations::force32bitEmulator())
 | 
			
		||||
        arguments << "-force-32bit";
 | 
			
		||||
 | 
			
		||||
    arguments << m_config.emulatorArgs()
 | 
			
		||||
              << "-avd" << avdName;
 | 
			
		||||
    arguments << m_config.emulatorArgs() << "-avd" << avdName;
 | 
			
		||||
    qCDebug(avdManagerLog) << "Running command (startAvdAsync):"
 | 
			
		||||
                           << CommandLine(m_config.emulatorToolPath(), arguments).toUserOutput();
 | 
			
		||||
    avdProcess->start(m_config.emulatorToolPath().toString(), arguments);
 | 
			
		||||
    avdProcess->setCommand({m_config.emulatorToolPath(), arguments});
 | 
			
		||||
    avdProcess->start();
 | 
			
		||||
    if (!avdProcess->waitForStarted(-1)) {
 | 
			
		||||
        delete avdProcess;
 | 
			
		||||
        return false;
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user