mirror of
https://github.com/qbittorrent/qBittorrent
synced 2025-08-19 04:49:47 -07:00
Merge pull request #17363 from Chocobo1/pause
Add workaround for payload upload/download rate
This commit is contained in:
commit
ce0e92e12a
2 changed files with 70 additions and 35 deletions
|
@ -838,47 +838,80 @@ bool TorrentImpl::isChecking() const
|
||||||
|
|
||||||
bool TorrentImpl::isDownloading() const
|
bool TorrentImpl::isDownloading() const
|
||||||
{
|
{
|
||||||
return m_state == TorrentState::Downloading
|
switch (m_state)
|
||||||
|| m_state == TorrentState::DownloadingMetadata
|
{
|
||||||
|| m_state == TorrentState::ForcedDownloadingMetadata
|
case TorrentState::Downloading:
|
||||||
|| m_state == TorrentState::StalledDownloading
|
case TorrentState::DownloadingMetadata:
|
||||||
|| m_state == TorrentState::CheckingDownloading
|
case TorrentState::ForcedDownloadingMetadata:
|
||||||
|| m_state == TorrentState::PausedDownloading
|
case TorrentState::StalledDownloading:
|
||||||
|| m_state == TorrentState::QueuedDownloading
|
case TorrentState::CheckingDownloading:
|
||||||
|| m_state == TorrentState::ForcedDownloading;
|
case TorrentState::PausedDownloading:
|
||||||
|
case TorrentState::QueuedDownloading:
|
||||||
|
case TorrentState::ForcedDownloading:
|
||||||
|
return true;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
};
|
||||||
|
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool TorrentImpl::isUploading() const
|
bool TorrentImpl::isUploading() const
|
||||||
{
|
{
|
||||||
return m_state == TorrentState::Uploading
|
switch (m_state)
|
||||||
|| m_state == TorrentState::StalledUploading
|
{
|
||||||
|| m_state == TorrentState::CheckingUploading
|
case TorrentState::Uploading:
|
||||||
|| m_state == TorrentState::QueuedUploading
|
case TorrentState::StalledUploading:
|
||||||
|| m_state == TorrentState::ForcedUploading;
|
case TorrentState::CheckingUploading:
|
||||||
|
case TorrentState::QueuedUploading:
|
||||||
|
case TorrentState::ForcedUploading:
|
||||||
|
return true;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
};
|
||||||
|
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool TorrentImpl::isCompleted() const
|
bool TorrentImpl::isCompleted() const
|
||||||
{
|
{
|
||||||
return m_state == TorrentState::Uploading
|
switch (m_state)
|
||||||
|| m_state == TorrentState::StalledUploading
|
{
|
||||||
|| m_state == TorrentState::CheckingUploading
|
case TorrentState::Uploading:
|
||||||
|| m_state == TorrentState::PausedUploading
|
case TorrentState::StalledUploading:
|
||||||
|| m_state == TorrentState::QueuedUploading
|
case TorrentState::CheckingUploading:
|
||||||
|| m_state == TorrentState::ForcedUploading;
|
case TorrentState::PausedUploading:
|
||||||
|
case TorrentState::QueuedUploading:
|
||||||
|
case TorrentState::ForcedUploading:
|
||||||
|
return true;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
};
|
||||||
|
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool TorrentImpl::isActive() const
|
bool TorrentImpl::isActive() const
|
||||||
{
|
{
|
||||||
if (m_state == TorrentState::StalledDownloading)
|
switch (m_state)
|
||||||
|
{
|
||||||
|
case TorrentState::StalledDownloading:
|
||||||
return (uploadPayloadRate() > 0);
|
return (uploadPayloadRate() > 0);
|
||||||
|
|
||||||
return m_state == TorrentState::DownloadingMetadata
|
case TorrentState::DownloadingMetadata:
|
||||||
|| m_state == TorrentState::ForcedDownloadingMetadata
|
case TorrentState::ForcedDownloadingMetadata:
|
||||||
|| m_state == TorrentState::Downloading
|
case TorrentState::Downloading:
|
||||||
|| m_state == TorrentState::ForcedDownloading
|
case TorrentState::ForcedDownloading:
|
||||||
|| m_state == TorrentState::Uploading
|
case TorrentState::Uploading:
|
||||||
|| m_state == TorrentState::ForcedUploading
|
case TorrentState::ForcedUploading:
|
||||||
|| m_state == TorrentState::Moving;
|
case TorrentState::Moving:
|
||||||
|
return true;
|
||||||
|
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
};
|
||||||
|
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool TorrentImpl::isInactive() const
|
bool TorrentImpl::isInactive() const
|
||||||
|
@ -888,8 +921,8 @@ bool TorrentImpl::isInactive() const
|
||||||
|
|
||||||
bool TorrentImpl::isErrored() const
|
bool TorrentImpl::isErrored() const
|
||||||
{
|
{
|
||||||
return m_state == TorrentState::MissingFiles
|
return ((m_state == TorrentState::MissingFiles)
|
||||||
|| m_state == TorrentState::Error;
|
|| (m_state == TorrentState::Error));
|
||||||
}
|
}
|
||||||
|
|
||||||
bool TorrentImpl::isSeed() const
|
bool TorrentImpl::isSeed() const
|
||||||
|
@ -1038,7 +1071,7 @@ qlonglong TorrentImpl::eta() const
|
||||||
{
|
{
|
||||||
if (isPaused()) return MAX_ETA;
|
if (isPaused()) return MAX_ETA;
|
||||||
|
|
||||||
const SpeedSampleAvg speedAverage = m_speedMonitor.average();
|
const SpeedSampleAvg speedAverage = m_payloadRateMonitor.average();
|
||||||
|
|
||||||
if (isSeed())
|
if (isSeed())
|
||||||
{
|
{
|
||||||
|
@ -1296,12 +1329,14 @@ qreal TorrentImpl::realRatio() const
|
||||||
|
|
||||||
int TorrentImpl::uploadPayloadRate() const
|
int TorrentImpl::uploadPayloadRate() const
|
||||||
{
|
{
|
||||||
return m_nativeStatus.upload_payload_rate;
|
// workaround: suppress the speed for paused state
|
||||||
|
return isPaused() ? 0 : m_nativeStatus.upload_payload_rate;
|
||||||
}
|
}
|
||||||
|
|
||||||
int TorrentImpl::downloadPayloadRate() const
|
int TorrentImpl::downloadPayloadRate() const
|
||||||
{
|
{
|
||||||
return m_nativeStatus.download_payload_rate;
|
// workaround: suppress the speed for paused state
|
||||||
|
return isPaused() ? 0 : m_nativeStatus.download_payload_rate;
|
||||||
}
|
}
|
||||||
|
|
||||||
qlonglong TorrentImpl::totalPayloadUpload() const
|
qlonglong TorrentImpl::totalPayloadUpload() const
|
||||||
|
@ -1611,7 +1646,7 @@ void TorrentImpl::pause()
|
||||||
setAutoManaged(false);
|
setAutoManaged(false);
|
||||||
m_nativeHandle.pause();
|
m_nativeHandle.pause();
|
||||||
|
|
||||||
m_speedMonitor.reset();
|
m_payloadRateMonitor.reset();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2114,7 +2149,7 @@ void TorrentImpl::updateStatus(const lt::torrent_status &nativeStatus)
|
||||||
m_nativeStatus = nativeStatus;
|
m_nativeStatus = nativeStatus;
|
||||||
updateState();
|
updateState();
|
||||||
|
|
||||||
m_speedMonitor.addSample({nativeStatus.download_payload_rate
|
m_payloadRateMonitor.addSample({nativeStatus.download_payload_rate
|
||||||
, nativeStatus.upload_payload_rate});
|
, nativeStatus.upload_payload_rate});
|
||||||
|
|
||||||
if (hasMetadata())
|
if (hasMetadata())
|
||||||
|
|
|
@ -298,7 +298,7 @@ namespace BitTorrent
|
||||||
QHash<lt::file_index_t, int> m_indexMap;
|
QHash<lt::file_index_t, int> m_indexMap;
|
||||||
QVector<DownloadPriority> m_filePriorities;
|
QVector<DownloadPriority> m_filePriorities;
|
||||||
QBitArray m_completedFiles;
|
QBitArray m_completedFiles;
|
||||||
SpeedMonitor m_speedMonitor;
|
SpeedMonitor m_payloadRateMonitor;
|
||||||
|
|
||||||
InfoHash m_infoHash;
|
InfoHash m_infoHash;
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue