From 71eb3a90dfba09813b0bfe11dab2fd63e58ca322 Mon Sep 17 00:00:00 2001 From: Scott Percival Date: Mon, 18 Apr 2022 20:34:35 +0800 Subject: [PATCH] fix(pulseaudio): mute the default audio source directly --- src/helper/audio/linux/pulseaudio/forward.cpp | 6 ++--- src/helper/audio/linux/pulseaudio/forward.hpp | 4 ++-- .../audio/linux/pulseaudio/pulseaudio.cpp | 22 +++++-------------- .../audio/linux/pulseaudio/pulseaudio.hpp | 3 +-- 4 files changed, 11 insertions(+), 24 deletions(-) diff --git a/src/helper/audio/linux/pulseaudio/forward.cpp b/src/helper/audio/linux/pulseaudio/forward.cpp index 7348f62..79e4cb0 100644 --- a/src/helper/audio/linux/pulseaudio/forward.cpp +++ b/src/helper/audio/linux/pulseaudio/forward.cpp @@ -37,7 +37,7 @@ bool Soundux::PulseApi::setup() load(context_move_sink_input_by_index); load(context_move_source_output_by_name); load(context_move_source_output_by_index); - load(context_set_sink_input_mute); + load(context_set_source_mute_by_name); load(context_unload_module); load(context_get_state); load(operation_get_state); @@ -69,7 +69,7 @@ bool Soundux::PulseApi::setup() load(context_move_sink_input_by_index); load(context_move_source_output_by_name); load(context_move_source_output_by_index); - load(context_set_sink_input_mute); + load(context_set_source_mute_by_name); load(context_unload_module); load(context_get_state); load(operation_get_state); @@ -86,4 +86,4 @@ bool Soundux::PulseApi::setup() #endif } -#endif \ No newline at end of file +#endif diff --git a/src/helper/audio/linux/pulseaudio/forward.hpp b/src/helper/audio/linux/pulseaudio/forward.hpp index fcbd850..62e406b 100644 --- a/src/helper/audio/linux/pulseaudio/forward.hpp +++ b/src/helper/audio/linux/pulseaudio/forward.hpp @@ -26,9 +26,9 @@ namespace Soundux pulse_forward_decl(context_get_server_info); pulse_forward_decl(context_set_state_callback); pulse_forward_decl(context_set_default_source); - pulse_forward_decl(context_set_sink_input_mute); pulse_forward_decl(context_get_module_info_list); pulse_forward_decl(context_move_sink_input_by_name); + pulse_forward_decl(context_set_source_mute_by_name); pulse_forward_decl(context_move_sink_input_by_index); pulse_forward_decl(context_get_sink_input_info_list); pulse_forward_decl(context_move_source_output_by_name); @@ -36,4 +36,4 @@ namespace Soundux pulse_forward_decl(context_move_source_output_by_index); } // namespace PulseApi } // namespace Soundux -#endif \ No newline at end of file +#endif diff --git a/src/helper/audio/linux/pulseaudio/pulseaudio.cpp b/src/helper/audio/linux/pulseaudio/pulseaudio.cpp index 92b1b2f..a90df1f 100644 --- a/src/helper/audio/linux/pulseaudio/pulseaudio.cpp +++ b/src/helper/audio/linux/pulseaudio/pulseaudio.cpp @@ -144,8 +144,7 @@ namespace Soundux::Objects fetchLoopBackSinkId(); - if (!nullSink || !loopBack || !loopBackSink || !passthrough || !passthroughSink || !passthroughLoopBack || - !defaultSourceId) + if (!nullSink || !loopBack || !loopBackSink || !passthrough || !passthroughSink || !passthroughLoopBack) { unloadLeftOvers(); return false; @@ -196,17 +195,6 @@ namespace Soundux::Objects } }, this)); - await(PulseApi::context_get_sink_input_info_list( - context, - []([[maybe_unused]] pa_context *ctx, const pa_sink_input_info *info, [[maybe_unused]] int eol, - void *userData) { - auto *thiz = reinterpret_cast(userData); - if (info && info->name == thiz->defaultSource) - { - thiz->defaultSourceId = info->index; - } - }, - this)); } void PulseAudio::fetchLoopBackSinkId() { @@ -644,8 +632,8 @@ namespace Soundux::Objects { bool success = false; - await(PulseApi::context_set_sink_input_mute( - context, *defaultSourceId, state, + await(PulseApi::context_set_source_mute_by_name( + context, defaultSource.c_str(), state, +[]([[maybe_unused]] pa_context *ctx, int success, void *userData) { *reinterpret_cast(userData) = success; }, @@ -653,7 +641,7 @@ namespace Soundux::Objects if (!success) { - Fancy::fancy.logTime().failure() << "Failed to mute loopback sink" << std::endl; + Fancy::fancy.logTime().failure() << "Failed to mute default source" << std::endl; } return success; @@ -743,4 +731,4 @@ namespace Soundux::Objects return rtn; } } // namespace Soundux::Objects -#endif \ No newline at end of file +#endif diff --git a/src/helper/audio/linux/pulseaudio/pulseaudio.hpp b/src/helper/audio/linux/pulseaudio/pulseaudio.hpp index 30bd72c..b450c7e 100644 --- a/src/helper/audio/linux/pulseaudio/pulseaudio.hpp +++ b/src/helper/audio/linux/pulseaudio/pulseaudio.hpp @@ -49,7 +49,6 @@ namespace Soundux std::string serverName; std::string defaultSource; - std::optional defaultSourceId; std::map movedApplications; std::map movedPassthroughApplications; @@ -99,4 +98,4 @@ namespace Soundux }; } // namespace Objects } // namespace Soundux -#endif \ No newline at end of file +#endif