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.c15
1 files changed, 14 insertions, 1 deletions
diff --git a/plugins/dfsound/alsa.c b/plugins/dfsound/alsa.c
index b5655a9..6b9f83e 100644
--- a/plugins/dfsound/alsa.c
+++ b/plugins/dfsound/alsa.c
@@ -195,8 +195,21 @@ static void alsa_feed(void *pSound, int lBytes)
snd_pcm_prepare(handle);
snd_pcm_writei(handle, sbuf, sizeof(sbuf) / 4);
snd_pcm_writei(handle, sbuf, sizeof(sbuf) / 4);
+ snd_pcm_writei(handle, sbuf, sizeof(sbuf) / 4);
+ }
+ else
+ {
+ int l = snd_pcm_avail(handle);
+ if (l < lBytes / 4)
+ {
+ if (l == 0)
+ return;
+
+ lBytes = l * 4;
+ }
}
- snd_pcm_writei(handle,pSound, lBytes / 4);
+
+ snd_pcm_writei(handle, pSound, lBytes / 4);
}
void out_register_alsa(struct out_driver *drv)