audioac97, audiohda: dont block on close, just pad the last block with zeros

This commit is contained in:
cinap_lenrek 2013-01-27 14:00:42 +01:00
parent 47bb182b5b
commit 866ee3ab5d
2 changed files with 7 additions and 9 deletions

View file

@ -390,16 +390,15 @@ ac97close(Audio *adev, int mode)
{
Ctlr *ctlr;
Ring *ring;
uchar z[1];
if(mode == OREAD)
return;
z[0] = 0;
ctlr = adev->ctlr;
ring = &ctlr->outring;
while(ring->wi % Blocksize)
ac97write(adev, z, sizeof(z), 0);
if(writering(ring, (uchar*)"", 1) <= 0)
break;
}
static Pcidev*

View file

@ -1296,7 +1296,7 @@ static void
hdaclose(Audio *adev, int mode)
{
Ctlr *ctlr;
uchar z[1];
Ring *ring;
ctlr = adev->ctlr;
if(mode == OREAD || mode == ORDWR){
@ -1304,11 +1304,10 @@ hdaclose(Audio *adev, int mode)
streamstop(ctlr, &ctlr->sin);
}
if(mode == OWRITE || mode == ORDWR){
if(ctlr->sout.active){
z[0] = 0;
while(ctlr->sout.ring.wi % Blocksize)
hdawrite(adev, z, sizeof(z), 0);
}
ring = &ctlr->sout.ring;
while(ring->wi % Blocksize)
if(writering(ring, (uchar*)"", 1) <= 0)
break;
}
}