diff options
author | cinap_lenrek <cinap_lenrek@localhost> | 2011-07-03 06:33:13 +0200 |
---|---|---|
committer | cinap_lenrek <cinap_lenrek@localhost> | 2011-07-03 06:33:13 +0200 |
commit | 6888db2820dfcf260a1269b5bad4cd55fd189bf5 (patch) | |
tree | 397b3f290661a58185ba15ec3b0e4adcd7646783 /sys/src/9/pc/audioac97.c | |
parent | b274842f5cc186ea254fe61f5866fbc4c494b8c7 (diff) |
audio: fill up last buffer with silence on close
Diffstat (limited to 'sys/src/9/pc/audioac97.c')
-rw-r--r-- | sys/src/9/pc/audioac97.c | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/sys/src/9/pc/audioac97.c b/sys/src/9/pc/audioac97.c index 193d31e8a..e0732dd6b 100644 --- a/sys/src/9/pc/audioac97.c +++ b/sys/src/9/pc/audioac97.c @@ -326,6 +326,20 @@ ac97write(Audio *adev, void *vp, long n, vlong) return p - (uchar*)vp; } +static void +ac97close(Audio *adev) +{ + Ctlr *ctlr; + Ring *ring; + uchar z[1]; + + z[0] = 0; + ctlr = adev->ctlr; + ring = &ctlr->outring; + while(ring->wi % Blocksize) + ac97write(adev, z, sizeof(z), 0); +} + static Pcidev* ac97match(Pcidev *p) { @@ -499,6 +513,7 @@ Found: ac97mixreset(adev, ac97mixw, ac97mixr); adev->write = ac97write; + adev->close = ac97close; adev->buffered = ac97buffered; adev->status = ac97status; |