summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAleix Pol <aleixpol@kde.org>2015-10-22 13:42:56 (GMT)
committerAleix Pol <aleixpol@kde.org>2015-10-22 13:42:56 (GMT)
commitf0145664913a28f99ec3f4a17b34ef9c43b41069 (patch)
treef260e6e91ac1259fa9ead5fd20b08e6c34105fc4
parentd9fbd88e90adfdddbac452a76c2d824779694011 (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.cpp12
-rw-r--r--libmuon/backends/PackageKitBackend/PackageKitResource.h2
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);