From bed643e62735853eacbaaa89f5ac4fd83b1e6884 Mon Sep 17 00:00:00 2001 From: Vladimir Golovnev Date: Sat, 7 Aug 2021 12:33:29 +0300 Subject: [PATCH] Delay processing of watched folders (#15282) Fixes regression of #14882. Closes #15272. --- src/base/torrentfileswatcher.cpp | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/src/base/torrentfileswatcher.cpp b/src/base/torrentfileswatcher.cpp index 24f7c478a..9c455aa9b 100644 --- a/src/base/torrentfileswatcher.cpp +++ b/src/base/torrentfileswatcher.cpp @@ -207,6 +207,7 @@ signals: private: void onTimeout(); + void scheduleWatchedFolderProcessing(const QString &path); void processWatchedFolder(const QString &path); void processFolder(const QString &path, const QString &watchedFolderPath, const TorrentFilesWatcher::WatchedFolderOptions &options); void processFailedTorrents(); @@ -436,7 +437,7 @@ TorrentFilesWatcher::Worker::Worker() , m_watchTimer {new QTimer(this)} , m_retryTorrentTimer {new QTimer(this)} { - connect(m_watcher, &QFileSystemWatcher::directoryChanged, this, &Worker::processWatchedFolder); + connect(m_watcher, &QFileSystemWatcher::directoryChanged, this, &Worker::scheduleWatchedFolderProcessing); connect(m_watchTimer, &QTimer::timeout, this, &Worker::onTimeout); connect(m_retryTorrentTimer, &QTimer::timeout, this, &Worker::processFailedTorrents); @@ -470,6 +471,14 @@ void TorrentFilesWatcher::Worker::removeWatchedFolder(const QString &path) m_retryTorrentTimer->stop(); } +void TorrentFilesWatcher::Worker::scheduleWatchedFolderProcessing(const QString &path) +{ + QTimer::singleShot(2000, this, [this, path]() + { + processWatchedFolder(path); + }); +} + void TorrentFilesWatcher::Worker::processWatchedFolder(const QString &path) { const TorrentFilesWatcher::WatchedFolderOptions options = m_watchedFolders.value(path); @@ -612,7 +621,7 @@ void TorrentFilesWatcher::Worker::addWatchedFolder(const QString &path, const To else { m_watcher->addPath(path); - QTimer::singleShot(2000, this, [this, path]() { processWatchedFolder(path); }); + scheduleWatchedFolderProcessing(path); } m_watchedFolders[path] = options; @@ -644,7 +653,7 @@ void TorrentFilesWatcher::Worker::updateWatchedFolder(const QString &path, const m_watchTimer->stop(); m_watcher->addPath(path); - QTimer::singleShot(2000, this, [this, path]() { processWatchedFolder(path); }); + scheduleWatchedFolderProcessing(path); } }