Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
Corrected misuse of snd_pcm_writei() in ALSA driver.
  Hopefully fixes Bugzilla #650.
  • Loading branch information
icculus committed Oct 12, 2009
1 parent 609e334 commit cb0729a
Showing 1 changed file with 10 additions and 9 deletions.
19 changes: 10 additions & 9 deletions src/audio/alsa/SDL_alsa_audio.c
Expand Up @@ -304,17 +304,18 @@ static __inline__ void swizzle_alsa_channels(_THIS)

static void ALSA_PlayAudio(_THIS)
{
int status;
int sample_len;
signed short *sample_buf;
int status;
snd_pcm_uframes_t frames_left;
const Uint8 *sample_buf = (const Uint8 *) mixbuf;
const int frame_size = ( ((int) this->spec.channels) *
((int) (this->spec.format & 0xFF)) );

swizzle_alsa_channels(this);

sample_len = this->spec.samples;
sample_buf = (signed short *)mixbuf;
frames_left = ((snd_pcm_uframes_t) this->spec.samples) / this->spec.channels;

while ( sample_len > 0 ) {
status = SDL_NAME(snd_pcm_writei)(pcm_handle, sample_buf, sample_len);
while ( frames_left > 0 ) {
status = SDL_NAME(snd_pcm_writei)(pcm_handle, sample_buf, frames_left);
if ( status < 0 ) {
if ( status == -EAGAIN ) {
SDL_Delay(1);
Expand All @@ -336,8 +337,8 @@ static void ALSA_PlayAudio(_THIS)
}
continue;
}
sample_buf += status * this->spec.channels;
sample_len -= status;
sample_buf += status * frame_size;
frames_left -= status;
}
}

Expand Down

0 comments on commit cb0729a

Please sign in to comment.