summaryrefslogtreecommitdiff
path: root/Userland/Services/AudioServer
diff options
context:
space:
mode:
authorElyse <kevincristian@outlook.com>2021-11-01 19:05:05 -0600
committerBrian Gianforcaro <b.gianfo@gmail.com>2021-12-24 00:19:01 -0800
commitbb747c471f454e794200a2ef536d8e0f4803ba27 (patch)
tree632e0f8fe7224ea01483c08ab63c0ee57836f291 /Userland/Services/AudioServer
parentce5f5f543fe437a3d0b2aad5f7d1810a9a081eba (diff)
downloadserenity-bb747c471f454e794200a2ef536d8e0f4803ba27.zip
AudioServer: Add a 'self_muted' state to each client connection
This new state will allow us to ignore muted clients when computing the 'output mix' in the Mixer.
Diffstat (limited to 'Userland/Services/AudioServer')
-rw-r--r--Userland/Services/AudioServer/AudioServer.ipc2
-rw-r--r--Userland/Services/AudioServer/ClientConnection.cpp14
-rw-r--r--Userland/Services/AudioServer/ClientConnection.h2
3 files changed, 18 insertions, 0 deletions
diff --git a/Userland/Services/AudioServer/AudioServer.ipc b/Userland/Services/AudioServer/AudioServer.ipc
index 21990774f6..0c7d24ddfc 100644
--- a/Userland/Services/AudioServer/AudioServer.ipc
+++ b/Userland/Services/AudioServer/AudioServer.ipc
@@ -5,6 +5,8 @@ endpoint AudioServer
// Mixer functions
set_main_mix_muted(bool muted) => ()
is_main_mix_muted() => (bool muted)
+ set_self_muted(bool muted) => ()
+ is_self_muted() => (bool muted)
get_main_mix_volume() => (double volume)
set_main_mix_volume(double volume) => ()
get_self_volume() => (double volume)
diff --git a/Userland/Services/AudioServer/ClientConnection.cpp b/Userland/Services/AudioServer/ClientConnection.cpp
index 5e09395643..825413726e 100644
--- a/Userland/Services/AudioServer/ClientConnection.cpp
+++ b/Userland/Services/AudioServer/ClientConnection.cpp
@@ -149,4 +149,18 @@ void ClientConnection::set_main_mix_muted(bool muted)
{
m_mixer.set_muted(muted);
}
+
+Messages::AudioServer::IsSelfMutedResponse ClientConnection::is_self_muted()
+{
+ if (m_queue)
+ return m_queue->is_muted();
+
+ return false;
+}
+
+void ClientConnection::set_self_muted(bool muted)
+{
+ if (m_queue)
+ m_queue->set_muted(muted);
+}
}
diff --git a/Userland/Services/AudioServer/ClientConnection.h b/Userland/Services/AudioServer/ClientConnection.h
index bdee772a0e..878c4bebd3 100644
--- a/Userland/Services/AudioServer/ClientConnection.h
+++ b/Userland/Services/AudioServer/ClientConnection.h
@@ -49,6 +49,8 @@ private:
virtual Messages::AudioServer::GetPlayingBufferResponse get_playing_buffer() override;
virtual Messages::AudioServer::IsMainMixMutedResponse is_main_mix_muted() override;
virtual void set_main_mix_muted(bool) override;
+ virtual Messages::AudioServer::IsSelfMutedResponse is_self_muted() override;
+ virtual void set_self_muted(bool) override;
virtual void set_sample_rate(u32 sample_rate) override;
virtual Messages::AudioServer::GetSampleRateResponse get_sample_rate() override;