فهرست منبع

LibAudio: Expose blocking realtime enqueue to audio clients

This is just a delegate of the same function found in the shared queue
itself.
kleines Filmröllchen 2 سال پیش
والد
کامیت
cc9192a1e7
2فایلهای تغییر یافته به همراه7 افزوده شده و 0 حذف شده
  1. 6 0
      Userland/Libraries/LibAudio/ConnectionToServer.cpp
  2. 1 0
      Userland/Libraries/LibAudio/ConnectionToServer.h

+ 6 - 0
Userland/Libraries/LibAudio/ConnectionToServer.cpp

@@ -11,6 +11,7 @@
 #include <AK/Time.h>
 #include <AK/Types.h>
 #include <LibAudio/ConnectionToServer.h>
+#include <LibAudio/Queue.h>
 #include <LibAudio/UserSampleQueue.h>
 #include <LibCore/Event.h>
 #include <LibThreading/Mutex.h>
@@ -116,6 +117,11 @@ ErrorOr<void, AudioQueue::QueueStatus> ConnectionToServer::realtime_enqueue(Arra
     return m_buffer->try_enqueue(samples);
 }
 
+ErrorOr<void> ConnectionToServer::blocking_realtime_enqueue(Array<Sample, AUDIO_BUFFER_SIZE> samples, Function<void()> wait_function)
+{
+    return m_buffer->try_blocking_enqueue(samples, move(wait_function));
+}
+
 unsigned ConnectionToServer::total_played_samples() const
 {
     return m_buffer->weak_tail() * AUDIO_BUFFER_SIZE;

+ 1 - 0
Userland/Libraries/LibAudio/ConnectionToServer.h

@@ -45,6 +45,7 @@ public:
 
     // Returns immediately with the appropriate status if the buffer is full; use in conjunction with remaining_buffers to get low latency.
     ErrorOr<void, AudioQueue::QueueStatus> realtime_enqueue(Array<Sample, AUDIO_BUFFER_SIZE> samples);
+    ErrorOr<void> blocking_realtime_enqueue(Array<Sample, AUDIO_BUFFER_SIZE> samples, Function<void()> wait_function);
 
     // This information can be deducted from the shared audio buffer.
     unsigned total_played_samples() const;