static void NAS_PlayDevice(_THIS) { while (this->hidden->mixlen > this->hidden->buf_free) { /* * We think the buffer is full? Yikes! Ask the server for events, * in the hope that some of them is LowWater events telling us more * of the buffer is free now than what we think. */ AuEvent ev; NAS_AuNextEvent(this->hidden->aud, AuTrue, &ev); NAS_AuDispatchEvent(this->hidden->aud, &ev); } this->hidden->buf_free -= this->hidden->mixlen; /* Write the audio data */ NAS_AuWriteElement(this->hidden->aud, this->hidden->flow, 0, this->hidden->mixlen, this->hidden->mixbuf, AuFalse, NULL); this->hidden->written += this->hidden->mixlen; #ifdef DEBUG_AUDIO fprintf(stderr, "Wrote %d bytes of audio data\n", this->hidden->mixlen); #endif }
/* This function waits until it is possible to write a full sound buffer */ static void NAS_WaitAudio(_THIS) { while ( this->hidden->buf_free < this->hidden->mixlen ) { AuEvent ev; NAS_AuNextEvent(this->hidden->aud, AuTrue, &ev); NAS_AuDispatchEvent(this->hidden->aud, &ev); } }