Repository navigation
fix(audioout): serialize SDL audio initialization for Dark Forces - #4789
Conversation
|
Other open pull requests touch the same code. Merging one will break the other, or both implement the same thing. If this one builds on them, list them in Depends on.
|
|
Windows test: head AI-assisted (Claude Code). |
|
Independent Linux validation of Ubuntu 26.04.1 x86-64, GCC 15.2.0, Release, bundled dependencies, testing and SPIR-V Tools enabled.
The concurrency checks compile the actual production helper with a controlled SDL backend. They establish serialization and return-value preservation, not reproduction of the real AI-assisted validation/report: Codex. Original implementation and authorship preserved. |
…ization leaves PPSA23566 on a black, silent screen before its intro Bisected on 2026-10-14: upstream main plus the registration limit stays black and silent at about 50 FPS; the same with this merge reverted shows the intro. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Brings the UFC 6 candidate (c222bd2) up to upstream main, 436 commits past its old base 84b01f9. Conflicts were resolved keeping both sides: - shader: image tables replace bindless tables in the fork's materializer, capture and compiled-walk paths (compiled walks and memoized fast paths fall back for plans with image tables); both disk-cache format bumps collapse into FormatVersion 36; Linux layout checks recomputed (BindingAllocationResult 208, IrResourcePlan 600); prebuilt shader packs are tried before the writable cache on reload. - agc: upstream's draw shape keys, stage data hits, byte caps and described compute layouts are folded into the fork's binding plans, relocation, sizing and compute compile-ahead; upstream's unwritten snapshot cap and budget combine with the fork's epoch revalidation. - agc: registration preparations queued behind or past the preparation budget are not awaited at submission, keeping preparation in the background. - depth: upstream's base-slice depth plane sampling replaces the fork's version. - audio: the fork keeps boykopovar#4789 reverted. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
What
STAR WARS: Dark Forces Remaster (PPSA19728, 02.000.000) can crash in
SDL_AudioQuit_REALat address zero when legacy AudioOut and AudioOut2 initialize SDL audio concurrently. Debugger traces show overlapping initialization fromsceAudioOutOpenandsceAudioOut2ContextCreate.Serialize SDL audio initialization through a shared helper. Preserve SDL's return value and the existing caller error handling.
Tested
Native Windows, Release build, based on main
529f7bfd4. Fulllibsbuild passes. The newaudio_out_initializationtest exercises the production helper with a controlled SDL backend, checks serialization and unchanged failure/success returns, and passes. Removing serialization produces overlapping backend calls and fails the regression. Existingaudio_out_ex,audio_out2_latencyandaudio_out2_port_bufferspass (4/4 total). Conventions, test registration and whitespace checks pass. Newer mainee4962190was checked before publication: neither affected library changed, and the branch merges cleanly; the build/test results above are for the stated tested base.Earlier title testing required the independent NGS2 voice-index fix to reach this audio path. With both fixes, manual testing completed the first mission. Tab/PDA performance problems remain. Gameplay was not repeated on the refreshed main build.
Checklist
main; no other open PR implements the same functions