summaryrefslogtreecommitdiff
path: root/kde-frameworks/knewstuff
diff options
context:
space:
mode:
authorV3n3RiX <venerix@redcorelinux.org>2020-12-25 23:06:25 +0000
committerV3n3RiX <venerix@redcorelinux.org>2020-12-25 23:06:25 +0000
commit441d1370330332b7d78f238d2f5e13f7aed5e4e0 (patch)
tree6a5171dd615dfeee62a45044144c66e864738fb0 /kde-frameworks/knewstuff
parentab3da91fb6c91a9df52fff8f991570f456fd3c7a (diff)
gentoo christmass resync : 25.12.2020
Diffstat (limited to 'kde-frameworks/knewstuff')
-rw-r--r--kde-frameworks/knewstuff/Manifest3
-rw-r--r--kde-frameworks/knewstuff/files/knewstuff-5.77.0-add-dptr-to-cache.patch135
-rw-r--r--kde-frameworks/knewstuff/knewstuff-5.77.0-r1.ebuild (renamed from kde-frameworks/knewstuff/knewstuff-5.77.0.ebuild)2
3 files changed, 139 insertions, 1 deletions
diff --git a/kde-frameworks/knewstuff/Manifest b/kde-frameworks/knewstuff/Manifest
index 3e3ac72c361e..f3d552e23be9 100644
--- a/kde-frameworks/knewstuff/Manifest
+++ b/kde-frameworks/knewstuff/Manifest
@@ -1,5 +1,6 @@
+AUX knewstuff-5.77.0-add-dptr-to-cache.patch 4360 BLAKE2B cdfcdcce877f360a79731d508a8b52be23682efaa842ff58aed96539fb2e0c08a6744c3a6401c52116d5b19bf869043e3d0b73d873f50cabcef0101c155fae38 SHA512 78906c52f768bf7240bd088913292d486ea74310f6071e4baa7b5ebddf7e1dc229b6aaef36e44a79a6b303982b9da5dc6c07d4987de6617a4f85b1cee28d9618
DIST knewstuff-5.74.0.tar.xz 1143920 BLAKE2B f36956a82bf92960ee78ef61b272363de52b0be4acb2701fa1ad1494a7c05492fac79349b49a998549d2dd7f1c93406daef5e06f8fd28758aea460f667fe3b3a SHA512 038af364cf048035bc2d1a505e4f4c8318fd90efbfdd9c2fdffd9c22b1196a29b0d153643e838a98d472c19094e994a55983f84c63ef50f47574013a8b9f697a
DIST knewstuff-5.77.0.tar.xz 1143780 BLAKE2B 72b1e040041e6aca1593700a5378ca88be8b9edc3f2682c433231ee07fed5f56cea749f34dec74835cbc2cf5455e879296d388a0deed5132a9cdedb59ece85e1 SHA512 408b3dd045f13050a41389b4864888f8d261ecade50b4d3903f0982194a0a15828e459e755a001a5593cf818894cca2203ded9cc3fcdd60e23820a1d0f7c45b7
EBUILD knewstuff-5.74.0.ebuild 1094 BLAKE2B 24cd855095c1df4b504eabab595e719f8cfc4af7c65186b8ef277ba8cfd1358a9da8f84acb47d93a79973e2670c1d9eddcfe2ed4dc83b564714385134c2f2feb SHA512 14beed78d3994cfa9b556bf49a5802936eb779ddef447754c4a7f3bde0ba1eab7120354a0cce22babd9857f799e2edf203030d9cbf306b7a3e333de14b3f6b3b
-EBUILD knewstuff-5.77.0.ebuild 1097 BLAKE2B feec3ad726c4ffff0bbab809b2a49092500f92d5b7f66d9c80f576da3399e8f5e8b7888656ea502cdbaeb08b867b6ede82106137c68fcd43db2e30bbeff7093a SHA512 f546380fa6f6fd26cc8b80941784569d06d59097b10f1ed0c1a663b3e9701d5e3c52894242ea3e4feb021fbd56fb9068a20c323d525980b24fb558db329d812a
+EBUILD knewstuff-5.77.0-r1.ebuild 1170 BLAKE2B 0973a71b781644415e05c4b487181bca88f3a76d0d59f77204b756e58c96d5aca760e0f888d8ae66bfe8b8c190e38d841beddd2644d47a635c78f9f38afabdf0 SHA512 6481a75e450f0e2308bf3a1ac469556643860a6955d0be3852a3571f57458dd67a5db1204518a53fa31339f2d86184bcb0aa80992ab3347db6a9c2edd5071dc6
MISC metadata.xml 249 BLAKE2B ad415db89e5dee1627aa77f44ded9d4e1e5b8217d06c7ca25bbaa3fe92ce67c2b1090957c45a821b407d7927e5af798498aa6a5b903895ee1af8ee20a446c7f7 SHA512 76a5a340b13f0053ca3c5e94ed24380ea8d29b45ac8655419e22eaadb1e4a827c04d2e7e36b65145c4964e6526f656618fc6ac144e277ef53cb7373e6239e3c3
diff --git a/kde-frameworks/knewstuff/files/knewstuff-5.77.0-add-dptr-to-cache.patch b/kde-frameworks/knewstuff/files/knewstuff-5.77.0-add-dptr-to-cache.patch
new file mode 100644
index 000000000000..f6547fc6e5ff
--- /dev/null
+++ b/kde-frameworks/knewstuff/files/knewstuff-5.77.0-add-dptr-to-cache.patch
@@ -0,0 +1,135 @@
+From 243ea6155b28457c8b1441fee8ab1037828d21ba Mon Sep 17 00:00:00 2001
+From: Dan Leinir Turthra Jensen <admin@leinir.dk>
+Date: Mon, 14 Dec 2020 21:11:51 +0000
+Subject: [PATCH] Add a dptr to Cache, and move the throttle timer there to fix
+ crash
+
+Previously, the throttle timer was a raw static, but it was also a parented qobject, which means that when the cache was deleted, so was the timer, but the variable was not reset. Consequently, things would crash left and right later on. So, to alleviate this, and hopefully avoid future issues, introduce a dptr, stick the timer there, and move the logic to that private class as well.
+
+BUG:429442
+
+FIXED-IN:5.78
+---
+ src/core/cache.cpp | 41 ++++++++++++++++++++++++++++++-----------
+ src/core/cache.h | 7 +++++--
+ 2 files changed, 35 insertions(+), 13 deletions(-)
+
+diff --git a/src/core/cache.cpp b/src/core/cache.cpp
+index 0395045c..ace7be4e 100644
+--- a/src/core/cache.cpp
++++ b/src/core/cache.cpp
+@@ -11,17 +11,42 @@
+ #include <QDir>
+ #include <QFileInfo>
+ #include <QFileSystemWatcher>
++#include <QPointer>
+ #include <QTimer>
+ #include <QXmlStreamReader>
+ #include <qstandardpaths.h>
+ #include <knewstuffcore_debug.h>
+
++class KNSCore::CachePrivate {
++public:
++ CachePrivate(Cache* qq)
++ : q(qq)
++ {}
++ ~CachePrivate() {}
++
++ Cache* q;
++ QHash<QString, EntryInternal::List> requestCache;
++
++ QPointer<QTimer> throttleTimer;
++ void throttleWrite() {
++ if (!throttleTimer) {
++ throttleTimer = new QTimer(q);
++ QObject::connect(throttleTimer, &QTimer::timeout, q, [this](){ q->writeRegistry(); });
++ throttleTimer->setSingleShot(true);
++ throttleTimer->setInterval(1000);
++ }
++ throttleTimer->start();
++ }
++};
++
+ using namespace KNSCore;
+
+ typedef QHash<QString, QWeakPointer<Cache> > CacheHash;
+ Q_GLOBAL_STATIC(CacheHash, s_caches)
+
+-Cache::Cache(const QString &appName): QObject(nullptr)
++Cache::Cache(const QString &appName)
++ : QObject(nullptr)
++ , d(new CachePrivate(this))
+ {
+ m_kns2ComponentName = appName;
+
+@@ -280,36 +305,30 @@ void Cache::registerChangedEntry(const KNSCore::EntryInternal &entry)
+ if (entry.status() == KNS3::Entry::Updating || entry.status() == KNS3::Entry::Installing) {
+ return;
+ }
+- static QTimer* writeThrottle{nullptr};
+- if (!writeThrottle) {
+- writeThrottle = new QTimer(this);
+- connect(writeThrottle, &QTimer::timeout, this, [this](){ writeRegistry(); });
+- writeThrottle->setInterval(1000);
+- }
+ if (!property("reloadingRegistry").toBool()) {
+ setProperty("dirty", true);
+ cache.remove(entry); // If value already exists in the set, the set is left unchanged
+ cache.insert(entry);
+- writeThrottle->start();
++ d->throttleWrite();
+ }
+ }
+
+ void Cache::insertRequest(const KNSCore::Provider::SearchRequest &request, const KNSCore::EntryInternal::List &entries)
+ {
+ // append new entries
+- auto &cacheList = requestCache[request.hashForRequest()];
++ auto &cacheList = d->requestCache[request.hashForRequest()];
+ for (const auto &entry : entries) {
+ if (!cacheList.contains(entry)) {
+ cacheList.append(entry);
+ }
+ }
+- qCDebug(KNEWSTUFFCORE) << request.hashForRequest() << " add: " << entries.size() << " keys: " << requestCache.keys();
++ qCDebug(KNEWSTUFFCORE) << request.hashForRequest() << " add: " << entries.size() << " keys: " << d->requestCache.keys();
+ }
+
+ EntryInternal::List Cache::requestFromCache(const KNSCore::Provider::SearchRequest &request)
+ {
+ qCDebug(KNEWSTUFFCORE) << request.hashForRequest();
+- return requestCache.value(request.hashForRequest());
++ return d->requestCache.value(request.hashForRequest());
+ }
+
+ void KNSCore::Cache::removeDeletedEntries()
+diff --git a/src/core/cache.h b/src/core/cache.h
+index 06e95ab4..73ea7c61 100644
+--- a/src/core/cache.h
++++ b/src/core/cache.h
+@@ -16,9 +16,11 @@
+
+ #include "knewstuffcore_export.h"
+
++#include <memory.h>
++
+ namespace KNSCore
+ {
+-
++class CachePrivate;
+ class KNEWSTUFFCORE_EXPORT Cache : public QObject
+ {
+ Q_OBJECT
+@@ -99,7 +101,8 @@ private:
+ QString m_kns2ComponentName;
+
+ QSet<EntryInternal> cache;
+- QHash<QString, EntryInternal::List> requestCache;
++
++ std::unique_ptr<CachePrivate> d;
+ };
+
+ }
+--
+GitLab
+
diff --git a/kde-frameworks/knewstuff/knewstuff-5.77.0.ebuild b/kde-frameworks/knewstuff/knewstuff-5.77.0-r1.ebuild
index 96d2ca852d9f..59ba609ab98f 100644
--- a/kde-frameworks/knewstuff/knewstuff-5.77.0.ebuild
+++ b/kde-frameworks/knewstuff/knewstuff-5.77.0-r1.ebuild
@@ -38,3 +38,5 @@ DEPEND="
RDEPEND="${DEPEND}
>=kde-frameworks/kirigami-${PVCUT}:5
"
+
+PATCHES=( "${FILESDIR}/${P}-add-dptr-to-cache.patch" ) # KDE-bug 429442