static void ALSA_Update(void) { int err; if (!enabled) return; if (bytes_written == 0 || bytes_played == bytes_written) { bytes_written = VC_WriteBytes(audiobuffer,period_size * global_frame_size); bytes_played = 0; } while (bytes_played < bytes_written) { err = alsa_pcm_writei(pcm_h, &audiobuffer[bytes_played], (bytes_written - bytes_played) / global_frame_size); if (err == -EAGAIN) continue; if (err < 0) { if ((err = xrun_recovery(pcm_h, err)) < 0) { _mm_errno = MMERR_ALSA_PCM_RECOVER; enabled = 0; dbgprint(stderr, "Write error: %s\n", alsa_strerror(err)); } break; } bytes_played += err * global_frame_size; } }
static void ALSA_Update(void) { int err; { if (bytes_written == 0 || bytes_played == bytes_written) { bytes_written = VC_WriteBytes(audiobuffer,buffer_size_in_frames * global_frame_size); bytes_played = 0; } while (bytes_played < bytes_written) { err = alsa_pcm_writei(pcm_h, &audiobuffer[bytes_played], (bytes_written - bytes_played) / global_frame_size); if (err == -EAGAIN) { continue; } if (err < 0) { if ((err = xrun_recovery(pcm_h, err)) < 0) { printf("Write error: %s\n", alsa_strerror(err)); exit(-1); } break; } bytes_played += err * global_frame_size; } } }