LibAudio: Add ClientConnection::async_enqueue()

async_enqueue() is a wrapper over the async_enqueue_buffer() call
to AudioServer. This allows users to asyncronously enqueue audio
samples, when the program requires non-blocking audio streaming.

This also makes ClientConnection use east-const everywhere.
This commit is contained in:
kleines Filmröllchen 2021-07-05 14:40:02 +02:00 committed by Andreas Kling
parent c8ced9f11d
commit 9d00db618d
Notes: sideshowbarker 2024-07-18 10:21:57 +09:00
2 changed files with 10 additions and 4 deletions

View file

@ -14,7 +14,7 @@ ClientConnection::ClientConnection()
{ {
} }
void ClientConnection::enqueue(const Buffer& buffer) void ClientConnection::enqueue(Buffer const& buffer)
{ {
for (;;) { for (;;) {
auto success = enqueue_buffer(buffer.anonymous_buffer(), buffer.id(), buffer.sample_count()); auto success = enqueue_buffer(buffer.anonymous_buffer(), buffer.id(), buffer.sample_count());
@ -26,7 +26,12 @@ void ClientConnection::enqueue(const Buffer& buffer)
} }
} }
bool ClientConnection::try_enqueue(const Buffer& buffer) void ClientConnection::async_enqueue(Buffer const& buffer)
{
async_enqueue_buffer(buffer.anonymous_buffer(), buffer.id(), buffer.sample_count());
}
bool ClientConnection::try_enqueue(Buffer const& buffer)
{ {
return enqueue_buffer(buffer.anonymous_buffer(), buffer.id(), buffer.sample_count()); return enqueue_buffer(buffer.anonymous_buffer(), buffer.id(), buffer.sample_count());
} }

View file

@ -21,8 +21,9 @@ class ClientConnection final
public: public:
ClientConnection(); ClientConnection();
void enqueue(const Buffer&); void enqueue(Buffer const&);
bool try_enqueue(const Buffer&); bool try_enqueue(Buffer const&);
void async_enqueue(Buffer const&);
Function<void(i32 buffer_id)> on_finish_playing_buffer; Function<void(i32 buffer_id)> on_finish_playing_buffer;
Function<void(bool muted)> on_muted_state_change; Function<void(bool muted)> on_muted_state_change;