summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEike Ziller <eike.ziller@qt.io>2022-07-14 11:23:13 +0200
committerEike Ziller <eike.ziller@qt.io>2022-07-14 10:45:41 +0000
commit4adf6c833dba177131a6042a94d57844958b630f (patch)
treef19e9f7ce9a6b125ed30d27287c364d5d301700e
parent5088781693c9fbf0749a869b59e97227f14f5818 (diff)
downloadqt-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.cpp25
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();
});