Merge pull request #9481 from mj-p/master

Don't recheck just checked torrent. Closes #8743, #9370
This commit is contained in:
Vladimir Golovnev 2018-10-13 09:34:27 +03:00 committed by GitHub
commit ff72be9c2d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 17 additions and 6 deletions

View File

@ -807,7 +807,10 @@ TorrentState TorrentHandle::state() const
void TorrentHandle::updateState()
{
if (isMoveInProgress()) {
if (m_nativeStatus.state == libt::torrent_status::checking_resume_data) {
m_state = TorrentState::CheckingResumeData;
}
else if (isMoveInProgress()) {
m_state = TorrentState::Moving;
}
else if (isPaused()) {
@ -839,9 +842,6 @@ void TorrentHandle::updateState()
m_state = TorrentState::QueuedForChecking;
break;
#endif
case libt::torrent_status::checking_resume_data:
m_state = TorrentState::CheckingResumeData;
break;
case libt::torrent_status::checking_files:
m_state = m_hasSeedStatus ? TorrentState::CheckingUploading : TorrentState::CheckingDownloading;
break;
@ -1270,6 +1270,9 @@ void TorrentHandle::forceRecheck()
{
if (!hasMetadata()) return;
m_nativeHandle.force_recheck();
m_unchecked = false;
if (isPaused()) {
m_pauseAfterRecheck = true;
resume_impl(true, true);
@ -1587,13 +1590,13 @@ void TorrentHandle::handleTorrentFinishedAlert(const libtorrent::torrent_finishe
manageIncompleteFiles();
const bool recheckTorrentsOnCompletion = Preferences::instance()->recheckTorrentsOnCompletion();
if (isMoveInProgress() || m_renameCount > 0) {
if (isMoveInProgress() || (m_renameCount > 0)) {
if (recheckTorrentsOnCompletion)
m_moveFinishedTriggers.append(boost::bind(&TorrentHandle::forceRecheck, this));
m_moveFinishedTriggers.append(boost::bind(&Session::handleTorrentFinished, m_session, this));
}
else {
if (recheckTorrentsOnCompletion)
if (recheckTorrentsOnCompletion && m_unchecked)
forceRecheck();
m_session->handleTorrentFinished(this);
}
@ -1933,6 +1936,13 @@ void TorrentHandle::updateStatus(const libtorrent::torrent_status &nativeStatus)
updateState();
updateTorrentInfo();
// NOTE: Don't change the order of these conditionals!
// Otherwise it will not work properly since torrent can be CheckingDownloading.
if (isChecking())
m_unchecked = false;
else if (isDownloading())
m_unchecked = true;
}
void TorrentHandle::setRatioLimit(qreal limit)

View File

@ -466,6 +466,7 @@ namespace BitTorrent
QHash<QString, TrackerInfo> m_trackerInfos;
bool m_started = false;
bool m_unchecked = false;
};
}