summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJeremy Rimpo <jeremy.rimpo@servermonkey.com>2022-05-04 10:56:33 -0500
committerGitHub <noreply@github.com>2022-05-04 10:56:33 -0500
commit21bca0ca8d53685cacefe8406e826f2d65973131 (patch)
tree04020ed5152569a9ff2d85f54648045c1ea07293 /src
parent318b8a567191d83a620175c5c8b6e2f503cfc8a2 (diff)
parent25e2e59888b586566f5025f4e02b609804e7bc24 (diff)
Merge pull request #1698 from ModOrganizer2/download_speed_fix
Extend download speed datatypes to qint64/long long to avoid overflow
Diffstat (limited to 'src')
-rw-r--r--src/downloadmanager.cpp8
-rw-r--r--src/downloadmanager.h8
2 files changed, 8 insertions, 8 deletions
diff --git a/src/downloadmanager.cpp b/src/downloadmanager.cpp
index b3a34d7b..5bf91c01 100644
--- a/src/downloadmanager.cpp
+++ b/src/downloadmanager.cpp
@@ -949,8 +949,8 @@ void DownloadManager::resumeDownloadInt(int index)
}
info->m_DownloadLast = 0;
info->m_DownloadTimeLast = 0;
- info->m_DownloadAcc = accumulator_set<int, stats<tag::rolling_mean>>(tag::rolling_window::window_size = 200);
- info->m_DownloadTimeAcc = accumulator_set<int, stats<tag::rolling_mean>>(tag::rolling_window::window_size = 200);
+ info->m_DownloadAcc = accumulator_set<qint64, stats<tag::rolling_mean>>(tag::rolling_window::window_size = 200);
+ info->m_DownloadTimeAcc = accumulator_set<qint64, stats<tag::rolling_mean>>(tag::rolling_window::window_size = 200);
log::debug("resume at {} bytes", info->m_ResumePos);
startDownload(m_NexusInterface->getAccessManager()->get(request), info, true);
}
@@ -1571,7 +1571,7 @@ void DownloadManager::downloadProgress(qint64 bytesReceived, qint64 bytesTotal)
int oldProgress = info->m_Progress.first;
info->m_Progress.first = ((info->m_ResumePos + bytesReceived) * 100) / (info->m_ResumePos + bytesTotal);
- int elapsed = info->m_StartTime.elapsed();
+ qint64 elapsed = info->m_StartTime.elapsed();
info->m_DownloadAcc(bytesReceived - info->m_DownloadLast);
info->m_DownloadLast = bytesReceived;
info->m_DownloadTimeAcc(elapsed - info->m_DownloadTimeLast);
@@ -1580,7 +1580,7 @@ void DownloadManager::downloadProgress(qint64 bytesReceived, qint64 bytesTotal)
// calculate the download speed
const double speed = rolling_mean(info->m_DownloadAcc) / (rolling_mean(info->m_DownloadTimeAcc) / 1000.0);;
- const int remaining = (bytesTotal - bytesReceived) / speed * 1000;
+ const qint64 remaining = (bytesTotal - bytesReceived) / speed * 1000;
info->m_Progress.second = tr("%1% - %2 - ~%3")
.arg(info->m_Progress.first)
diff --git a/src/downloadmanager.h b/src/downloadmanager.h
index 58027180..2bb3f6e8 100644
--- a/src/downloadmanager.h
+++ b/src/downloadmanager.h
@@ -79,10 +79,10 @@ private:
struct DownloadInfo {
~DownloadInfo() { delete m_FileInfo; }
- accumulator_set<int, stats<tag::rolling_mean>> m_DownloadAcc;
- accumulator_set<int, stats<tag::rolling_mean>> m_DownloadTimeAcc;
- int m_DownloadLast;
- int m_DownloadTimeLast;
+ accumulator_set<qint64, stats<tag::rolling_mean>> m_DownloadAcc;
+ accumulator_set<qint64, stats<tag::rolling_mean>> m_DownloadTimeAcc;
+ qint64 m_DownloadLast;
+ qint64 m_DownloadTimeLast;
unsigned int m_DownloadID;
QString m_FileName;
QFile m_Output;