]> granicus.if.org Git - transmission/commitdiff
#5841: Fix initial watchdir scan in Qt client
authorMike Gelfand <mikedld@mikedld.com>
Thu, 11 Dec 2014 22:21:24 +0000 (22:21 +0000)
committerMike Gelfand <mikedld@mikedld.com>
Thu, 11 Dec 2014 22:21:24 +0000 (22:21 +0000)
Run the initial scan after application has finished initializing and
session has been created. Otherwise, adding torrents is a no-op.

qt/watchdir.cc
qt/watchdir.h

index a6f6884fe47438fd08d5fb9a8cab5f0754ffde91..cadcda937a2ae64e9b93d1cd19a258071e6eccef 100644 (file)
@@ -92,7 +92,7 @@ WatchDir :: setPath (const QString& path, bool isEnabled)
       connect (myWatcher, SIGNAL(directoryChanged(const QString&)),
                this, SLOT(watcherActivated(const QString&)));
       //std::cerr << "watching " << qPrintable(path) << " for new .torrent files" << std::endl;
-      watcherActivated (path); // trigger the watchdir for .torrent files in there already
+      QTimer::singleShot (0, this, SLOT (rescanAllWatchedDirectories ())); // trigger the watchdir for .torrent files in there already
     }
 }
 
@@ -140,3 +140,13 @@ WatchDir :: watcherActivated (const QString& path)
   // for comparison the next time around
   myWatchDirFiles = files;
 }
+
+void
+WatchDir :: rescanAllWatchedDirectories ()
+{
+  if (myWatcher == nullptr)
+    return;
+
+  foreach (const QString& path, myWatcher->directories ())
+    watcherActivated (path);
+}
index a123c7879c0f8ee90ecbcb558c51ea745485ad97..81dcc8afb142f0c32f76a58f6af5f30743624d9d 100644 (file)
@@ -39,6 +39,9 @@ class WatchDir: public QObject
     void watcherActivated (const QString& path);
     void onTimeout ();
 
+  private slots:
+    void rescanAllWatchedDirectories ();
+
   private:
     const TorrentModel& myModel;
     QSet<QString> myWatchDirFiles;