diff options
author | Eike Ziller <eike.ziller@qt.io> | 2022-07-14 11:23:13 +0200 |
---|---|---|
committer | Eike Ziller <eike.ziller@qt.io> | 2022-07-14 10:45:41 +0000 |
commit | 4adf6c833dba177131a6042a94d57844958b630f (patch) | |
tree | f19e9f7ce9a6b125ed30d27287c364d5d301700e | |
parent | 5088781693c9fbf0749a869b59e97227f14f5818 (diff) | |
download | qt-creator-4adf6c833dba177131a6042a94d57844958b630f.tar.gz |
Android: Don't show message boxes in non-GUI thread
Delay them to the GUI thread.
Task-number: QTCREATORBUG-27369
Change-Id: I2879de69ec1756ad55d3ae3aba8e233138bf3ed1
Reviewed-by: Jarek Kobus <jaroslaw.kobus@qt.io>
Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
-rw-r--r-- | src/plugins/android/androidavdmanager.cpp | 25 |
1 files changed, 16 insertions, 9 deletions
diff --git a/src/plugins/android/androidavdmanager.cpp b/src/plugins/android/androidavdmanager.cpp index 3bbfd14006..429e7183df 100644 --- a/src/plugins/android/androidavdmanager.cpp +++ b/src/plugins/android/androidavdmanager.cpp @@ -267,11 +267,15 @@ bool AndroidAvdManager::startAvdAsync(const QString &avdName) const { QFileInfo info(m_config.emulatorToolPath().toString()); if (!info.exists()) { - QMessageBox::critical(Core::ICore::dialogParent(), - tr("Emulator Tool Is Missing"), - tr("Install the missing emulator tool (%1) to the" - " installed Android SDK.") - .arg(m_config.emulatorToolPath().toString())); + const QString emulatorToolPath = m_config.emulatorToolPath().toUserOutput(); + QMetaObject::invokeMethod(Core::ICore::mainWindow(), [emulatorToolPath] { + QMessageBox::critical(Core::ICore::dialogParent(), + AndroidAvdManager::tr("Emulator Tool Is Missing"), + AndroidAvdManager::tr( + "Install the missing emulator tool (%1) to the" + " installed Android SDK.") + .arg(emulatorToolPath)); + }); return false; } @@ -283,10 +287,13 @@ bool AndroidAvdManager::startAvdAsync(const QString &avdName) const avdProcess->setProcessChannelMode(QProcess::MergedChannels); QObject::connect(avdProcess, &QtcProcess::done, avdProcess, [avdProcess] { if (avdProcess->exitCode()) { - const QString title = QCoreApplication::translate("Android::Internal::AndroidAvdManager", - "AVD Start Error"); - QMessageBox::critical(Core::ICore::dialogParent(), title, - QString::fromLatin1(avdProcess->readAllStandardOutput())); + const QString errorOutput = QString::fromLatin1(avdProcess->readAllStandardOutput()); + QMetaObject::invokeMethod(Core::ICore::mainWindow(), [errorOutput] { + const QString title + = QCoreApplication::translate("Android::Internal::AndroidAvdManager", + "AVD Start Error"); + QMessageBox::critical(Core::ICore::dialogParent(), title, errorOutput); + }); } avdProcess->deleteLater(); }); |