|
@@ -971,19 +971,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);
|
|
|
}
|
|
|
|