diff --git a/src/base/bittorrent/session.cpp b/src/base/bittorrent/session.cpp index 3c3716a78..0885819a0 100644 --- a/src/base/bittorrent/session.cpp +++ b/src/base/bittorrent/session.cpp @@ -1858,7 +1858,7 @@ void Session::generateResumeData(bool final) if (torrent->isChecking() || torrent->hasError()) continue; if (!final && !torrent->needSaveResumeData()) continue; - saveTorrentResumeData(torrent); + saveTorrentResumeData(torrent, final); qDebug("Saving fastresume data for %s", qPrintable(torrent->name())); } } @@ -2782,9 +2782,9 @@ void Session::handleTorrentRatioLimitChanged(TorrentHandle *const torrent) updateRatioTimer(); } -void Session::saveTorrentResumeData(TorrentHandle *const torrent) +void Session::saveTorrentResumeData(TorrentHandle *const torrent, bool finalSave) { - torrent->saveResumeData(); + torrent->saveResumeData(finalSave); ++m_numResumeData; } diff --git a/src/base/bittorrent/session.h b/src/base/bittorrent/session.h index 0ec3dc038..32ccbec11 100644 --- a/src/base/bittorrent/session.h +++ b/src/base/bittorrent/session.h @@ -467,7 +467,7 @@ namespace BitTorrent void updateRatioTimer(); void exportTorrentFile(TorrentHandle *const torrent, TorrentExportFolder folder = TorrentExportFolder::Regular); - void saveTorrentResumeData(TorrentHandle *const torrent); + void saveTorrentResumeData(TorrentHandle *const torrent, bool finalSave = false); void handleAlert(libtorrent::alert *a); void dispatchTorrentAlert(libtorrent::alert *a); diff --git a/src/base/bittorrent/torrenthandle.cpp b/src/base/bittorrent/torrenthandle.cpp index b03bf90af..6e6dfafbd 100644 --- a/src/base/bittorrent/torrenthandle.cpp +++ b/src/base/bittorrent/torrenthandle.cpp @@ -485,8 +485,11 @@ bool TorrentHandle::needSaveResumeData() const SAFE_RETURN(bool, need_save_resume_data, false); } -void TorrentHandle::saveResumeData() +void TorrentHandle::saveResumeData(bool updateStatus) { + if (updateStatus) // to update queue_position, see discussion in PR #6154 + this->updateStatus(); + SAFE_CALL(save_resume_data); m_needSaveResumeData = false; } diff --git a/src/base/bittorrent/torrenthandle.h b/src/base/bittorrent/torrenthandle.h index aad66f001..a0837d09f 100644 --- a/src/base/bittorrent/torrenthandle.h +++ b/src/base/bittorrent/torrenthandle.h @@ -351,7 +351,7 @@ namespace BitTorrent void handleTempPathChanged(); void handleCategorySavePathChanged(); void handleAppendExtensionToggled(); - void saveResumeData(); + void saveResumeData(bool updateStatus = false); private: typedef boost::function EventTrigger;