Review #1885: Avalonia parity, and cap concurrency by processor count

Chardonnay had parallel downloads with no way to configure them, since
the queue logic lives in shared UI code but each UI supplies its own
controls. Adds the Auto-scroll toggle and the 'At once' spinner to
Chardonnay's queue panel, bound to the same view model properties the
WinForms panel uses.

Also uses Environment.ProcessorCount as the spinner's ceiling rather
than its default: min(ProcessorCount, 10). Downloading is bound by
Audible's license throttling rather than local CPU, so core count says
nothing about how many concurrent downloads will succeed - it only
bounds how many decrypts can usefully run at once. The default stays 3.

Spinner bounds are bound rather than hardcoded, so the two UIs cannot
drift apart.
This commit is contained in:
Allamagoosa committed 2026-08-16 14:08:49 -07:00
1 parent 2db63a8edd
commit 986dda5eaa
4 files changed
+46 -12

No files matched your search

@@ -40,8 +40,8 @@ internal partial class ProcessQueueControl : UserControl
ViewModel.ProcessStart += Book_ProcessStart;
autoScrollChk.CheckedChanged += (s, e) => ViewModel.AutoScrollQueue = autoScrollChk.Checked;
concurrencyNum.Minimum = ProcessQueueViewModel.MinConcurrentDownloads;
concurrencyNum.Maximum = ProcessQueueViewModel.MaxAllowedConcurrentDownloads;
concurrencyNum.Minimum = ViewModel.MinConcurrentDownloads;
concurrencyNum.Maximum = ViewModel.MaxAllowedConcurrentDownloads;
concurrencyNum.ValueChanged += (s, e) => ViewModel.MaxConcurrentDownloads = (int)concurrencyNum.Value;
ProcessQueue_PropertyChanged(this, new PropertyChangedEventArgs(null));
}