diff --git a/src/file/fileindexscheduler.h b/src/file/fileindexscheduler.h --- a/src/file/fileindexscheduler.h +++ b/src/file/fileindexscheduler.h @@ -75,6 +75,7 @@ void handleFileRemoved(const QString& file); void scheduleIndexing(); + void halt(); Q_SCRIPTABLE void suspend() { suspendContentIndexer(true); } Q_SCRIPTABLE void resume() { suspendContentIndexer(false); } diff --git a/src/file/fileindexscheduler.cpp b/src/file/fileindexscheduler.cpp --- a/src/file/fileindexscheduler.cpp +++ b/src/file/fileindexscheduler.cpp @@ -191,6 +191,14 @@ } } +void FileIndexScheduler::halt() +{ + m_indexerStates = QList() << Idle; + m_contentIndexer->quit(); + m_threadPool.clear(); + m_threadPool.waitForDone(); +} + uint FileIndexScheduler::getRemainingTime() { if (m_indexerStates.at(0) != ContentIndexing) { diff --git a/src/file/mainhub.cpp b/src/file/mainhub.cpp --- a/src/file/mainhub.cpp +++ b/src/file/mainhub.cpp @@ -44,6 +44,8 @@ connect(&m_fileWatcher, &FileWatch::installedWatches, &m_fileIndexScheduler, &FileIndexScheduler::scheduleIndexing); + connect(QCoreApplication::instance(), &QCoreApplication::aboutToQuit, &m_fileIndexScheduler, &FileIndexScheduler::halt); + MainAdaptor* main = new MainAdaptor(this); Q_UNUSED(main) @@ -61,6 +63,8 @@ void MainHub::updateConfig() { + m_fileIndexScheduler.halt(); + m_config->forceConfigUpdate(); // FIXME!! //m_fileIndexer.updateConfig();