summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--package/alsa-lib/patches/patch-src_pcm_pcm_shm_c23
1 files changed, 23 insertions, 0 deletions
diff --git a/package/alsa-lib/patches/patch-src_pcm_pcm_shm_c b/package/alsa-lib/patches/patch-src_pcm_pcm_shm_c
new file mode 100644
index 000000000..decd44bc8
--- /dev/null
+++ b/package/alsa-lib/patches/patch-src_pcm_pcm_shm_c
@@ -0,0 +1,23 @@
+--- alsa-lib-1.0.22.orig/src/pcm/pcm_shm.c 2009-12-16 16:18:51.000000000 +0100
++++ alsa-lib-1.0.22/src/pcm/pcm_shm.c 2010-04-04 10:53:44.000000000 +0200
+@@ -482,15 +482,19 @@ static int snd_pcm_shm_drop(snd_pcm_t *p
+
+ static int snd_pcm_shm_drain(snd_pcm_t *pcm)
+ {
++ struct timespec ts;
+ snd_pcm_shm_t *shm = pcm->private_data;
+ volatile snd_pcm_shm_ctrl_t *ctrl = shm->ctrl;
+ int err;
++ ts.tv_sec = 0;
++ ts.tv_nsec = 10000000;
++
+ do {
+ ctrl->cmd = SNDRV_PCM_IOCTL_DRAIN;
+ err = snd_pcm_shm_action(pcm);
+ if (err != -EAGAIN)
+ break;
+- usleep(10000);
++ nanosleep(&ts, NULL);
+ } while (1);
+ if (err < 0)
+ return err;