Skip to content

Merge upstream thestk/rtaudio master - #5

Merged
tap merged 11 commits into
masterfrom
claude/form-upstream-relationships-fnmgd2
Aug 27, 2026
Merged

Merge upstream thestk/rtaudio master#5
tap merged 11 commits into
masterfrom
claude/form-upstream-relationships-fnmgd2

Conversation

@tap

@tap tap commented Aug 27, 2026

Copy link
Copy Markdown
Owner

Summary

Syncs the fork with thestk/rtaudio master — we were 9 commits behind. Upstream changes brought in:

Conflict resolution

One conflict, in RtApiPulse::probeDeviceOpen: upstream's -Wshadow fix renamed a shadowing local pahpah2 while keeping the old handle-publishing pattern. Our Phase 2/3 audit work had already restructured that block — no shadowed variable, and the handle is only published once fully constructed. Kept our version, which subsumes upstream's rename.

Fix for an upstream regression

Upstream thestk#484 defines copy_runtime_deps() inside if(WIN32) but calls it unconditionally, so any non-Windows configure with RTAUDIO_BUILD_TESTING=ON (which our Linux CI uses) fails with Unknown CMake command "copy_runtime_deps". A follow-up commit defines the function unconditionally — it already no-ops off Windows via its internal WIN32 check. Candidate for contributing back upstream.

Validation

  • Configured and built on Linux with -DRTAUDIO_BUILD_TESTING=ON -DRTAUDIO_WARNINGS_AS_ERRORS=ON: clean, no warnings.
  • ctest: 3/3 tests pass (apitest, unittest, convtest).

🤖 Generated with Claude Code

https://claude.ai/code/session_01SknrT2Cbre3nFzrcMZgDbV


Generated by Claude Code

akien-mga and others added 11 commits January 14, 2026 11:30
RtApiAsio installed three of the four ASIO host callbacks and set
asioCallbacks.bufferSwitchTimeInfo to NULL. Any driver that calls it therefore
transfers control to address 0 and takes the process down.

asioMessages() answers kAsioSupportsTimeInfo with 0, so by the letter of the SDK
a driver should use bufferSwitch instead. Steinberg's Generic Low Latency ASIO
driver calls bufferSwitchTimeInfo regardless, crashing on the first ASIOStart().
Removing kAsioSupportsTimeInfo from the kAsioSelectorSupported list as well does
not help, so it consults neither answer.

Since the host cannot control how a third-party driver behaves, and a call
through a null function pointer is unrecoverable, supply the callback and forward
it to bufferSwitch. The time info is not used.

Fixes thestk#485. Very likely the root cause of thestk#409, and possibly thestk#443.
Add CMake option RTAUDIO_INSTALL
[CMake|WIN32] Add a custom command to copy the DLL in the tests directory
…itchtimeinfo

ASIO: provide bufferSwitchTimeInfo instead of leaving it NULL
Brings in upstream changes since the fork point:
- ASIO: install a real bufferSwitchTimeInfo callback instead of NULL,
  fixing crashes with drivers that call it regardless of
  kAsioSupportsTimeInfo (upstream thestk#486)
- CMake: new RTAUDIO_INSTALL option to skip install rules (upstream thestk#482)
- CMake/WIN32: copy runtime DLLs next to test binaries (upstream thestk#484)
- GCC -Wshadow fix in RtApiPulse::probeDeviceOpen (upstream thestk#474)

Conflict resolution: RtApiPulse::probeDeviceOpen kept our version of the
handle-allocation block. Our audit fix already removed the shadowed local
that upstream's rename addressed, and additionally defers publishing the
handle until it is fully constructed.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01SknrT2Cbre3nFzrcMZgDbV
Upstream thestk#484 defined copy_runtime_deps() inside if(WIN32) but calls it
unconditionally, so any non-Windows configure with RTAUDIO_BUILD_TESTING=ON
fails with 'Unknown CMake command'. Define the function unconditionally;
it already no-ops off Windows via its internal WIN32 check.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01SknrT2Cbre3nFzrcMZgDbV
@tap
tap merged commit 6821953 into master Aug 27, 2026
32 checks passed
@tap
tap deleted the claude/form-upstream-relationships-fnmgd2 branch August 27, 2026 18:53
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants