[alsa-devel] [PATCH 6/8] ALSA: x86: Stop the stream when buffer is processed after disconnection
Takashi Iwai
tiwai at suse.de
Wed Feb 15 22:29:34 CET 2017
This shouldn't happen, but just to be sure...
Signed-off-by: Takashi Iwai <tiwai at suse.de>
---
sound/x86/intel_hdmi_audio.c | 9 ++++++---
1 file changed, 6 insertions(+), 3 deletions(-)
diff --git a/sound/x86/intel_hdmi_audio.c b/sound/x86/intel_hdmi_audio.c
index 97362233c326..2ed0a34bc19e 100644
--- a/sound/x86/intel_hdmi_audio.c
+++ b/sound/x86/intel_hdmi_audio.c
@@ -961,19 +961,22 @@ static void had_process_buffer_done(struct snd_intelhad *intelhaddata)
{
struct snd_pcm_substream *substream;
- if (!intelhaddata->connected)
- return; /* disconnected? - bail out */
-
substream = had_substream_get(intelhaddata);
if (!substream)
return; /* no stream? - bail out */
+ if (!intelhaddata->connected) {
+ snd_pcm_stop_xrun(substream);
+ goto out; /* disconnected? - bail out */
+ }
+
/* process or stop the stream */
if (had_process_ringbuf(substream, intelhaddata) < 0)
snd_pcm_stop_xrun(substream);
else
snd_pcm_period_elapsed(substream);
+ out:
had_substream_put(intelhaddata);
}
--
2.11.1
More information about the Alsa-devel
mailing list