Delay processing of watched folders (#15282)

Fixes regression of #14882.
Closes #15272.
This commit is contained in:
Vladimir Golovnev 2021-08-07 12:33:29 +03:00 committed by GitHub
parent 4ac25a50ed
commit bed643e627
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -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);
}
}