Commit ed69c6a8 authored by Jaroslav Kysela's avatar Jaroslav Kysela

ALSA: pcm_lib - fix wrong delta print for jiffies check

The previous jiffies delta was 0 in all cases. Use hw_ptr variable to
store and print original value.
Signed-off-by: default avatarJaroslav Kysela <perex@perex.cz>
parent c4cfe66c
...@@ -394,6 +394,7 @@ static int snd_pcm_update_hw_ptr0(struct snd_pcm_substream *substream, ...@@ -394,6 +394,7 @@ static int snd_pcm_update_hw_ptr0(struct snd_pcm_substream *substream,
+ HZ/100); + HZ/100);
/* move new_hw_ptr according jiffies not pos variable */ /* move new_hw_ptr according jiffies not pos variable */
new_hw_ptr = old_hw_ptr; new_hw_ptr = old_hw_ptr;
hw_base = delta;
/* use loop to avoid checks for delta overflows */ /* use loop to avoid checks for delta overflows */
/* the delta value is small or zero in most cases */ /* the delta value is small or zero in most cases */
while (delta > 0) { while (delta > 0) {
...@@ -403,8 +404,6 @@ static int snd_pcm_update_hw_ptr0(struct snd_pcm_substream *substream, ...@@ -403,8 +404,6 @@ static int snd_pcm_update_hw_ptr0(struct snd_pcm_substream *substream,
delta--; delta--;
} }
/* align hw_base to buffer_size */ /* 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_error(substream,
"hw_ptr skipping! %s" "hw_ptr skipping! %s"
"(pos=%ld, delta=%ld, period=%ld, " "(pos=%ld, delta=%ld, period=%ld, "
...@@ -412,9 +411,12 @@ static int snd_pcm_update_hw_ptr0(struct snd_pcm_substream *substream, ...@@ -412,9 +411,12 @@ static int snd_pcm_update_hw_ptr0(struct snd_pcm_substream *substream,
in_interrupt ? "[Q] " : "", in_interrupt ? "[Q] " : "",
(long)pos, (long)hdelta, (long)pos, (long)hdelta,
(long)runtime->period_size, jdelta, (long)runtime->period_size, jdelta,
((hdelta * HZ) / runtime->rate), delta, ((hdelta * HZ) / runtime->rate), hw_base,
(unsigned long)old_hw_ptr, (unsigned long)old_hw_ptr,
(unsigned long)new_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: no_jiffies_check:
if (delta > runtime->period_size + runtime->period_size / 2) { if (delta > runtime->period_size + runtime->period_size / 2) {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment