devaudio: attach

This commit is contained in:
cinap_lenrek 2011-05-20 20:45:17 +00:00
parent c470e77eae
commit a75eb31752

View file

@ -116,7 +116,7 @@ audioclone(Chan *c, Audio *adev)
static Chan* static Chan*
audioattach(char *spec) audioattach(char *spec)
{ {
static int first = 1; static int attached = 0;
Audiochan *ac; Audiochan *ac;
Audio *adev; Audio *adev;
Chan *c; Chan *c;
@ -127,7 +127,7 @@ audioattach(char *spec)
else else
i = 0; i = 0;
for(adev = audiodevs; adev; adev = adev->next) for(adev = audiodevs; adev; adev = adev->next)
if(i-- == 0) if(adev->ctlrno == i)
break; break;
if(adev == nil) if(adev == nil)
error(Enodev); error(Enodev);
@ -138,9 +138,10 @@ audioattach(char *spec)
if((ac = audioclone(c, adev)) == nil) if((ac = audioclone(c, adev)) == nil)
error(Enomem); error(Enomem);
if(first && adev->volwrite){ i = 1<<adev->ctlrno;
first = 0; if((attached & i) == 0 && adev->volwrite){
attached |= i;
strcpy(ac->buf, "speed 44100"); strcpy(ac->buf, "speed 44100");
if(!waserror()){ if(!waserror()){
adev->volwrite(adev, ac->buf, strlen(ac->buf), 0); adev->volwrite(adev, ac->buf, strlen(ac->buf), 0);