This seems more friendly to user-space, as it's notified at least as
an error, instead of forcibly moving the PCM state to SETUP out of
sudden.
Moreover, snd_pcm_stop() needs an extra PCM spinlock I forgot, while
snd_pcm_stop_xrun() takes the spinlock by itself.
Signed-off-by: Takashi Iwai <tiwai@suse.de>
dev_dbg(intelhaddata->dev,
"Force to stop the active stream by disconnection\n");
/* Set runtime->state to hw_params done */
- snd_pcm_stop(substream, SNDRV_PCM_STATE_SETUP);
+ snd_pcm_stop_xrun(substream);
had_substream_put(intelhaddata);
}
/* Report to above ALSA layer */
if (substream)
- snd_pcm_stop(substream, SNDRV_PCM_STATE_SETUP);
+ snd_pcm_stop_xrun(substream);
out:
snd_jack_report(intelhaddata->jack, 0);