Browse Source

Fetch torrent status when generating final fastresume data

This is done to get correct queue position, which has to be written into
the fastresume file. See discussion in #6154.
adaptive-webui-19844
Eugene Shalygin 8 years ago
parent
commit
b6e64c13d8
  1. 6
      src/base/bittorrent/session.cpp
  2. 2
      src/base/bittorrent/session.h
  3. 5
      src/base/bittorrent/torrenthandle.cpp
  4. 2
      src/base/bittorrent/torrenthandle.h

6
src/base/bittorrent/session.cpp

@ -1858,7 +1858,7 @@ void Session::generateResumeData(bool final) @@ -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) @@ -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;
}

2
src/base/bittorrent/session.h

@ -467,7 +467,7 @@ namespace BitTorrent @@ -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);

5
src/base/bittorrent/torrenthandle.cpp

@ -485,8 +485,11 @@ bool TorrentHandle::needSaveResumeData() const @@ -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;
}

2
src/base/bittorrent/torrenthandle.h

@ -351,7 +351,7 @@ namespace BitTorrent @@ -351,7 +351,7 @@ namespace BitTorrent
void handleTempPathChanged();
void handleCategorySavePathChanged();
void handleAppendExtensionToggled();
void saveResumeData();
void saveResumeData(bool updateStatus = false);
private:
typedef boost::function<void ()> EventTrigger;

Loading…
Cancel
Save