static void ALSA_CloseDevice(_THIS) { if (this->hidden->pcm_handle) { ALSA_snd_pcm_drain(this->hidden->pcm_handle); ALSA_snd_pcm_close(this->hidden->pcm_handle); } SDL_free(this->hidden->mixbuf); SDL_free(this->hidden); }
static void ALSA_CloseDevice(_THIS) { if (this->hidden != NULL) { SDL_FreeAudioMem(this->hidden->mixbuf); this->hidden->mixbuf = NULL; if (this->hidden->pcm_handle) { ALSA_snd_pcm_drain(this->hidden->pcm_handle); ALSA_snd_pcm_close(this->hidden->pcm_handle); this->hidden->pcm_handle = NULL; } SDL_free(this->hidden); this->hidden = NULL; } }
static void ALSA_CloseDevice(_THIS) { if (this->hidden->pcm_handle) { /* Wait for the submitted audio to drain ALSA_snd_pcm_drop() can hang, so don't use that. */ Uint32 delay = ((this->spec.samples * 1000) / this->spec.freq) * 2; SDL_Delay(delay); ALSA_snd_pcm_close(this->hidden->pcm_handle); } SDL_free(this->hidden->mixbuf); SDL_free(this->hidden); }