diff src/fswatcher.cpp @ 593:40b40c193eaa

Fix file update time calculation in FS watcher
author Chris Cannam
date Tue, 17 Apr 2012 13:31:30 +0100
parents 0b0444762a5d
children 10ef94e51f44
line wrap: on
line diff
--- a/src/fswatcher.cpp	Thu Mar 15 16:27:38 2012 +0000
+++ b/src/fswatcher.cpp	Tue Apr 17 13:31:30 2012 +0100
@@ -28,7 +28,7 @@
 
 #include <deque>
 
-//#define DEBUG_FSWATCHER 1
+#define DEBUG_FSWATCHER 1
 
 /*
  * Watching the filesystem is trickier than it seems at first glance.
@@ -297,10 +297,10 @@
     size_t lastUpdatedAt = m_tokenMap[token];
     QSet<QString> changed;
     for (QHash<QString, size_t>::const_iterator i = m_changes.begin();
-	 i != m_changes.end(); ++i) {
-	if (i.value() > lastUpdatedAt) {
-	    changed.insert(i.key());
-	}
+         i != m_changes.end(); ++i) {
+        if (i.value() > lastUpdatedAt) {
+             changed.insert(i.key());
+        }
     }
     m_tokenMap[token] = m_lastCounter;
     return changed;
@@ -321,7 +321,7 @@
         if (files == m_dirContents[path]) {
 
 #ifdef DEBUG_FSWATCHER
-            std::cerr << "FsWatcher: Directory " << path << " has changed, but not in a way that we are monitoring" << std::endl;
+            std::cerr << "FsWatcher: Directory " << path << " has changed, but not in a way that we are monitoring -- doing manual check" << std::endl;
 #endif
 
 #ifdef Q_OS_MAC
@@ -371,6 +371,7 @@
 bool
 FsWatcher::manuallyCheckTrackedFiles()
 {
+    std::cerr << "FsWatcher::manuallyCheckTrackedFiles" << std::endl;
     bool foundChanges = false;
 
     for (PathTimeMap::iterator i = m_trackedFileUpdates.begin();
@@ -379,9 +380,13 @@
         QString path = i.key();
         QDateTime prevUpdate = i.value();
 
-        QFileInfo fi(path);
+        QFileInfo fi(m_workDirPath + QDir::separator() + path);
         QDateTime currUpdate = fi.lastModified();
 
+//        std::cerr << "FsWatcher: Tracked file " << path << " previously changed at "
+//                  << prevUpdate.toString().toStdString()
+//                  << ", currently at " << currUpdate.toString().toStdString() << std::endl;
+
         if (currUpdate > prevUpdate) {
 
 #ifdef DEBUG_FSWATCHER