/* * rcg06122001 Cleanup effect callbacks. * MAKE SURE SDL_LockAudio() is called before this (or you're in the * audio callback). */ static void _Mix_channel_done_playing(int channel) { if (channel_done_callback) { channel_done_callback(channel); } /* * Call internal function directly, to avoid locking audio from * inside audio callback. */ _Mix_remove_all_effects(channel, &mix_channel[channel].effects); }
/* MAKE SURE you hold the audio lock (SDL_LockAudio()) before calling this! */ int _Mix_UnregisterAllEffects_locked(int channel) { effect_info **e = NULL; if (channel == MIX_CHANNEL_POST) { e = &posteffects; } else { if ((channel < 0) || (channel >= num_channels)) { Mix_SetError("Invalid channel number"); return(0); } e = &mix_channel[channel].effects; } return _Mix_remove_all_effects(channel, e); }
/* * rcg06122001 Cleanup effect callbacks. * MAKE SURE SDL_LockAudio() is called before this (or you're in the * audio callback). */ static void _Mix_channel_done_playing(int channel) { if (channel == MUSIC_COMPAT_MAGIC_CHANNEL) { /* No need to do anything for the single-channel music stream. */ return; } if (channel_done_callback) { channel_done_callback(channel_done_callback_userdata, channel); } /* * Call internal function directly, to avoid locking audio from * inside audio callback. */ _Mix_remove_all_effects(channel, &mix_channel[channel].effects); }
int Mix_UnregisterAllEffects(int channel) { effect_info **e = NULL; int retval; if (channel == MIX_CHANNEL_POST) { e = &posteffects; } else { if ((channel < 0) || (channel >= num_channels)) { Mix_SetError("Invalid channel number"); return(0); } e = &mix_channel[channel].effects; } SDL_LockAudio(); retval = _Mix_remove_all_effects(channel, e); SDL_UnlockAudio(); return(retval); }