Skip to content
  • elboulangero's avatar
    Fix xrun_recovery in ALSA clients. · 08233661
    elboulangero authored
    According to the ALSA documentation, snd_pcm_readi() returns -ESTRPIPE
    when a suspend event occured. But xrun_recovery() checks for -EAGAIN
    instead.
    
    If the ALSA client is connected to the ALSA loopback device, it leads to
    an infinite loop in the client when the computer is resumed from sleep.
    The client takes up to 99% of the CPU resources.
    
    The problem is fixed by a proper error checking of snd_pcm_readi().
    
    A word of caution however: on kernels prior to 3.8, it will trigger a
    bug in the snd-aloop driver, and may lead to a kernel oops.
    The kernel fix can be found there:
    http://www.spinics.net/lists/stable-commits/msg23379.html
    
    
    
    Signed-off-by: default avatarelboulangero <elboulangero@gmail.com>
    08233661