diff options
Diffstat (limited to 'plugins/dfsound/alsa.c')
-rw-r--r-- | plugins/dfsound/alsa.c | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/plugins/dfsound/alsa.c b/plugins/dfsound/alsa.c index 1c02d37..b5655a9 100644 --- a/plugins/dfsound/alsa.c +++ b/plugins/dfsound/alsa.c @@ -16,6 +16,7 @@ ***************************************************************************/ #include <stdio.h> +#include <string.h> #define ALSA_PCM_NEW_HW_PARAMS_API #define ALSA_PCM_NEW_SW_PARAMS_API #include <alsa/asoundlib.h> @@ -184,10 +185,17 @@ static int alsa_busy(void) // FEED SOUND DATA static void alsa_feed(void *pSound, int lBytes) { + char sbuf[4096]; + if (handle == NULL) return; if (snd_pcm_state(handle) == SND_PCM_STATE_XRUN) - snd_pcm_prepare(handle); + { + memset(sbuf, 0, sizeof(sbuf)); + snd_pcm_prepare(handle); + snd_pcm_writei(handle, sbuf, sizeof(sbuf) / 4); + snd_pcm_writei(handle, sbuf, sizeof(sbuf) / 4); + } snd_pcm_writei(handle,pSound, lBytes / 4); } |