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

Reply via email to