解决添加和删除索引目录异常的问题

This commit is contained in:
iaom 2022-12-08 10:34:29 +08:00
parent 4d18f55679
commit c064ba0a30
2 changed files with 10 additions and 7 deletions

View File

@ -139,15 +139,17 @@ void FileSystemWatcherPrivate::addWatchWithBlackList(const QStringList &pathList
QStringList FileSystemWatcherPrivate::removeWatch(const QString &path)
{
QStringList paths;
for(int wd : m_watchPathHash.keys()) {
QString tmpPath = m_watchPathHash.value(wd);
if(tmpPath.length() >= path.length()) {
if(FileUtils::isOrUnder(tmpPath, path)) {
//fix me:This function can be slow (O(n))
paths.append(removeWatch(m_watchPathHash.key(path)));
}
QHash<int, QString>::iterator iter = m_watchPathHash.begin();
while(iter != m_watchPathHash.end()) {
if(iter.value().length() >= path.length() && FileUtils::isOrUnder(iter.value(), path)) {
paths.append(iter.value());
inotify_rm_watch(m_inotifyFd, iter.key());
iter = m_watchPathHash.erase(iter);
} else {
++iter;
}
}
m_watchPathHash.squeeze();
return paths;
}

View File

@ -61,6 +61,7 @@ void IndexScheduler::addNewPath(const QString &folders, const QStringList &black
FirstRunIndexer *indexer = new FirstRunIndexer(QStringList(folders), blackList, m_stop, FirstRunIndexer::WorkMode::Add, target);
connect(indexer, &FirstRunIndexer::done, this, &IndexScheduler::addNewPathFinished, Qt::QueuedConnection);
m_threadPool.start(indexer);
m_fileWatcher.addWatch(folders, blackList);
}
}