From afe939ef23971d2f2e10a2d82a00ad27bd7ca0e1 Mon Sep 17 00:00:00 2001
From: con <qtc-committer@nokia.com>
Date: Fri, 5 Mar 2010 12:55:04 +0100
Subject: [PATCH] A bit more efficient adding/removing of file watchers.

Each call of addPath(s) removePath(s) potentially is locking and
unlocking a mutex, so do it for all paths at once.
---
 src/plugins/coreplugin/filemanager.cpp | 11 ++++++-----
 1 file changed, 6 insertions(+), 5 deletions(-)

diff --git a/src/plugins/coreplugin/filemanager.cpp b/src/plugins/coreplugin/filemanager.cpp
index ee4ab681276..231828ab3bb 100644
--- a/src/plugins/coreplugin/filemanager.cpp
+++ b/src/plugins/coreplugin/filemanager.cpp
@@ -720,7 +720,9 @@ void FileManager::checkForReload()
 
     IFile::ReloadBehavior behavior = EditorManager::instance()->reloadBehavior();
 
+    QStringList allFileNames;
     foreach(const QString &fileName, d->m_changedFiles) {
+        allFileNames << fileName;
         // Get the information from the filesystem
         QFileInfo fi(fileName);
         bool expected = false;
@@ -756,13 +758,12 @@ void FileManager::checkForReload()
                 }
                 updateFileInfo(it.key());
             }
-
         }
-
-        d->m_fileWatcher->removePath(fileName);
-        d->m_fileWatcher->addPath(fileName);
     }
-
+    if (!allFileNames.isEmpty()) {
+        d->m_fileWatcher->removePaths(allFileNames);
+        d->m_fileWatcher->addPaths(allFileNames);
+    }
     d->m_changedFiles.clear();
     d->m_blockActivated = false;
 }
-- 
GitLab