using namespace tizen_media_audio;
static constexpr auto cond_wait_ms = 200ms;
+static constexpr auto writable_timeout_s = 5s;
/**
* class CAudioOutput
while (lengthIter > 0) {
size_t l;
+ unsigned int timeouts = 0;
while ((l = mpPulseAudioClient->getWritableSize()) == 0) {
#ifdef _AUDIO_IO_DEBUG_TIMING_
AUDIO_IO_LOGD("writableSize is [%zu].. wait", l);
#endif
std::unique_lock<std::mutex> cond_mutex(mCondMutex);
- mCond.wait_for(cond_mutex, cond_wait_ms);
+ if (mCond.wait_for(cond_mutex, cond_wait_ms) == std::cv_status::timeout) {
+//LCOV_EXCL_START
+ AUDIO_IO_LOGW("[%2u] timeout expired for waiting %lld ms of write available...", ++timeouts,
+ std::chrono::duration_cast<std::chrono::milliseconds>(cond_wait_ms).count());
+ if ((cond_wait_ms * timeouts) > writable_timeout_s)
+ THROW_ERROR_MSG_FORMAT(CAudioError::EError::ERROR_INTERNAL_OPERATION,
+ "writable size is 0 for more than %lld seconds...",
+ std::chrono::duration_cast<std::chrono::seconds>(writable_timeout_s).count());
+//LCOV_EXCL_STOP
+ }
}
if (l > lengthIter)