diff options
author | Katja Marttila <katja.marttila@qt.io> | 2022-04-29 14:22:15 +0300 |
---|---|---|
committer | Katja Marttila <katja.marttila@qt.io> | 2022-05-06 13:43:22 +0300 |
commit | 1f16d680ce03e01a80915d64d5cc20694b1300f7 (patch) | |
tree | 94b966a952af3b090f245823a572a392e4535797 /src/libs/installer/packagemanagercore_p.cpp | |
parent | b0582875f59c83f36daf57dd75c982034b9572c1 (diff) |
Do not recalculate local installed components
No need to recalculate local installed components if no changes has been
made. This makes the component selection quicker if there are lots
of components to be installed.
Local components are already calculated and listed in LocalPackageHub.
Using this class directly instead of calculating own local component
hash table. This changes the localInstalledPackages() from QHash to QMap,
which is not as optimized for searching components, but overall performance
is still now way better.
Task-number: QTIFW-2522
Change-Id: I8c16060f4b4014f740be0c7c43ece5e659d92987
Reviewed-by: Arttu Tarkiainen <arttu.tarkiainen@qt.io>
Diffstat (limited to 'src/libs/installer/packagemanagercore_p.cpp')
-rw-r--r-- | src/libs/installer/packagemanagercore_p.cpp | 18 |
1 files changed, 4 insertions, 14 deletions
diff --git a/src/libs/installer/packagemanagercore_p.cpp b/src/libs/installer/packagemanagercore_p.cpp index c532e2cbd..cfe2cfe09 100644 --- a/src/libs/installer/packagemanagercore_p.cpp +++ b/src/libs/installer/packagemanagercore_p.cpp @@ -2744,12 +2744,12 @@ PackagesList PackageManagerCorePrivate::remotePackages() the application is running in installer mode or the local components file could not be parsed, the hash is empty. */ -LocalPackagesHash PackageManagerCorePrivate::localInstalledPackages() +LocalPackagesMap PackageManagerCorePrivate::localInstalledPackages() { if (isInstaller()) - return LocalPackagesHash(); + return LocalPackagesMap(); + - LocalPackagesHash installedPackages; if (m_localPackageHub->error() != LocalPackageHub::NoError) { if (m_localPackageHub->fileName().isEmpty()) m_localPackageHub->setFileName(componentsXmlPath()); @@ -2766,17 +2766,7 @@ LocalPackagesHash PackageManagerCorePrivate::localInstalledPackages() setStatus(PackageManagerCore::Failure, tr("Failure to read packages from %1.") .arg(componentsXmlPath())); } - - foreach (const LocalPackage &package, m_localPackageHub->packageInfos()) { - if (statusCanceledOrFailed()) - break; - installedPackages.insert(package.name, package); - if (package.virtualComp && package.autoDependencies.isEmpty()) { - if (!m_localVirtualComponents.contains(package.name)) - m_localVirtualComponents.append(package.name); - } - } - return installedPackages; + return m_localPackageHub->localPackages(); } bool PackageManagerCorePrivate::fetchMetaInformationFromRepositories(DownloadType type) |