diff --git a/src/project/project.cpp b/src/project/project.cpp --- a/src/project/project.cpp +++ b/src/project/project.cpp @@ -32,6 +32,7 @@ #include "jobs.h" #include "glossary.h" #include "tmmanager.h" +#include "tmscanapi.h" #include "glossarywindow.h" #include "editortab.h" #include "dbfilesmodel.h" @@ -154,6 +155,7 @@ { QTime a; a.start(); + TM::stopScanJobs(); TM::threadPool()->clear(); qCDebug(LOKALIZE_LOG) << "loading" << newProjectPath << "finishing tm jobs..."; diff --git a/src/tm/tmscanapi.h b/src/tm/tmscanapi.h --- a/src/tm/tmscanapi.h +++ b/src/tm/tmscanapi.h @@ -65,6 +65,8 @@ QTime m_time; QVector m_jobs; }; + +void stopScanJobs(); } #endif diff --git a/src/tm/tmscanapi.cpp b/src/tm/tmscanapi.cpp --- a/src/tm/tmscanapi.cpp +++ b/src/tm/tmscanapi.cpp @@ -97,9 +97,12 @@ qMakePair(i18n("TM"), m_dbName)); } +QVector _scanJobs; + int TM::scanRecursive(const QStringList& filePaths, const QString& dbName) { RecursiveScanJob* metaJob = new RecursiveScanJob(dbName); + _scanJobs.append(metaJob); KIO::getJobTracker()->registerJob(metaJob); metaJob->start(); if (!askAuthorInfoIfEmpty()) @@ -126,6 +129,16 @@ return result.size(); } +void TM::stopScanJobs() { + QVectorIterator itScanJobs(_scanJobs); + while (itScanJobs.hasNext()) { + auto job = itScanJobs.next(); + job->kill(); + job->deleteLater(); + } + _scanJobs.clear(); +} + //returns gross number of jobs started static QVector TM::doScanRecursive(const QDir& dir, const QString& dbName, KJob* metaJob) {