Fix CW sidetone missing on Windows by calling startSidetoneStream() (#2100)#2105
Fix CW sidetone missing on Windows by calling startSidetoneStream() (#2100)#2105
Conversation
…2100) The Windows branch in startRxStream() returns early before reaching the common code path that calls startSidetoneStream(). Add the call to the Windows branch so the dedicated sidetone sink is created on all platforms. Co-Authored-By: Claude Opus 4.6 <[email protected]>
There was a problem hiding this comment.
Review of PR #2105 — Fix CW sidetone missing on Windows by calling startSidetoneStream()
The fix itself is correct. The non-Windows path (line 614) already calls startSidetoneStream() alongside the RX stream with a clear comment explaining why. The Windows #ifdef Q_OS_WIN branch was missing it, so the sidetone sink was never opened on Windows.
One concern: duplicate of #2103
PR #2103 (aetherclaude/issue-2097) makes the same one-line startSidetoneStream() addition in AudioEngine.cpp and adds CWX interlock state tracking in RadioModel to prevent the audio gate from being forced off during CWX sends. That PR is the more complete fix for the same underlying problem.
This PR and #2103 will conflict on merge. I'd recommend closing this one in favor of #2103, which includes a comment explaining the call and fixes the related CWX gate issue.
If this PR is preferred for its minimal scope, it would benefit from:
- Adding the explanatory comment that the non-Windows path already has (lines 611-613), so future readers know why
startSidetoneStream()is called here.
No bugs, no convention issues, no scope creep — just the duplication concern. Thanks for the contribution.
#2181) When CWX is sending (the user pressed Send in the CWX window or fired a macro), the radio enters TRANSMITTING via CW keying. The interlock handler at onStatusReceived gates m_txAudioGate based on whether we believe we're the source of TX — but for CWX it had no signal that the local CWX queue is in flight, so the gate was forced off and the local sidetone path silenced. Adds an m_cwxActive flag, set in the cwxModel commandReady lambda when "cwx send" / "cwx macro send" goes out and cleared on "cwx clear" or when the radio leaves the transmitting state. The interlock guard now includes !m_cwxActive in the "should we force gate off" check. Carved out from PR #2103 (which also added a now-redundant startSidetoneStream() call in AudioEngine — already landed via PR #2105 / commit c906165). This PR contains only the substantive CWX-tracking changes. Fixes #2097. Co-authored-by: Claude Opus 4.7 (1M context) <[email protected]>
Summary
Fixes #2100
What was changed
Fix CW sidetone missing on Windows by calling startSidetoneStream() (#2100)
Files modified
src/core/AudioEngine.cppGenerated by AetherClaude (automated agent for AetherSDR)