Fix torrent state calculation

This commit is contained in:
Vladimir Golovnev (Glassez) 2020-10-26 13:23:10 +03:00
parent 9f0edde12b
commit 80ca7796ca
No known key found for this signature in database
GPG key ID: 52A2C7DEE2DFA6F7

View file

@ -743,7 +743,22 @@ void TorrentHandleImpl::updateState()
if (m_nativeStatus.state == lt::torrent_status::checking_resume_data) { if (m_nativeStatus.state == lt::torrent_status::checking_resume_data) {
m_state = TorrentState::CheckingResumeData; m_state = TorrentState::CheckingResumeData;
} }
else if (m_nativeStatus.state == lt::torrent_status::checking_files) { else if (isPaused()) {
if (isMoveInProgress()) {
m_state = TorrentState::Moving;
}
else if (hasMissingFiles()) {
m_state = TorrentState::MissingFiles;
}
else if (hasError()) {
m_state = TorrentState::Error;
}
else {
m_state = isSeed() ? TorrentState::PausedUploading : TorrentState::PausedDownloading;
}
}
else {
if (m_nativeStatus.state == lt::torrent_status::checking_files) {
m_state = m_hasSeedStatus ? TorrentState::CheckingUploading : TorrentState::CheckingDownloading; m_state = m_hasSeedStatus ? TorrentState::CheckingUploading : TorrentState::CheckingDownloading;
} }
else if (m_nativeStatus.state == lt::torrent_status::allocating) { else if (m_nativeStatus.state == lt::torrent_status::allocating) {
@ -752,14 +767,11 @@ void TorrentHandleImpl::updateState()
else if (isMoveInProgress()) { else if (isMoveInProgress()) {
m_state = TorrentState::Moving; m_state = TorrentState::Moving;
} }
else if (hasError()) {
m_state = TorrentState::Error;
}
else if (hasMissingFiles()) { else if (hasMissingFiles()) {
m_state = TorrentState::MissingFiles; m_state = TorrentState::MissingFiles;
} }
else if (isPaused()) { else if (hasError()) {
m_state = isSeed() ? TorrentState::PausedUploading : TorrentState::PausedDownloading; m_state = TorrentState::Error;
} }
else if (m_session->isQueueingSystemEnabled() && isQueued() && !isChecking()) { else if (m_session->isQueueingSystemEnabled() && isQueued() && !isChecking()) {
m_state = isSeed() ? TorrentState::QueuedUploading : TorrentState::QueuedDownloading; m_state = isSeed() ? TorrentState::QueuedUploading : TorrentState::QueuedDownloading;
@ -787,6 +799,7 @@ void TorrentHandleImpl::updateState()
m_state = TorrentState::Unknown; m_state = TorrentState::Unknown;
} }
} }
}
} }
bool TorrentHandleImpl::hasMetadata() const bool TorrentHandleImpl::hasMetadata() const