audioac97, audiohda: dont block on close, just pad the last block with zeros
This commit is contained in:
parent
47bb182b5b
commit
866ee3ab5d
2 changed files with 7 additions and 9 deletions
|
@ -390,16 +390,15 @@ ac97close(Audio *adev, int mode)
|
||||||
{
|
{
|
||||||
Ctlr *ctlr;
|
Ctlr *ctlr;
|
||||||
Ring *ring;
|
Ring *ring;
|
||||||
uchar z[1];
|
|
||||||
|
|
||||||
if(mode == OREAD)
|
if(mode == OREAD)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
z[0] = 0;
|
|
||||||
ctlr = adev->ctlr;
|
ctlr = adev->ctlr;
|
||||||
ring = &ctlr->outring;
|
ring = &ctlr->outring;
|
||||||
while(ring->wi % Blocksize)
|
while(ring->wi % Blocksize)
|
||||||
ac97write(adev, z, sizeof(z), 0);
|
if(writering(ring, (uchar*)"", 1) <= 0)
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
static Pcidev*
|
static Pcidev*
|
||||||
|
|
|
@ -1296,7 +1296,7 @@ static void
|
||||||
hdaclose(Audio *adev, int mode)
|
hdaclose(Audio *adev, int mode)
|
||||||
{
|
{
|
||||||
Ctlr *ctlr;
|
Ctlr *ctlr;
|
||||||
uchar z[1];
|
Ring *ring;
|
||||||
|
|
||||||
ctlr = adev->ctlr;
|
ctlr = adev->ctlr;
|
||||||
if(mode == OREAD || mode == ORDWR){
|
if(mode == OREAD || mode == ORDWR){
|
||||||
|
@ -1304,11 +1304,10 @@ hdaclose(Audio *adev, int mode)
|
||||||
streamstop(ctlr, &ctlr->sin);
|
streamstop(ctlr, &ctlr->sin);
|
||||||
}
|
}
|
||||||
if(mode == OWRITE || mode == ORDWR){
|
if(mode == OWRITE || mode == ORDWR){
|
||||||
if(ctlr->sout.active){
|
ring = &ctlr->sout.ring;
|
||||||
z[0] = 0;
|
while(ring->wi % Blocksize)
|
||||||
while(ctlr->sout.ring.wi % Blocksize)
|
if(writering(ring, (uchar*)"", 1) <= 0)
|
||||||
hdawrite(adev, z, sizeof(z), 0);
|
break;
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue