From d78f39b9bb53cba24e14ec437bb2c98717f08161 Mon Sep 17 00:00:00 2001 From: Jarek Kobus Date: Mon, 28 Oct 2024 13:51:06 +0100 Subject: [PATCH] Android: Restore original calls to refreshPackages And remove the additional emission of packagesReloaded() signal. The refreshPackages() may or may not emit the packagesReloaded() signal synchronously. To make sure we validateSdk() on initial show just once, we call refreshPackages() and validateSdk() in a row and after that we establish connection to the packagesReloaded() signal. It fixes qml project build. Amends 56b88ab7580d0db10adb36e5972e83e13ea3f2c2 Amends ca8e5dbb4ee1f9f66d9dd0a2d24472a46d6bda5d Change-Id: If472950cdc05e1bdc080ef1781967b5dacec4433 Reviewed-by: hjk --- src/plugins/android/androidsdkmanager.cpp | 4 ++-- src/plugins/android/androidsettingswidget.cpp | 18 ++++++++++-------- src/plugins/android/avddialog.cpp | 1 - 3 files changed, 12 insertions(+), 11 deletions(-) diff --git a/src/plugins/android/androidsdkmanager.cpp b/src/plugins/android/androidsdkmanager.cpp index 2eab707d697..e5f2be4a7d1 100644 --- a/src/plugins/android/androidsdkmanager.cpp +++ b/src/plugins/android/androidsdkmanager.cpp @@ -341,6 +341,7 @@ public: AndroidSdkPackageList filteredPackages(AndroidSdkPackage::PackageState state, AndroidSdkPackage::PackageType type) { + m_sdkManager.refreshPackages(); return Utils::filtered(m_allPackages, [state, type](const AndroidSdkPackage *p) { return p->state() & state && p->type() & type; }); @@ -477,8 +478,6 @@ void AndroidSdkManager::refreshPackages() { if (AndroidConfig::sdkManagerToolPath() != m_d->lastSdkManagerPath) reloadPackages(); - else - emit packagesReloaded(); } void AndroidSdkManager::reloadPackages() @@ -522,6 +521,7 @@ AndroidSdkManagerPrivate::~AndroidSdkManagerPrivate() const AndroidSdkPackageList &AndroidSdkManagerPrivate::allPackages() { + m_sdkManager.refreshPackages(); return m_allPackages; } diff --git a/src/plugins/android/androidsettingswidget.cpp b/src/plugins/android/androidsettingswidget.cpp index f4045fb6845..ded9916f4de 100644 --- a/src/plugins/android/androidsettingswidget.cpp +++ b/src/plugins/android/androidsettingswidget.cpp @@ -478,13 +478,6 @@ AndroidSettingsWidget::AndroidSettingsWidget() this, &AndroidSettingsWidget::downloadOpenSslRepo); connect(downloadOpenJdkToolButton, &QAbstractButton::clicked, this, &AndroidSettingsWidget::openOpenJDKDownloadUrl); - - // Validate SDK again after any change in SDK packages. - connect(m_sdkManager, &AndroidSdkManager::packagesReloaded, this, [this] { - m_androidSummary->setInProgressText("Packages reloaded"); - m_sdkLocationPathChooser->triggerChanged(); - validateSdk(); - }); connect(sdkManagerToolButton, &QAbstractButton::clicked, this, [this] { executeAndroidSdkManagerDialog(m_sdkManager, this); }); @@ -519,7 +512,16 @@ void AndroidSettingsWidget::showEvent(QShowEvent *event) validateJdk(); // Reloading SDK packages (force) is still synchronous. Use zero timer // to let settings dialog open first. - QTimer::singleShot(0, m_sdkManager, &AndroidSdkManager::refreshPackages); + QTimer::singleShot(0, this, [this] { + m_sdkManager->refreshPackages(); + validateSdk(); + // Validate SDK again after any change in SDK packages. + connect(m_sdkManager, &AndroidSdkManager::packagesReloaded, this, [this] { + m_androidSummary->setInProgressText("Packages reloaded"); + m_sdkLocationPathChooser->triggerChanged(); + validateSdk(); + }); + }); validateOpenSsl(); m_isInitialReloadDone = true; } diff --git a/src/plugins/android/avddialog.cpp b/src/plugins/android/avddialog.cpp index dac9175a614..3743715f568 100644 --- a/src/plugins/android/avddialog.cpp +++ b/src/plugins/android/avddialog.cpp @@ -42,7 +42,6 @@ AvdDialog::AvdDialog(QWidget *parent) : QDialog(parent) , m_allowedNameChars(QLatin1String("[a-z|A-Z|0-9|._-]*")) { - AndroidConfigurations::sdkManager()->refreshPackages(); resize(800, 0); setWindowTitle(Tr::tr("Create new AVD"));