aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorjmarshallnz <jcmarsha@gmail.com>2014-03-22 11:08:10 +1300
committerjmarshallnz <jcmarsha@gmail.com>2014-03-22 11:08:10 +1300
commit2ba680b57dcb1b74ee7de5003c9fbce6e12ffe31 (patch)
tree71bf0ee0e39b17bf3ff03e64d37c6363b12730f1
parent0a0b2e65e065bb8d6e92bb41f8b8965e35051c94 (diff)
parent3bdff4583ac8a7a77d2f3684af699ace6406b014 (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.cpp15
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;
+ }
}
}