diff options
author | jmarshallnz <jcmarsha@gmail.com> | 2014-03-22 11:08:10 +1300 |
---|---|---|
committer | jmarshallnz <jcmarsha@gmail.com> | 2014-03-22 11:08:10 +1300 |
commit | 2ba680b57dcb1b74ee7de5003c9fbce6e12ffe31 (patch) | |
tree | 71bf0ee0e39b17bf3ff03e64d37c6363b12730f1 | |
parent | 0a0b2e65e065bb8d6e92bb41f8b8965e35051c94 (diff) | |
parent | 3bdff4583ac8a7a77d2f3684af699ace6406b014 (diff) |
Merge pull request #4443 from at-visions/GothamAlsaRecover
Added error recovery if snd_pcm_writei fails
-rw-r--r-- | xbmc/cores/AudioEngine/Sinks/AESinkALSA.cpp | 15 |
1 files changed, 10 insertions, 5 deletions
diff --git a/xbmc/cores/AudioEngine/Sinks/AESinkALSA.cpp b/xbmc/cores/AudioEngine/Sinks/AESinkALSA.cpp index c4f59a8218..8729d811e4 100644 --- a/xbmc/cores/AudioEngine/Sinks/AESinkALSA.cpp +++ b/xbmc/cores/AudioEngine/Sinks/AESinkALSA.cpp @@ -531,12 +531,17 @@ unsigned int CAESinkALSA::AddPackets(uint8_t *data, unsigned int frames, bool ha int ret = snd_pcm_writei(m_pcm, (void*)data, frames); if (ret < 0) { - HandleError("snd_pcm_writei(1)", ret); - ret = snd_pcm_writei(m_pcm, (void*)data, frames); - if (ret < 0) + CLog::Log(LOGERROR, "CAESinkALSA - snd_pcm_writei(%d) %s - trying to recover", ret, snd_strerror(ret)); + ret = snd_pcm_recover(m_pcm, ret, 1); + if(ret < 0) { - HandleError("snd_pcm_writei(2)", ret); - ret = 0; + HandleError("snd_pcm_writei(1)", ret); + ret = snd_pcm_writei(m_pcm, (void*)data, frames); + if (ret < 0) + { + HandleError("snd_pcm_writei(2)", ret); + ret = 0; + } } } |