diff --git a/src/file/fileindexscheduler.h b/src/file/fileindexscheduler.h --- a/src/file/fileindexscheduler.h +++ b/src/file/fileindexscheduler.h @@ -77,6 +77,7 @@ void scheduleIndexing(); void scheduleCheckUnindexedFiles(); void scheduleCheckStaleIndexEntries(); + 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 @@ -206,6 +206,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 @@ -43,6 +43,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) @@ -64,6 +66,8 @@ void MainHub::updateConfig() { + m_fileIndexScheduler.halt(); + m_config->forceConfigUpdate(); // FIXME!! //m_fileIndexer.updateConfig();