From 71ed07a1d09ea3f714921837a15b371e693ba4a3 Mon Sep 17 00:00:00 2001 From: badaix Date: Sat, 1 Feb 2020 23:23:06 +0100 Subject: [PATCH] Check result of snd_pcm_avail_delay --- client/player/alsa_player.cpp | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/client/player/alsa_player.cpp b/client/player/alsa_player.cpp index 8cba8e85..2f5d2f52 100644 --- a/client/player/alsa_player.cpp +++ b/client/player/alsa_player.cpp @@ -222,11 +222,18 @@ void AlsaPlayer::worker() continue; } - snd_pcm_avail_delay(handle_, &framesAvail, &framesDelay); - chronos::usec delay((chronos::usec::rep)(1000 * (double)framesDelay / format.msRate())); - // LOG(INFO) << "delay: " << framesDelay << ", delay[ms]: " << delay.count() / 1000 << "\n"; + int result = snd_pcm_avail_delay(handle_, &framesAvail, &framesDelay); + if (result < 0) + { + LOG(WARNING) << "snd_pcm_avail_delay failed: " << snd_strerror(result) << "\n"; + this_thread::sleep_for(10ms); + continue; + } - if (buffer_.size() < framesAvail * format.frameSize) + chronos::usec delay((chronos::usec::rep)(1000 * (double)framesDelay / format.msRate())); + // LOG(TRACE) << "delay: " << framesDelay << ", delay[ms]: " << delay.count() / 1000 << ", avail: " << framesAvail << "\n"; + + if (buffer_.size() < static_cast(framesAvail * format.frameSize)) buffer_.resize(framesAvail * format.frameSize); if (stream_->getPlayerChunk(buffer_.data(), delay, framesAvail)) {