Workflow status is tracked in GitHub: https://github.com/emulebb/emulebb/issues/140. This local document is retained as an engineering spec/evidence record.
BUG-146 - Upload title rate does not match visible uploading row totals¶
Summary¶
The main window title can show an upload speed that does not match the apparent
sum of the visible Uploading list Speed column. In the observed case, the
title showed about U:474.9 KiB/s while the only visibly active uploading row
showed about 510.62 KB/s.
The two values are currently sourced from different measurements:
- the title uses
theApp.uploadqueue->GetDatarate(), an aggregate queue rate computed from bytes sent by the upload throttler over queue history - the Uploading list row uses
client->GetUploadDatarate(), a per-client slot rate averaged over the client's upload history
Why This Matters¶
Both values are presented to users as "upload speed", so users reasonably expect the title rate to match the visible upload-row total. The current mismatch makes the UI look internally inconsistent, especially when only one active upload row has a non-zero speed.
Representative Sites¶
srchybrid/EmuleDlg.cppCemuleDlg::ShowTransferRate(...)formats the title fromtheApp.uploadqueue->GetDatarate().srchybrid/UploadQueue.cppCUploadQueue::UpdateDatarates()computes the aggregate queue rate from upload throttler bytes andaverage_ur_hist.srchybrid/UploadListCtrl.cppformats the Uploading list speed column fromclient->GetUploadDatarate().srchybrid/UploadClient.cppcomputes per-client upload datarate fromm_AverageUDR_hist.
Candidate Fix Direction¶
- Decide whether the title should show the aggregate wire/app send rate or the sum of active upload-row client rates.
- If the aggregate rate remains authoritative, make the UI wording or tooltip distinguish aggregate upload from per-client slot speed.
- If visual consistency is preferred, add a focused helper that sums current active upload client rates and use it only for display surfaces that are meant to match the Uploading list.
- Keep statistics, bandwidth throttling, REST aggregate telemetry, and upload admission policy tied to the existing aggregate queue rate unless a separate behavior change explicitly requires otherwise.
Acceptance Criteria¶
- [ ] The main title upload value and Uploading list speed column have clear, consistent semantics.
- [ ] When only one active upload row has non-zero speed, the title no longer appears to contradict that row without explanation.
- [ ] Any display-only fix does not change bandwidth throttling, upload queue policy, statistics recording, or REST aggregate upload telemetry.
- [ ] Targeted tests or seams cover aggregate queue rate versus per-client row rate formatting.