From 20d9a26dbbbec32aa7c9da49b979f201bd7104b9 Mon Sep 17 00:00:00 2001
From: Jaroslav Kysela <perex@perex.cz>
Date: Thu, 30 Sep 2010 00:16:50 +0200
Subject: ALSA: snd-aloop - fix capture buffer silence

In a special case, some old samples are left in the capture ring buffer.
Fix it.

Signed-off-by: Jaroslav Kysela <perex@perex.cz>
---
 sound/drivers/aloop.c | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/sound/drivers/aloop.c b/sound/drivers/aloop.c
index f2b8f868d97a..2748fee8d405 100644
--- a/sound/drivers/aloop.c
+++ b/sound/drivers/aloop.c
@@ -347,7 +347,7 @@ static void copy_play_buf(struct loopback_pcm *play,
 			  unsigned int bytes)
 {
 	struct snd_pcm_runtime *runtime = play->substream->runtime;
-	char *src = play->substream->runtime->dma_area;
+	char *src = runtime->dma_area;
 	char *dst = capt->substream->runtime->dma_area;
 	unsigned int src_off = play->buf_pos;
 	unsigned int dst_off = capt->buf_pos;
@@ -385,8 +385,10 @@ static void copy_play_buf(struct loopback_pcm *play,
 		dst_off = (dst_off + size) % capt->pcm_buffer_size;
 	}
 
-	if (clear_bytes > 0)
+	if (clear_bytes > 0) {
 		clear_capture_buf(capt, clear_bytes);
+		capt->silent_size = 0;
+	}
 }
 
 #define BYTEPOS_UPDATE_POSONLY	0
-- 
cgit v1.2.1