diff options
| author | Aleix Pol <aleixpol@kde.org> | 2015-10-22 13:42:56 (GMT) |
|---|---|---|
| committer | Aleix Pol <aleixpol@kde.org> | 2015-10-22 13:42:56 (GMT) |
| commit | f0145664913a28f99ec3f4a17b34ef9c43b41069 (patch) | |
| tree | f260e6e91ac1259fa9ead5fd20b08e6c34105fc4 | |
| parent | d9fbd88e90adfdddbac452a76c2d824779694011 (diff) | |
Remove Appstream packages that haven't been found
Shit happens, let's be verbose and non-crashy about it.
| -rw-r--r-- | libmuon/backends/PackageKitBackend/PackageKitBackend.cpp | 12 | ||||
| -rw-r--r-- | libmuon/backends/PackageKitBackend/PackageKitResource.h | 2 |
2 files changed, 13 insertions, 1 deletions
diff --git a/libmuon/backends/PackageKitBackend/PackageKitBackend.cpp b/libmuon/backends/PackageKitBackend/PackageKitBackend.cpp index 99c9c48..ea8cde2 100644 --- a/libmuon/backends/PackageKitBackend/PackageKitBackend.cpp +++ b/libmuon/backends/PackageKitBackend/PackageKitBackend.cpp @@ -149,6 +149,16 @@ void PackageKitBackend::getPackagesFinished(PackageKit::Transaction::Exit exit) qWarning() << "error while fetching details" << exit; } + for(auto it = m_updatingPackages.begin(); it != m_updatingPackages.end(); ) { + auto pkr = qobject_cast<PackageKitResource*>(it.value()); + if (pkr->packages().isEmpty()) { + qWarning() << "Failed to find package for" << it.key(); + it.value()->deleteLater(); + it = m_updatingPackages.erase(it); + } else + ++it; + } + m_packages = m_updatingPackages; m_translationPackageToApp = m_updatingTranslationPackageToApp; acquireFetching(false); @@ -171,7 +181,7 @@ QVector<AbstractResource*> PackageKitBackend::resourcesByPackageName(const QStri const QHash<QString, QStringList> *dictionary = updating ? &m_updatingTranslationPackageToApp : &m_translationPackageToApp; const QHash<QString, AbstractResource*> *pkgs = updating ? &m_updatingPackages : &m_packages; - QStringList names = dictionary->value(name, QStringList(name)); + const QStringList names = dictionary->value(name, QStringList(name)); QVector<AbstractResource*> ret; ret.reserve(names.size()); foreach(const QString& name, names) { diff --git a/libmuon/backends/PackageKitBackend/PackageKitResource.h b/libmuon/backends/PackageKitBackend/PackageKitResource.h index 08211e8..e265bd7 100644 --- a/libmuon/backends/PackageKitBackend/PackageKitResource.h +++ b/libmuon/backends/PackageKitBackend/PackageKitResource.h @@ -58,6 +58,8 @@ class PackageKitResource : public AbstractResource QString installedPackageId() const; QString availablePackageId() const; + QMap<PackageKit::Transaction::Info, QStringList> packages() const { return m_packages; } + public slots: void addPackageId(PackageKit::Transaction::Info info, const QString &packageId, const QString &summary); void setDetails(const PackageKit::Details& details); |
