|
|
@ -1387,6 +1387,7 @@ void TorrentImpl::resume(const TorrentOperatingMode mode) |
|
|
|
{ |
|
|
|
{ |
|
|
|
m_hasMissingFiles = false; |
|
|
|
m_hasMissingFiles = false; |
|
|
|
m_isStopped = false; |
|
|
|
m_isStopped = false; |
|
|
|
|
|
|
|
m_ltAddTorrentParams.ti = std::const_pointer_cast<lt::torrent_info>(m_nativeHandle.torrent_file()); |
|
|
|
reload(); |
|
|
|
reload(); |
|
|
|
updateStatus(); |
|
|
|
updateStatus(); |
|
|
|
return; |
|
|
|
return; |
|
|
@ -1446,8 +1447,21 @@ void TorrentImpl::handleMoveStorageJobFinished(const bool hasOutstandingJob) |
|
|
|
|
|
|
|
|
|
|
|
saveResumeData(); |
|
|
|
saveResumeData(); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (!m_storageIsMoving) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
if (m_hasMissingFiles) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
// it can be moved to the proper location
|
|
|
|
|
|
|
|
m_hasMissingFiles = false; |
|
|
|
|
|
|
|
m_ltAddTorrentParams.save_path = m_nativeStatus.save_path; |
|
|
|
|
|
|
|
m_ltAddTorrentParams.ti = std::const_pointer_cast<lt::torrent_info>(m_nativeHandle.torrent_file()); |
|
|
|
|
|
|
|
reload(); |
|
|
|
|
|
|
|
updateStatus(); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
while ((m_renameCount == 0) && !m_moveFinishedTriggers.isEmpty()) |
|
|
|
while ((m_renameCount == 0) && !m_moveFinishedTriggers.isEmpty()) |
|
|
|
m_moveFinishedTriggers.takeFirst()(); |
|
|
|
m_moveFinishedTriggers.takeFirst()(); |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
void TorrentImpl::handleTrackerReplyAlert(const lt::tracker_reply_alert *p) |
|
|
|
void TorrentImpl::handleTrackerReplyAlert(const lt::tracker_reply_alert *p) |
|
|
@ -1565,7 +1579,19 @@ void TorrentImpl::handleTorrentResumedAlert(const lt::torrent_resumed_alert *p) |
|
|
|
|
|
|
|
|
|
|
|
void TorrentImpl::handleSaveResumeDataAlert(const lt::save_resume_data_alert *p) |
|
|
|
void TorrentImpl::handleSaveResumeDataAlert(const lt::save_resume_data_alert *p) |
|
|
|
{ |
|
|
|
{ |
|
|
|
if (!m_hasMissingFiles) |
|
|
|
if (m_hasMissingFiles) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
const auto havePieces = m_ltAddTorrentParams.have_pieces; |
|
|
|
|
|
|
|
const auto unfinishedPieces = m_ltAddTorrentParams.unfinished_pieces; |
|
|
|
|
|
|
|
const auto verifiedPieces = m_ltAddTorrentParams.verified_pieces; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// Update recent resume data but preserve existing progress
|
|
|
|
|
|
|
|
m_ltAddTorrentParams = p->params; |
|
|
|
|
|
|
|
m_ltAddTorrentParams.have_pieces = havePieces; |
|
|
|
|
|
|
|
m_ltAddTorrentParams.unfinished_pieces = unfinishedPieces; |
|
|
|
|
|
|
|
m_ltAddTorrentParams.verified_pieces = verifiedPieces; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
else |
|
|
|
{ |
|
|
|
{ |
|
|
|
// Update recent resume data
|
|
|
|
// Update recent resume data
|
|
|
|
m_ltAddTorrentParams = p->params; |
|
|
|
m_ltAddTorrentParams = p->params; |
|
|
|