summaryrefslogtreecommitdiff
path: root/kde-unstable/kdebase-runtime/fix-nepomuk-cpu-usage.patch
diff options
context:
space:
mode:
Diffstat (limited to 'kde-unstable/kdebase-runtime/fix-nepomuk-cpu-usage.patch')
-rw-r--r--kde-unstable/kdebase-runtime/fix-nepomuk-cpu-usage.patch133
1 files changed, 133 insertions, 0 deletions
diff --git a/kde-unstable/kdebase-runtime/fix-nepomuk-cpu-usage.patch b/kde-unstable/kdebase-runtime/fix-nepomuk-cpu-usage.patch
new file mode 100644
index 000000000..545072807
--- /dev/null
+++ b/kde-unstable/kdebase-runtime/fix-nepomuk-cpu-usage.patch
@@ -0,0 +1,133 @@
+commit 327ec9a67af653467b670115ebb3e26b00183c1d
+Author: Sebastian Trueg <trueg@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;
+ };
+