aboutsummaryrefslogtreecommitdiff
path: root/plugins/dfsound/alsa.c
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/dfsound/alsa.c')
-rw-r--r--plugins/dfsound/alsa.c10
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);
}