Release v4.2: fix connect-freeze (#10) and new-profile minimize (#12); smoother WASAPI timing

- Connect no longer freezes: PushDiscoveryUnicastHints resolved remembered
  hostnames with synchronous Dns.GetHostAddresses on the UI thread, blocking the
  whole window for the DNS timeout on an unresolvable name. A screen-reader user
  experiences that as the entire machine locking up. Resolution now runs off the
  UI thread. Same class of bug as the v3.0.1 UPnP-on-the-UI-thread hang. (#10)

- New profile / profile switch no longer hides the window: OnShown ORed the
  global StartMinimised into every instance, so creating a new profile while
  Start minimised was on dropped the window to the tray and looked like a crash.
  StartMinimised now applies only to a genuine cold launch; relaunches honour the
  explicit per-instance flag. (#12)

- Smoother WASAPI audio: the receive producer loop and sender mix loop pace
  themselves with WaitHandle.WaitOne, bound by the system timer (~15.6ms default).
  Without a fine timer the 10ms feed slips to ~16-31ms and delivers audio in
  chunky bursts (the desktop-render chunkiness behind Andre's dropouts/lag). New
  SystemTimerResolution holds a 1ms timer whenever a stream is live, independent
  of the opt-in Priority mode.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
Ednunp
2026-06-15 09:21:04 +01:00
co-authored by Claude Opus 4.8
parent 5abbeefe29
commit 034a7de632
7 changed files with 165 additions and 47 deletions
+13 -9
View File
@@ -1,29 +1,33 @@
# RemSound v4.1
# RemSound v4.2
A small follow-up to v4.0, with two fixes for screen-reader users.
Three fixes — a freeze when connecting, a new-profile glitch that looked like a crash, and smoother audio on WASAPI.
## Starting in the tray is silent
## Connecting no longer risks a freeze
When RemSound starts straight into the notification area (**Start minimised**, or `--minimized`), it no longer plays the "minimise" cue. Booting into the tray isn't you choosing to hide the window, so it shouldn't sound the cue — only a genuine minimise does.
If you had a peer saved by **name** (rather than a numeric address) and that name couldn't be looked up quickly — an offline peer, or a VPN name while the VPN was down — RemSound used to stall for a few seconds while it waited on the lookup. Because a screen reader waits on the program it's reading, that stall could feel like the whole computer locking up: speech going quiet, keys not responding, then everything coming back a moment later. The name lookup now runs in the background, so connecting — and reconnecting — stays responsive no matter what's in your saved-peers list.
## Bringing the window back announces itself
## Creating a new profile no longer hides the window
When you restore RemSound from the tray, it now lands focus on a control on whichever tab you'd left showing, so your screen reader announces the window instead of surfacing silently.
Creating a new profile (**Ctrl+N**), or switching profiles, while you had **Start minimised** turned on would drop the freshly-loaded window straight to the tray — so the new profile looked like it had crashed. "Start minimised" is meant for when RemSound first launches, not for something you did on purpose. Now a new profile (or a switch) comes up the normal way, or stays in the tray only if that's where you already were.
## Smoother audio on WASAPI
RemSound now keeps Windows' timing fine while it's streaming. Without that, Windows can be lazy about waking the audio engine on time, so audio gets delivered in lumpy bursts instead of even steps — which on some machines showed up as breakup, or as latency that crept up over a long session. This fine timing was previously only switched on by **Priority mode**; now the audio path asks for it on its own whenever you're streaming, so you get the smoother delivery without needing that toggle on. (Priority mode's other, heavier options are unchanged and still optional.)
## Compatibility
**v4.1 talks to v3.3 through v4.0 with no trouble** — the over-the-network format is unchanged, so you don't have to update both ends at once. (Everyone still needs **v3.3 or newer**, where end-to-end encryption came in.)
**v4.2 talks to v3.3 through v4.1 with no trouble** — the over-the-network format is unchanged, so you don't have to update both ends at once. (Everyone still needs **v3.3 or newer**, where end-to-end encryption came in.)
## Install
1. Download `RemSound-v4.1.zip` from this release.
1. Download `RemSound-v4.2.zip` from this release.
2. Close RemSound.
3. Extract the zip **over your existing RemSound folder**, overwriting program files when prompted. The zip is program files only — it won't touch your settings, profiles, logs or recordings.
4. Run `RemSound.exe`.
## Upgrading
**From v3.6 or newer:** Help → Check for updates installs v4.1 with the in-app updater — and if it can't finish, it puts your old version back exactly as it was.
**From v3.6 or newer:** Help → Check for updates installs v4.2 with the in-app updater — and if it can't finish, it puts your old version back exactly as it was.
**From v1.9v3.5:** Check for updates works, but uses your current version's older updater for this one hop. If auto-update has been failing on your machine, install by hand using the steps above.