[arch-commits] Commit in kdelibs/kde-unstable (PKGBUILD fix-nepomuk-cpu-usage.patch)
Andrea Scarpino
andrea at archlinux.org
Tue Jul 12 19:22:54 UTC 2011
Date: Tuesday, July 12, 2011 @ 15:22:54
Author: andrea
Revision: 131349
Fix high CPU usage by nepomukservicestub BUG#276593)
Added:
kdelibs/kde-unstable/fix-nepomuk-cpu-usage.patch
Modified:
kdelibs/kde-unstable/PKGBUILD
-----------------------------+
PKGBUILD | 9 ++
fix-nepomuk-cpu-usage.patch | 133 ++++++++++++++++++++++++++++++++++++++++++
2 files changed, 140 insertions(+), 2 deletions(-)
Modified: PKGBUILD
===================================================================
--- PKGBUILD 2011-07-12 18:06:00 UTC (rev 131348)
+++ PKGBUILD 2011-07-12 19:22:54 UTC (rev 131349)
@@ -19,10 +19,12 @@
replaces=('kdelibs-experimental')
install='kdelibs.install'
source=("http://download.kde.org/unstable/${pkgver}/src/${pkgname}-${pkgver}.tar.bz2"
- 'kde-applications-menu.patch' 'archlinux-menu.patch')
+ 'kde-applications-menu.patch' 'archlinux-menu.patch'
+ 'fix-nepomuk-cpu-usage.patch')
sha1sums=('9c46d7653a19f5897d4408180de239d7004c470e'
'86ee8c8660f19de8141ac99cd6943964d97a1ed7'
- '63a850ab4196b9d06934f2b4a13acd9f7739bc67')
+ '63a850ab4196b9d06934f2b4a13acd9f7739bc67'
+ '')
build() {
cd ${srcdir}/${pkgname}-${pkgver}
@@ -32,6 +34,9 @@
# add Archlinux menu entry
patch -p1 -i $srcdir/archlinux-menu.patch
+ # Already fixed upstream
+ patch -p1 -i "${srcdir}"/fix-nepomuk-cpu-usage.patch
+
cd ${srcdir}
mkdir build
cd build
Added: fix-nepomuk-cpu-usage.patch
===================================================================
--- fix-nepomuk-cpu-usage.patch (rev 0)
+++ fix-nepomuk-cpu-usage.patch 2011-07-12 19:22:54 UTC (rev 131349)
@@ -0,0 +1,133 @@
+commit 327ec9a67af653467b670115ebb3e26b00183c1d
+Author: Sebastian Trueg <trueg at kde.org>
+Date: Thu Jul 7 17:33:23 2011 +0200
+
+ Throttle the IndexCleaner the same way we do with the IndexScheduler.
+
+ BUG: 276593
+
+diff --git a/nepomuk/services/strigi/indexcleaner.cpp b/nepomuk/services/strigi/indexcleaner.cpp
+index 5c604ab..9198d0b 100644
+--- a/nepomuk/services/strigi/indexcleaner.cpp
++++ b/nepomuk/services/strigi/indexcleaner.cpp
+@@ -47,7 +47,8 @@ using namespace Soprano::Vocabulary;
+
+
+ Nepomuk::IndexCleaner::IndexCleaner(QObject* parent)
+- : KJob(parent)
++ : KJob(parent),
++ m_delay(0)
+ {
+ setCapabilities( Suspendable );
+ }
+@@ -268,7 +269,7 @@ void Nepomuk::IndexCleaner::slotRemoveResourcesDone(KJob* job)
+
+ QMutexLocker lock(&m_stateMutex);
+ if( !m_suspended ) {
+- clearNextBatch();
++ QTimer::singleShot(m_delay, this, SLOT(clearNextBatch()));
+ }
+ }
+
+@@ -313,4 +314,9 @@ bool Nepomuk::IndexCleaner::doResume()
+ return true;
+ }
+
++void Nepomuk::IndexCleaner::setDelay(int msecs)
++{
++ m_delay = msecs;
++}
++
+ #include "indexcleaner.moc"
+diff --git a/nepomuk/services/strigi/indexcleaner.h b/nepomuk/services/strigi/indexcleaner.h
+index e1c38ca..bf0713e 100644
+--- a/nepomuk/services/strigi/indexcleaner.h
++++ b/nepomuk/services/strigi/indexcleaner.h
+@@ -41,6 +41,16 @@ namespace Nepomuk {
+ virtual bool doSuspend();
+ virtual bool doResume();
+
++ public slots:
++ /**
++ * Set the delay between the cleanup queries.
++ * Used for throtteling the cleaner to not grab too
++ * many resources. Default is 0.
++ *
++ * \sa IndexScheduler::setIndexingSpeed()
++ */
++ void setDelay(int msecs);
++
+ private slots:
+ void clearNextBatch();
+ void slotRemoveResourcesDone(KJob* job);
+@@ -52,6 +62,7 @@ namespace Nepomuk {
+
+ QMutex m_stateMutex;
+ bool m_suspended;
++ int m_delay;
+ };
+ }
+
+diff --git a/nepomuk/services/strigi/indexscheduler.cpp b/nepomuk/services/strigi/indexscheduler.cpp
+index 3c92657..f3c6c36 100644
+--- a/nepomuk/services/strigi/indexscheduler.cpp
++++ b/nepomuk/services/strigi/indexscheduler.cpp
+@@ -208,7 +208,7 @@ Nepomuk::IndexScheduler::IndexScheduler( QObject* parent )
+ : QObject( parent ),
+ m_suspended( false ),
+ m_indexing( false ),
+- m_speed( FullSpeed )
++ m_indexingDelay( 0 )
+ {
+ m_cleaner = new IndexCleaner(this);
+ connect( m_cleaner, SIGNAL(finished(KJob*)), this, SLOT(slotCleaningDone()) );
+@@ -266,7 +266,13 @@ void Nepomuk::IndexScheduler::setSuspended( bool suspended )
+ void Nepomuk::IndexScheduler::setIndexingSpeed( IndexingSpeed speed )
+ {
+ kDebug() << speed;
+- m_speed = speed;
++ m_indexingDelay = 0;
++ if ( speed != FullSpeed ) {
++ m_indexingDelay = (speed == ReducedSpeed) ? s_reducedSpeedDelay : s_snailPaceDelay;
++ }
++ if( m_cleaner ) {
++ m_cleaner->setDelay(m_indexingDelay);
++ }
+ }
+
+
+@@ -481,11 +487,7 @@ bool Nepomuk::IndexScheduler::analyzeDir( const QString& dir_, Nepomuk::IndexSch
+ void Nepomuk::IndexScheduler::callDoIndexing()
+ {
+ if( !m_suspended ) {
+- uint delay = 0;
+- if ( m_speed != FullSpeed ) {
+- delay = (m_speed == ReducedSpeed) ? s_reducedSpeedDelay : s_snailPaceDelay;
+- }
+- QTimer::singleShot( delay, this, SLOT(doIndexing()) );
++ QTimer::singleShot( m_indexingDelay, this, SLOT(doIndexing()) );
+ }
+ }
+
+diff --git a/nepomuk/services/strigi/indexscheduler.h b/nepomuk/services/strigi/indexscheduler.h
+index 9ae1f18..8756206 100644
+--- a/nepomuk/services/strigi/indexscheduler.h
++++ b/nepomuk/services/strigi/indexscheduler.h
+@@ -121,8 +121,6 @@ namespace Nepomuk {
+ SnailPace
+ };
+
+- IndexingSpeed currentSpeed() const { return m_speed; }
+-
+ public Q_SLOTS:
+ void suspend();
+ void resume();
+@@ -226,7 +224,7 @@ namespace Nepomuk {
+ QString m_currentFolder;
+ KUrl m_currentUrl;
+
+- IndexingSpeed m_speed;
++ int m_indexingDelay;
+ IndexCleaner* m_cleaner;
+ };
+
More information about the arch-commits
mailing list