{
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*
hdaclose(Audio *adev, int mode)
{
Ctlr *ctlr;
- uchar z[1];
+ Ring *ring;
ctlr = adev->ctlr;
if(mode == OREAD || mode == ORDWR){
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;
}
}