diff --git a/src/main.rs b/src/main.rs index 7658b85..f264123 100644 --- a/src/main.rs +++ b/src/main.rs @@ -420,6 +420,7 @@ impl App { return; } + pwsp_output.unwrap().unlink(mic.unwrap()); pwsp_output.unwrap().link(mic.unwrap()); } } diff --git a/src/pw.rs b/src/pw.rs index 97455b4..995cbb8 100644 --- a/src/pw.rs +++ b/src/pw.rs @@ -25,15 +25,29 @@ pub struct OutputDevice { impl OutputDevice { pub fn link(&self, input_device: &InputDevice) { - let _ = Command::new("pw-link") + Command::new("pw-link") .arg(&self.output_fl) .arg(&input_device.input_fl) - .status(); + .status().ok(); - let _ = Command::new("pw-link") + Command::new("pw-link") .arg(&self.output_fr) .arg(&input_device.input_fr) - .status(); + .status().ok(); + } + + pub fn unlink(&self, input_device: &InputDevice) { + Command::new("pw-link") + .arg("--disconnect") + .arg(&self.output_fl) + .arg(&input_device.input_fl) + .status().ok(); + + Command::new("pw-link") + .arg("--disconnect") + .arg(&self.output_fr) + .arg(&input_device.input_fr) + .status().ok(); } }