Review sweep: fix real bugs found across the service + per-app + settings changes
Parallel code review of this session's changes surfaced several real bugs; fixed the substantive ones (judgment/cleanup calls held for Ed): - HIGH Clearing "remembered peers" was resurrected on the next launch: the per-profile -> global migration re-ran every startup and re-unioned the profile file's stale copy. Added a one-time AppConfig.RememberedPeersMigrated marker so migration runs once and a cleared list stays cleared. Self-test pins the clear-then-reload scenario. - MED PushModeWasapiBackend.Start rethrew on a device-open failure; nothing up the stack wraps it, so device churn (a push-eligible single WASAPI source unplugged mid-open) could crash the app. Now logs and stays stopped like MixingEngine/ASIO; the device watcher / self-heal re-open when a device returns. - MED Service self-heal: (a) the re-open "no send sources" path left PerformanceMode ON and presence up while streaming nothing - now releases cleanly; (b) the 3-attempt ladder never refunded, so 3 hiccups over a days-long stint meant permanent silence - now refunds when real audio is heard, and resets on a device hot-plug. - MED ApplyProfile resolved peers (DNS) and enumerated devices INSIDE the gate lock - a boot-time DNS hang as SYSTEM stalled Suspend()/yield/self-heal. Moved outside the lock. - LOW AudioSessionStartWatcher leaked the AudioSessionManager on every Rehook (the WASAPI handle-leak fingerprint) - now disposed. New lifecycle self-test. - LOW stale docstrings (send-all master toggle; ServiceUpdate in-place scheme; Profile .SendAllApplications "neither reads nor writes"). Gate: 42/42 (added peers-migration + session-watcher-lifecycle tests). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 4.8
parent
4b2baa58b5
commit
984bcd042e
@@ -3870,10 +3870,10 @@ public sealed class MainForm : Form
|
||||
sessionStartWatcher = null;
|
||||
}
|
||||
|
||||
/// <summary>Restores the WASAPI send mode, the "Send all applications" master toggle and the ticked
|
||||
/// app names from a loaded profile. Remembered apps that aren't running right now are seeded into the
|
||||
/// list (ticked, marked "not running") so they resume capture the moment they reappear. On Windows
|
||||
/// too old for process loopback the mode is forced back to devices.</summary>
|
||||
/// <summary>Restores the WASAPI send mode and the ticked app names from a loaded profile (the main
|
||||
/// window's "Send all applications" master toggle was removed 2026-07-16). Remembered apps that aren't
|
||||
/// running right now are seeded into the list (ticked, marked "not running") so they resume capture the
|
||||
/// moment they reappear. On Windows too old for process loopback the mode is forced back to devices.</summary>
|
||||
private void RestoreSendModeFromProfile(Profile p)
|
||||
{
|
||||
suppressSendAppEvents = true;
|
||||
|
||||
Reference in New Issue
Block a user