From f2a604e1f4d39313e52e5abd63be660dda840f5d Mon Sep 17 00:00:00 2001 From: Jaroslav Kysela Date: Wed, 13 Jan 2010 08:12:31 +0100 Subject: [PATCH] --- yaml --- r: 182655 b: refs/heads/master c: ed69c6a8eef679f2783848ed624897a937a434ac h: refs/heads/master i: 182653: 59352ee9c9fb32c3610eb0f21e75f4102b65fd52 182651: 7d728e0d07741065bb18d632e1f200a09aa68d7c 182647: b21ecc60ff41e3bd6a0a331a158fba2666292ae1 182639: 00be9a13cc37af0c90ca2b358bef16e647f96fd3 182623: 3a17387cc93b3aa681f79b7478b5302df7484daa 182591: 6169847b02ec54be219bb37c6438a089cd5d8120 182527: b993e02ac869b3f571800dcda21c5c8495891ba1 v: v3 --- [refs] | 2 +- trunk/sound/core/pcm_lib.c | 8 +++++--- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/[refs] b/[refs] index 73875fbbae5a..bf139c027526 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: c4cfe66c4c2d5a91b3734ffb4e2bad0badd5c874 +refs/heads/master: ed69c6a8eef679f2783848ed624897a937a434ac diff --git a/trunk/sound/core/pcm_lib.c b/trunk/sound/core/pcm_lib.c index 0ee7e807c964..5417f7dce834 100644 --- a/trunk/sound/core/pcm_lib.c +++ b/trunk/sound/core/pcm_lib.c @@ -394,6 +394,7 @@ static int snd_pcm_update_hw_ptr0(struct snd_pcm_substream *substream, + HZ/100); /* move new_hw_ptr according jiffies not pos variable */ new_hw_ptr = old_hw_ptr; + hw_base = delta; /* use loop to avoid checks for delta overflows */ /* the delta value is small or zero in most cases */ while (delta > 0) { @@ -403,8 +404,6 @@ static int snd_pcm_update_hw_ptr0(struct snd_pcm_substream *substream, delta--; } /* align hw_base to buffer_size */ - hw_base = new_hw_ptr - (new_hw_ptr % runtime->buffer_size); - delta = 0; hw_ptr_error(substream, "hw_ptr skipping! %s" "(pos=%ld, delta=%ld, period=%ld, " @@ -412,9 +411,12 @@ static int snd_pcm_update_hw_ptr0(struct snd_pcm_substream *substream, in_interrupt ? "[Q] " : "", (long)pos, (long)hdelta, (long)runtime->period_size, jdelta, - ((hdelta * HZ) / runtime->rate), delta, + ((hdelta * HZ) / runtime->rate), hw_base, (unsigned long)old_hw_ptr, (unsigned long)new_hw_ptr); + /* reset values to proper state */ + delta = 0; + hw_base = new_hw_ptr - (new_hw_ptr % runtime->buffer_size); } no_jiffies_check: if (delta > runtime->period_size + runtime->period_size / 2) {