Skip to content

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.cpp CemuleDlg::ShowTransferRate(...) formats the title from theApp.uploadqueue->GetDatarate().
  • srchybrid/UploadQueue.cpp CUploadQueue::UpdateDatarates() computes the aggregate queue rate from upload throttler bytes and average_ur_hist.
  • srchybrid/UploadListCtrl.cpp formats the Uploading list speed column from client->GetUploadDatarate().
  • srchybrid/UploadClient.cpp computes per-client upload datarate from m_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.