From a98de0b6eea3e5671ad767a6b6f434232f1b7a17 Mon Sep 17 00:00:00 2001 From: Andreas Kling Date: Wed, 4 Sep 2019 20:12:24 +0200 Subject: [PATCH] LibAudio: Add AClientConnetion::try_enqueue() API This is a variant of the enqueue() API that returns immediately and may fail. It's useful when you don't want to block until the audio server can receive your sample buffer. --- Libraries/LibAudio/AClientConnection.cpp | 7 +++++++ Libraries/LibAudio/AClientConnection.h | 1 + 2 files changed, 8 insertions(+) diff --git a/Libraries/LibAudio/AClientConnection.cpp b/Libraries/LibAudio/AClientConnection.cpp index 3cd78c0aa8..3d9c46405d 100644 --- a/Libraries/LibAudio/AClientConnection.cpp +++ b/Libraries/LibAudio/AClientConnection.cpp @@ -25,6 +25,13 @@ void AClientConnection::enqueue(const ABuffer& buffer) } } +bool AClientConnection::try_enqueue(const ABuffer& buffer) +{ + const_cast(buffer).shared_buffer().share_with(server_pid()); + auto response = send_sync(buffer.shared_buffer_id()); + return response->success(); +} + int AClientConnection::get_main_mix_volume() { return send_sync()->volume(); diff --git a/Libraries/LibAudio/AClientConnection.h b/Libraries/LibAudio/AClientConnection.h index 1978a7f00d..95e406fd20 100644 --- a/Libraries/LibAudio/AClientConnection.h +++ b/Libraries/LibAudio/AClientConnection.h @@ -12,6 +12,7 @@ public: virtual void handshake() override; void enqueue(const ABuffer&); + bool try_enqueue(const ABuffer&); int get_main_mix_volume(); void set_main_mix_volume(int);