summaryrefslogtreecommitdiff
path: root/modules/winwave/play.c
diff options
context:
space:
mode:
Diffstat (limited to 'modules/winwave/play.c')
-rw-r--r--modules/winwave/play.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/modules/winwave/play.c b/modules/winwave/play.c
index e258561..1ca0d44 100644
--- a/modules/winwave/play.c
+++ b/modules/winwave/play.c
@@ -20,7 +20,7 @@ struct auplay_st {
struct dspbuf bufs[WRITE_BUFFERS];
int pos;
HWAVEOUT waveout;
- bool rdy;
+ volatile bool rdy;
size_t inuse;
auplay_write_h *wh;
void *arg;
@@ -41,7 +41,7 @@ static void auplay_destructor(void *arg)
while (st->inuse > 0)
Sleep(50);
- waveOutClose(st->waveout);
+ waveOutReset(st->waveout);
for (i = 0; i < WRITE_BUFFERS; i++) {
waveOutUnprepareHeader(st->waveout, &st->bufs[i].wh,
@@ -49,6 +49,8 @@ static void auplay_destructor(void *arg)
mem_deref(st->bufs[i].mb);
}
+ waveOutClose(st->waveout);
+
mem_deref(st->ap);
}