On 05/03/12 20:56, Jan Kiszka wrote:
> Not only clean up enabled voices but any registered one. Backends like
> pulsaudio rely on unconditional fini handler invocations.
>
> This fixes "Memory pool destroyed but not all memory blocks freed!"
> warnings on VM shutdowns when pa is used.
>
> Signed-off-by: Jan Kiszka <[email protected]>
> ---
> audio/audio.c | 4 ++--
> 1 files changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/audio/audio.c b/audio/audio.c
> index bd9237e..4b6e06c 100644
> --- a/audio/audio.c
> +++ b/audio/audio.c
> @@ -1775,7 +1775,7 @@ static void audio_atexit (void)
> HWVoiceOut *hwo = NULL;
> HWVoiceIn *hwi = NULL;
>
> - while ((hwo = audio_pcm_hw_find_any_enabled_out (hwo))) {
> + while ((hwo = audio_pcm_hw_find_any_out (hwo))) {
> SWVoiceCap *sc;
>
> hwo->pcm_ops->ctl_out (hwo, VOICE_DISABLE);
I think you better call VOICE_DISABLE only in case the voice is actually
enabled.
> @@ -1791,7 +1791,7 @@ static void audio_atexit (void)
> }
> }
>
> - while ((hwi = audio_pcm_hw_find_any_enabled_in (hwi))) {
> + while ((hwi = audio_pcm_hw_find_any_in (hwi))) {
> hwi->pcm_ops->ctl_in (hwi, VOICE_DISABLE);
Likewise.
> hwi->pcm_ops->fini_in (hwi);
> }
cheers,
Gerd