From f4e8d0b737e2643fafc5193ab14cc126a246a884 Mon Sep 17 00:00:00 2001 From: malc Date: Sun, 11 Oct 2009 05:39:09 +0400 Subject: [PATCH] winwave: remove wait object when finalizing DAC voice Signed-off-by: malc --- audio/winwaveaudio.c | 27 ++++++++++++++------------- 1 file changed, 14 insertions(+), 13 deletions(-) diff --git a/audio/winwaveaudio.c b/audio/winwaveaudio.c index 16133d198d..5bbce2abdc 100644 --- a/audio/winwaveaudio.c +++ b/audio/winwaveaudio.c @@ -253,10 +253,24 @@ static int winwave_run_out (HWVoiceOut *hw, int live) return decr; } +static void winwave_poll_out (void *opaque) +{ + (void) opaque; + audio_run ("winwave_poll_out"); +} + static void winwave_fini_out (HWVoiceOut *hw) { WaveVoiceOut *wave = (WaveVoiceOut *) hw; + if (wave->event) { + qemu_del_wait_object (wave->event, winwave_poll_out, wave); + if (!CloseHandle (wave->event)) { + AUD_log (AUDIO_CAP, "CloseHandle failed %lx\n", GetLastError ()); + } + wave->event = NULL; + } + winwave_anal_close_out (wave); qemu_free (wave->pcm_buf); @@ -264,19 +278,6 @@ static void winwave_fini_out (HWVoiceOut *hw) qemu_free (wave->hdrs); wave->hdrs = NULL; - - if (wave->event) { - if (!CloseHandle (wave->event)) { - AUD_log (AUDIO_CAP, "CloseHandle failed %lx\n", GetLastError ()); - } - wave->event = NULL; - } -} - -static void winwave_poll_out (void *opaque) -{ - (void) opaque; - audio_run ("winwave_poll_out"); } static int winwave_ctl_out (HWVoiceOut *hw, int cmd, ...)