From fbd1489c7b14a6f05e86fb334e47e20db9613732 Mon Sep 17 00:00:00 2001 From: Ian Douglas Scott Date: Tue, 2 Apr 2024 14:08:12 -0700 Subject: [PATCH] audio: Set source/sink mute state Setting the volume to a non-zero value will unmute the source or sink, and setting it to zero will mute it. This matches the behavior on Gnome. --- cosmic-applet-audio/src/pulse.rs | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/cosmic-applet-audio/src/pulse.rs b/cosmic-applet-audio/src/pulse.rs index 371d7b72..5d4d2592 100644 --- a/cosmic-applet-audio/src/pulse.rs +++ b/cosmic-applet-audio/src/pulse.rs @@ -631,6 +631,11 @@ impl PulseServer { } fn set_sink_volume_by_name(&mut self, name: &str, volume: &ChannelVolumes) { + let op = self + .introspector + .set_sink_mute_by_name(name, volume.is_muted(), None); + self.wait_for_result(op).ok(); + let op = self .introspector .set_sink_volume_by_name(name, volume, None); @@ -638,10 +643,15 @@ impl PulseServer { } fn set_source_volume_by_name(&mut self, name: &str, volume: &ChannelVolumes) { + let op = self + .introspector + .set_source_mute_by_name(name, volume.is_muted(), None); + let _ = self.wait_for_result(op); + let op = self .introspector .set_source_volume_by_name(name, volume, None); - self.wait_for_result(op).ok(); + let _ = self.wait_for_result(op); } fn get_source_outputs(&mut self, source: u32) -> Vec { @@ -654,7 +664,7 @@ impl PulseServer { } } }); - self.wait_for_result(op).ok(); + let _ = self.wait_for_result(op); result_ref.replace(Vec::new()) } @@ -668,7 +678,7 @@ impl PulseServer { } } }); - self.wait_for_result(op).ok(); + let _ = self.wait_for_result(op); result_ref.replace(Vec::new()) }