Skip to content

Commit

Permalink
LibAudio: Remove an unnecessary copy of sample buffers before sending…
Browse files Browse the repository at this point in the history
… them.

I missed this earlier, but *now* we're actually using the same SharedBuffer
all the way from client-side WAV reading to server-side mixing. :^)
  • Loading branch information
awesomekling committed Jul 27, 2019
1 parent b98c772 commit de3d1f2
Show file tree
Hide file tree
Showing 2 changed files with 3 additions and 10 deletions.
1 change: 1 addition & 0 deletions Libraries/LibAudio/ABuffer.h
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,7 @@ class ABuffer : public RefCounted<ABuffer> {
const void* data() const { return m_buffer->data(); }
int size_in_bytes() const { return m_buffer->size(); }
int shared_buffer_id() const { return m_buffer->shared_buffer_id(); }
SharedBuffer& shared_buffer() { return *m_buffer; }

private:
explicit ABuffer(Vector<ASample>&& samples)
Expand Down
12 changes: 2 additions & 10 deletions Libraries/LibAudio/AClientConnection.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -19,17 +19,9 @@ void AClientConnection::handshake()

void AClientConnection::play(const ABuffer& buffer, bool block)
{
auto shared_buf = SharedBuffer::create_with_size(buffer.size_in_bytes());
if (!shared_buf) {
dbg() << "Failed to create a shared buffer!";
return;
}

memcpy(shared_buf->data(), buffer.data(), buffer.size_in_bytes());
shared_buf->seal();
shared_buf->share_with(server_pid());
const_cast<ABuffer&>(buffer).shared_buffer().share_with(server_pid());
ASAPI_ClientMessage request;
request.type = ASAPI_ClientMessage::Type::PlayBuffer;
request.play_buffer.buffer_id = shared_buf->shared_buffer_id();
request.play_buffer.buffer_id = buffer.shared_buffer_id();
sync_request(request, block ? ASAPI_ServerMessage::Type::FinishedPlayingBuffer : ASAPI_ServerMessage::Type::PlayingBuffer);
}

0 comments on commit de3d1f2

Please sign in to comment.