diff --git a/src/plugins/android/androidavdmanager.cpp b/src/plugins/android/androidavdmanager.cpp index a376a3194c3..64c48e9fc69 100644 --- a/src/plugins/android/androidavdmanager.cpp +++ b/src/plugins/android/androidavdmanager.cpp @@ -39,6 +39,7 @@ #include #include +#include namespace { Q_LOGGING_CATEGORY(avdManagerLog, "qtc.android.avdManager") @@ -195,6 +196,18 @@ static CreateAvdInfo createAvdCommand(const AndroidConfig config, const CreateAv return result; } +static void avdProcessFinished(int exitCode, QProcess *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())); + } + p->deleteLater(); +} + /*! \class AvdManagerOutputParser \brief The AvdManagerOutputParser class is a helper class to parse the output of the avdmanager @@ -282,8 +295,10 @@ bool AndroidAvdManager::startAvdAsync(const QString &avdName) const return false; } QProcess *avdProcess = new QProcess(); - QObject::connect(avdProcess, static_cast(&QProcess::finished), - avdProcess, &QObject::deleteLater); + QObject::connect(avdProcess, + static_cast(&QProcess::finished), + avdProcess, + std::bind(&avdProcessFinished, std::placeholders::_1, avdProcess)); // start the emulator QStringList arguments;