Mercurial > audlegacy-plugins
diff src/alsa/audio.c @ 3147:a6a57fe6a75c
Fix last second(s) of playback getting lost, by Hans de Goede.
author | Tony Vroon <chainsaw@gentoo.org> |
---|---|
date | Sun, 10 May 2009 21:15:29 +0100 |
parents | 919ec26c66c3 |
children | 4b50e2a0ae1f |
line wrap: on
line diff
--- a/src/alsa/audio.c Sat May 09 13:47:30 2009 -0500 +++ b/src/alsa/audio.c Sun May 10 21:15:29 2009 +0100 @@ -141,13 +141,11 @@ int alsa_playing(void) { - if (!going || paused || alsa_pcm == NULL) + if (!going || paused || prebuffer || alsa_pcm == NULL) return FALSE; - return snd_pcm_state(alsa_pcm) == SND_PCM_STATE_RUNNING && - !paused && - !prebuffer && - get_thread_buffer_filled() > hw_period_size_in; + return snd_pcm_state(alsa_pcm) == SND_PCM_STATE_RUNNING || + get_thread_buffer_filled(); } static gint @@ -647,7 +645,7 @@ { gint length, cnt, avail; - length = MIN(hw_period_size_in, get_thread_buffer_filled()); + length = get_thread_buffer_filled(); avail = snd_pcm_frames_to_bytes(alsa_pcm, alsa_get_avail()); length = MIN(length, avail); while (length > 0) @@ -677,8 +675,7 @@ { if (get_thread_buffer_filled() > prebuffer_size) prebuffer = FALSE; - if (!paused && !prebuffer && - get_thread_buffer_filled() > hw_period_size_in) + if (!paused && !prebuffer && get_thread_buffer_filled()) { wr = snd_pcm_wait(alsa_pcm, 10); if (wr > 0)