[MP] Fix ambient sounds not playing after snd_restart#1311
Open
dpiers wants to merge 1 commit into
Open
Conversation
After snd_restart or EAX toggle, ambient sounds from doors, elevators, and other brush model entities would go silent while other sounds (music, weapons, footsteps) continued working. A vid_restart would restore the sounds. The ambient sound system requires a precache map (pMap) containing soundset names that cgame registers during map load via AS_AddPrecacheEntry(). When AS_ParseSets() runs, it only loads soundsets that exist in pMap. Root cause: When snd_restart calls S_Shutdown(), AS_Free() sets aSets to NULL but leaves pMap intact. Then S_Init() calls AS_Init(), which sees aSets is NULL and allocates a NEW empty pMap - discarding all the soundset names that cgame had registered. The subsequent AS_ParseSets() call finds an empty pMap and loads nothing. Fix: Use a static singleton for pMap (matching the existing SP implementation) so it persists across sound system restarts. Also call AS_ParseSets() in CL_Snd_Restart_f() to reload the ambient sound definitions. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
|
Not a real issue, delete your account. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fixes #1063
Root Cause
AS_Init()dynamically allocatespMap. Whensnd_restartruns:S_Shutdown()→AS_Free()setsaSets = NULLbut leavespMapintactS_Init()→AS_Init()seesaSets == NULL, allocates a new emptypMap, discarding all soundset names cgame had registeredAS_ParseSets()finds an emptypMapand loads nothingThe SP codebase already uses a static singleton for
pMap(has since original Raven source), avoiding this issue.Affected Sounds
All 166 ambient sound sets in
sound/sound.txt: bmodel sounds (doors, platforms, elevators), general environmental ambience, and local positional sounds.Fix
pMapin MP (matching SP implementation)AS_ParseSets()inCL_Snd_Restart_f()to reload ambient sets after restartTesting
devmap mp/ffa5snd_restart