git: 9front

Download patch

ref: 4e45b95adb41715d38ac9d85a099f8b95a146f1e
parent: d472de6b70282e8aeb0b2482768326b3a0593126
author: cinap_lenrek <cinap_lenrek@localhost>
date: Sun Jul 3 02:33:13 EDT 2011

audio: fill up last buffer with silence on close

--- a/sys/src/9/pc/audioac97.c
+++ b/sys/src/9/pc/audioac97.c
@@ -326,6 +326,20 @@
 	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 @@
 	ac97mixreset(adev, ac97mixw, ac97mixr);
 
 	adev->write = ac97write;
+	adev->close = ac97close;
 	adev->buffered = ac97buffered;
 	adev->status = ac97status;
 
--