OSDN Git Service

winwave: close event handle and delete wait object after closing HWAVEOUT
authormalc <av1474@comtv.ru>
Sun, 11 Oct 2009 02:38:47 +0000 (06:38 +0400)
committermalc <av1474@comtv.ru>
Sun, 11 Oct 2009 02:38:47 +0000 (06:38 +0400)
To avoid possibly being called back and thus racing.

Signed-off-by: malc <av1474@comtv.ru>
audio/winwaveaudio.c

index 5bbce2a..1486da1 100644 (file)
@@ -263,6 +263,8 @@ static void winwave_fini_out (HWVoiceOut *hw)
 {
     WaveVoiceOut *wave = (WaveVoiceOut *) hw;
 
+    winwave_anal_close_out (wave);
+
     if (wave->event) {
         qemu_del_wait_object (wave->event, winwave_poll_out, wave);
         if (!CloseHandle (wave->event)) {
@@ -271,8 +273,6 @@ static void winwave_fini_out (HWVoiceOut *hw)
         wave->event = NULL;
     }
 
-    winwave_anal_close_out (wave);
-
     qemu_free (wave->pcm_buf);
     wave->pcm_buf = NULL;