author | Antonio Rojas
<arojas@archlinux.org> 2021-10-09 20:27:23 UTC |
committer | Antonio Rojas
<arojas@archlinux.org> 2021-10-09 20:27:23 UTC |
parent | 0ec77dcc3fd8f6633ddd4fbacd8b2649d6e4df1d |
PKGBUILD | +5 | -11 |
fix-OSC-traffic.patch | +0 | -67 |
diff --git a/PKGBUILD b/PKGBUILD index 8a594ce..fd31a30 100644 --- a/PKGBUILD +++ b/PKGBUILD @@ -3,8 +3,8 @@ # Contributor: Andrea Scarpino <andrea@archlinux.org> pkgname=attica -pkgver=5.86.0 -pkgrel=2 +pkgver=5.87.0 +pkgrel=1 arch=(x86_64) pkgdesc='Qt library that implements the Open Collaboration Services API' url='https://community.kde.org/Frameworks' @@ -12,17 +12,11 @@ license=(LGPL) depends=(qt5-base) makedepends=(extra-cmake-modules doxygen qt5-tools qt5-doc) groups=(kf5) -source=(https://download.kde.org/stable/frameworks/${pkgver%.*}/$pkgname-$pkgver.tar.xz{,.sig} - fix-OSC-traffic.patch) -sha256sums=('992ffe3743588b81a63dcb3886d406f63800423bd442e3b99058bfc80f0e467f' - 'SKIP' - 'bc0302ed8b507bf52638d18dd8570aa2aa61457210cd960ca8c08d819a423f02') +source=(https://download.kde.org/stable/frameworks/${pkgver%.*}/$pkgname-$pkgver.tar.xz{,.sig}) +sha256sums=('b8a1a8427b721221a975eb5f078864246cdcbbfd97ca4e48d17280c72bcd4e72' + 'SKIP') validpgpkeys=(53E6B47B45CEA3E0D5B7457758D0EE648A48B3BB) # David Faure <faure@kde.org> -prepare() { - patch -d $pkgname-$pkgver -p1 < fix-OSC-traffic.patch # Fix excessive OSC traffic -} - build() { cmake -B build -S $pkgname-$pkgver \ -DBUILD_TESTING=OFF \ diff --git a/fix-OSC-traffic.patch b/fix-OSC-traffic.patch deleted file mode 100644 index ae325c1..0000000 --- a/fix-OSC-traffic.patch +++ /dev/null @@ -1,67 +0,0 @@ -commit 7c38c8cf28a4d0d667e23ddfaaf38a955d65bf3e -Author: Aleix Pol <aleixpol@kde.org> -Date: Wed Sep 22 16:19:39 2021 +0200 - - Ensure categories.xml is only fetched once in parallel - - Otherwise we overload the server that is returning them fairly slowly - anyway (2 to 3 seconds?). It seems like it serves these sequentially as - well, which makes Discover startup stuttery. - -diff --git a/src/atticabasejob.cpp b/src/atticabasejob.cpp -index 99acf4f..e65d556 100644 ---- a/src/atticabasejob.cpp -+++ b/src/atticabasejob.cpp -@@ -26,6 +26,7 @@ public: - PlatformDependent *m_internals; - QNetworkReply *m_reply; - bool aborted{false}; -+ bool started = false; - - Private(PlatformDependent *internals) - : m_internals(internals) -@@ -120,7 +121,10 @@ void BaseJob::dataFinished() - - void BaseJob::start() - { -- QTimer::singleShot(0, this, &BaseJob::doWork); -+ if (!d->started) { -+ d->started = true; -+ QTimer::singleShot(0, this, &BaseJob::doWork); -+ } - } - - void BaseJob::doWork() -diff --git a/src/provider.cpp b/src/provider.cpp -index 9e4da64..b994ce9 100644 ---- a/src/provider.cpp -+++ b/src/provider.cpp -@@ -64,6 +64,7 @@ - #include <QFile> - #include <QNetworkAccessManager> - #include <QNetworkReply> -+#include <QThreadStorage> - #include <QUrlQuery> - - using namespace Attica; -@@ -1134,8 +1135,18 @@ ListJob<Category> *Provider::requestCategories() - return nullptr; - } - -- QUrl url = createUrl(QLatin1String("content/categories")); -- ListJob<Category> *job = new ListJob<Category>(d->m_internals, createRequest(url)); -+ const QUrl url = createUrl(QLatin1String("content/categories")); -+ -+ // Thread-local cache of categories requests. They are fairly slow and block startup -+ static QThreadStorage<QHash<QUrl, ListJob<Category> *>> reqs; -+ ListJob<Category> *job = reqs.localData().value(url); -+ if (!job) { -+ job = new ListJob<Category>(d->m_internals, createRequest(url)); -+ QObject::connect(job, &BaseJob::finished, [url] { -+ reqs.localData().remove(url); -+ }); -+ reqs.localData().insert(url, job); -+ } - return job; - } -