summaryrefslogtreecommitdiff
path: root/modules
diff options
context:
space:
mode:
authorAlfred E. Heggestad <aeh@db.org>2014-11-22 20:10:32 +0100
committerAlfred E. Heggestad <aeh@db.org>2014-11-22 20:10:32 +0100
commit918fb79b58c07c64731baf574b3bec2d57e96a1f (patch)
tree9aa793cbf1751f102752c9399761136fbd009347 /modules
parent5690e4a0637009cc166dc88e3edf13957d736c4b (diff)
winwave: call waveOutClose/waveInClose last
Diffstat (limited to 'modules')
-rw-r--r--modules/winwave/play.c6
-rw-r--r--modules/winwave/src.c5
2 files changed, 7 insertions, 4 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);
}
diff --git a/modules/winwave/src.c b/modules/winwave/src.c
index f480213..9d8793f 100644
--- a/modules/winwave/src.c
+++ b/modules/winwave/src.c
@@ -20,7 +20,7 @@ struct ausrc_st {
struct dspbuf bufs[READ_BUFFERS];
int pos;
HWAVEIN wavein;
- bool rdy;
+ volatile bool rdy;
size_t inuse;
ausrc_read_h *rh;
void *arg;
@@ -36,7 +36,6 @@ static void ausrc_destructor(void *arg)
waveInStop(st->wavein);
waveInReset(st->wavein);
- waveInClose(st->wavein);
for (i = 0; i < READ_BUFFERS; i++) {
waveInUnprepareHeader(st->wavein, &st->bufs[i].wh,
@@ -44,6 +43,8 @@ static void ausrc_destructor(void *arg)
mem_deref(st->bufs[i].mb);
}
+ waveInClose(st->wavein);
+
mem_deref(st->as);
}