mirror of
https://github.com/libSDL2pp/libSDL2pp.git
synced 2025-08-03 10:55:57 -04:00

Though documentation and even a comment at the start of Mix_FreeChunk() state that it's unsafe to free chunk which is still being played, the function actually contains the code to stop all playback of a chunk which is being freed. See SDL2_mixer 2.0.0, mixer.c:759: /* Guarantee that this chunk isn't playing */ SDL_LockAudio(); if ( mix_channel ) { for ( i=0; i<num_channels; ++i ) { if ( chunk == mix_channel[i].chunk ) { mix_channel[i].playing = 0; mix_channel[i].looping = 0; } } } SDL_UnlockAudio(); As a result, no special actions are required to stop Mixer playback before destruction of the Chunks (which is a common case with SDL2pp, as Chunks may only be constructed after Mixer is created, and are correspondingly destroyed in reverse order, e.g. before Mixer).