|
|
|
@ -282,11 +282,19 @@ u64 SinkStream::GetExpectedPlayedSampleCount() { |
|
|
|
void SinkStream::WaitFreeSpace(std::stop_token stop_token) { |
|
|
|
std::unique_lock lk{release_mutex}; |
|
|
|
release_cv.wait_for(lk, std::chrono::milliseconds(5), |
|
|
|
[this]() { return queued_buffers < max_queue_size; }); |
|
|
|
[this]() { return paused || queued_buffers < max_queue_size; }); |
|
|
|
if (queued_buffers > max_queue_size + 3) { |
|
|
|
Common::CondvarWait(release_cv, lk, stop_token, |
|
|
|
[this] { return queued_buffers < max_queue_size; }); |
|
|
|
[this] { return paused || queued_buffers < max_queue_size; }); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
void SinkStream::SignalPause() { |
|
|
|
{ |
|
|
|
std::scoped_lock lk{release_mutex}; |
|
|
|
paused = true; |
|
|
|
} |
|
|
|
release_cv.notify_one(); |
|
|
|
} |
|
|
|
|
|
|
|
} // namespace AudioCore::Sink
|