mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2024-09-21 02:08:12 +03:00
AudioServer: Let ASMixer notify ASClientConnection about finished buffers.
Instead of posting a message directly from ASMixer, notify the client via ASClientConnection::did_finish_playing_buffer().
This commit is contained in:
parent
dbebf10131
commit
6a0319697c
Notes:
sideshowbarker
2024-07-19 13:01:18 +09:00
Author: https://github.com/awesomekling Commit: https://github.com/SerenityOS/serenity/commit/6a0319697c5
@ -1,17 +1,17 @@
|
||||
#include "ASClientConnection.h"
|
||||
#include "ASMixer.h"
|
||||
|
||||
#include <LibCore/CEventLoop.h>
|
||||
#include <LibAudio/ASAPI.h>
|
||||
#include <LibAudio/ABuffer.h>
|
||||
#include <LibAudio/ASAPI.h>
|
||||
#include <LibCore/CEventLoop.h>
|
||||
#include <SharedBuffer.h>
|
||||
|
||||
#include <errno.h>
|
||||
#include <unistd.h>
|
||||
#include <sys/uio.h>
|
||||
#include <sys/types.h>
|
||||
#include <sys/socket.h>
|
||||
#include <stdio.h>
|
||||
#include <sys/socket.h>
|
||||
#include <sys/types.h>
|
||||
#include <sys/uio.h>
|
||||
#include <unistd.h>
|
||||
|
||||
ASClientConnection::ASClientConnection(CLocalSocket& client_socket, int client_id, ASMixer& mixer)
|
||||
: Connection(client_socket, client_id)
|
||||
@ -63,3 +63,10 @@ bool ASClientConnection::handle_message(const ASAPI_ClientMessage& message, cons
|
||||
return true;
|
||||
}
|
||||
|
||||
void ASClientConnection::did_finish_playing_buffer(Badge<ASMixer>, int buffer_id)
|
||||
{
|
||||
ASAPI_ServerMessage reply;
|
||||
reply.type = ASAPI_ServerMessage::Type::FinishedPlayingBuffer;
|
||||
reply.playing_buffer.buffer_id = buffer_id;
|
||||
post_message(reply);
|
||||
}
|
||||
|
@ -13,6 +13,8 @@ public:
|
||||
void send_greeting() override;
|
||||
bool handle_message(const ASAPI_ClientMessage&, const ByteBuffer&& = {}) override;
|
||||
|
||||
void did_finish_playing_buffer(Badge<ASMixer>, int buffer_id);
|
||||
|
||||
private:
|
||||
ASMixer& m_mixer;
|
||||
};
|
||||
|
@ -1,7 +1,6 @@
|
||||
#include <AK/BufferStream.h>
|
||||
#include <AudioServer/ASClientConnection.h>
|
||||
#include <AudioServer/ASMixer.h>
|
||||
#include <LibAudio/ASAPI.h>
|
||||
#include <LibCore/CThread.h>
|
||||
#include <limits>
|
||||
|
||||
@ -78,12 +77,8 @@ void ASMixer::mix()
|
||||
|
||||
// clear it later
|
||||
if (buffer.pos == sample_count) {
|
||||
if (buffer.m_client) {
|
||||
ASAPI_ServerMessage reply;
|
||||
reply.type = ASAPI_ServerMessage::Type::FinishedPlayingBuffer;
|
||||
reply.playing_buffer.buffer_id = buffer.buffer->shared_buffer_id();
|
||||
buffer.m_client->post_message(reply);
|
||||
}
|
||||
if (buffer.m_client)
|
||||
buffer.m_client->did_finish_playing_buffer({}, buffer.buffer->shared_buffer_id());
|
||||
buffer.done = true;
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user