paulster wrote:
> Okay, here's a segment from the start of the 500,000 lines of log I got
> in 5 seconds of it being disconnected!
>
> >
Code:
--------------------
> >
> ALSA lib pcm.c:7226:(snd_pcm_recover) cannot recovery from underrun,
prepare failed: Broken pipe
> [12:14:10.079503] output_thread:635 pcm wait error: Broken pipe
> ALSA lib pcm.c:7226:(snd_pcm_recover) cannot recovery from underrun,
prepare failed: Broken pipe
> [12:14:10.084863] output_thread:589 XRUN recover failed: Broken pipe
> ALSA lib pcm.c:7226:(snd_pcm_recover) cannot recovery from underrun,
prepare failed: Broken pipe
> [12:14:10.089892] output_thread:589 XRUN recover failed: Broken pipe
> ALSA lib pcm.c:7226:(snd_pcm_recover) cannot recovery from underrun,
prepare failed: Broken pipe
> [12:14:10.094960] output_thread:589 XRUN recover failed: Broken pipe
>
> <snip>
>
> ALSA lib pcm.c:7226:(snd_pcm_recover) cannot recovery from underrun,
prepare failed: Broken pipe
> [12:14:11.397027] output_thread:589 XRUN recover failed: Broken pipe
> ALSA lib pcm.c:7226:(snd_pcm_recover) cannot recovery from underrun,
prepare failed: Broken pipe
> [12:14:11.402041] output_thread:589 XRUN recover failed: Broken pipe
> ALSA lib pcm.c:7226:(snd_pcm_recover) cannot recovery from underrun,
prepare failed: Broken pipe
> [12:14:11.463619] output_thread:589 XRUN recover failed: Broken pipe
> [12:14:11.463709] output_thread:608 start error: No such device
> [12:14:11.463784] output_thread:635 pcm wait error: Input/output error
> [12:14:11.463844] output_thread:608 start error: No such device
> [12:14:11.463908] output_thread:635 pcm wait error: Input/output error
> [12:14:11.463966] output_thread:608 start error: No such device
> [12:14:11.464029] output_thread:635 pcm wait error: Input/output error
> [12:14:11.464086] output_thread:608 start error: No such device
> [12:14:11.464149] output_thread:635 pcm wait error: Input/output error
--------------------
> >
Could you try:
Code:
--------------------
diff --git a/output.c b/output.c
index e5178fd..5f34dcf 100644
--- a/output.c
+++ b/output.c
@@ -586,7 +586,15 @@ static void *output_thread(void *arg) {
if (state == SND_PCM_STATE_XRUN) {
LOG_INFO("XRUN");
if ((err = snd_pcm_recover(pcmp, -EPIPE, 1)) < 0) {
- LOG_WARN("XRUN recover failed: %s",
snd_strerror(err));
+ if (err == -ENODEV) {
+ LOG_INFO("Device %s no longer
available", output.device);
+ alsa_close(pcmp);
+ pcmp = NULL;
+ probe_device = true;
+ continue;
+ } else {
+ LOG_WARN("XRUN recover failed: %s",
snd_strerror(err));
+ }
}
start = true;
continue;
--------------------
------------------------------------------------------------------------
Triode's Profile: http://forums.slimdevices.com/member.php?userid=17
View this thread: http://forums.slimdevices.com/showthread.php?t=97046
_______________________________________________
unix mailing list
[email protected]
http://lists.slimdevices.com/mailman/listinfo/unix