summaryrefslogtreecommitdiffstats
path: root/src/audio_core/sink/sink_stream.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/audio_core/sink/sink_stream.h')
-rw-r--r--src/audio_core/sink/sink_stream.h9
1 files changed, 9 insertions, 0 deletions
diff --git a/src/audio_core/sink/sink_stream.h b/src/audio_core/sink/sink_stream.h
index 2340c936c..709f3b0ec 100644
--- a/src/audio_core/sink/sink_stream.h
+++ b/src/audio_core/sink/sink_stream.h
@@ -16,6 +16,7 @@
#include "common/reader_writer_queue.h"
#include "common/ring_buffer.h"
#include "common/thread.h"
+#include "common/polyfill_thread.h"
namespace Core {
class System;
@@ -219,6 +220,11 @@ public:
*/
u64 GetExpectedPlayedSampleCount();
+ /**
+ * Waits for free space in the sample ring buffer
+ */
+ void WaitFreeSpace();
+
protected:
/// Core system
Core::System& system;
@@ -258,6 +264,9 @@ private:
f32 system_volume{1.0f};
/// Set via IAudioDevice service calls
f32 device_volume{1.0f};
+ /// Signalled when ring buffer entries are consumed
+ std::condition_variable release_cv;
+ std::mutex release_mutex;
std::mutex stall_guard;
std::unique_lock<std::mutex> stalled_lock;
};