feat(screenshare): integrate desktop audio exclusion

This commit is contained in:
2026-08-21 22:12:48 -04:00
parent ba96e59db0
commit 2c2b861516
7 changed files with 848 additions and 137 deletions
+11 -6
View File
@@ -33,12 +33,17 @@ const NODE_READY_TIMEOUT: Duration = Duration::from_secs(3);
/// Owns a loaded `module-echo-cancel` instance; unloads it on drop so the virtual
/// nodes never leak past the call that created them.
pub struct EchoCancelGuard {
module_index: String,
module_index: u64,
source_name: String,
sink_name: String,
}
impl EchoCancelGuard {
/// The pactl module identity PixelPass validates in desktop-excluding mode.
pub fn module_index(&self) -> u64 {
self.module_index
}
pub fn source_name(&self) -> &str {
&self.source_name
}
@@ -52,7 +57,7 @@ impl Drop for EchoCancelGuard {
fn drop(&mut self) {
let _ = Command::new("pactl")
.arg("unload-module")
.arg(&self.module_index)
.arg(self.module_index.to_string())
.output();
crate::log_msg(&format!(
"Echo cancel: unloaded module {}",
@@ -103,10 +108,10 @@ pub fn enable(
));
}
let module_index = String::from_utf8_lossy(&out.stdout).trim().to_string();
if module_index.parse::<u64>().is_err() {
return Err(format!("unexpected pactl output: {module_index:?}"));
}
let raw_module_index = String::from_utf8_lossy(&out.stdout).trim().to_string();
let module_index = raw_module_index
.parse::<u64>()
.map_err(|_| format!("unexpected pactl output: {raw_module_index:?}"))?;
let guard = EchoCancelGuard {
module_index,
source_name,