Windows compat quick wins: echo-cancel UI gate, pixelpass .exe, cfg tighten (W5/W6/W9)
Three Windows-compatibility fixes from the Codex review. Implemented by Codex (gpt-5.5); reviewed and committed by Claude. W5 — echo cancellation is a Linux/PipeWire feature, but the toggle was shown and live on Windows, so a Windows join tried `pactl` and errored before falling back. Now `#[cfg(target_os = "linux")]` gates the core enable path (and the ActiveSession guard field); on other targets the Settings + in-call controls render as a disabled checkbox with a "not available on Windows yet" note. W6 — pixelpass PATH lookup only tried `pixelpass`; on Windows it now also tries `pixelpass.exe` via a cfg-selected candidate list (+ unit test). W9 — the Linux audio stack (pipewire/pw_cli/echo_cancel/audio_probe + the `PlatformAudioBackend` alias and device-enum re-export) was gated `cfg(unix)`; tightened to `cfg(target_os = "linux")` so a hypothetical macOS build won't try to compile PipeWire. cpal stays `cfg(windows)`. Genuinely-Unix file/key permission code in lib.rs/identity.rs left as `cfg(unix)`. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
+7
-6
@@ -56,17 +56,18 @@ pub trait AudioBackend: Send + Sync {
|
||||
fn stop(&self) -> Result<(), AudioError>;
|
||||
}
|
||||
|
||||
pub mod echo_cancel;
|
||||
pub mod eq;
|
||||
pub mod gate;
|
||||
pub mod limiter;
|
||||
pub mod multitrack;
|
||||
pub mod pan;
|
||||
#[cfg(unix)]
|
||||
#[cfg(target_os = "linux")]
|
||||
pub mod echo_cancel;
|
||||
#[cfg(target_os = "linux")]
|
||||
pub mod pipewire_impl;
|
||||
#[cfg(windows)]
|
||||
pub mod cpal_impl;
|
||||
#[cfg(unix)]
|
||||
#[cfg(target_os = "linux")]
|
||||
pub mod pw_cli;
|
||||
pub mod recorder;
|
||||
|
||||
@@ -90,7 +91,7 @@ impl std::fmt::Display for AudioDevice {
|
||||
// Enumerate audio input/output devices for the pickers (sorted by description),
|
||||
// returning the same `AudioDevice` shape regardless of platform: PipeWire
|
||||
// (`pw-cli`) on Linux, cpal/WASAPI on Windows.
|
||||
#[cfg(unix)]
|
||||
#[cfg(target_os = "linux")]
|
||||
pub use pw_cli::enumerate_audio_devices;
|
||||
#[cfg(windows)]
|
||||
pub use cpal_impl::enumerate_audio_devices;
|
||||
@@ -102,9 +103,9 @@ pub use cpal_impl::enumerate_audio_devices;
|
||||
/// platform selection lives entirely here. Both implementations satisfy the
|
||||
/// [`AudioBackend`] trait, which is the only interface the core talks to.
|
||||
///
|
||||
/// - Linux/Unix → PipeWire ([`pipewire_impl::PipeWireBackend`]).
|
||||
/// - Linux → PipeWire ([`pipewire_impl::PipeWireBackend`]).
|
||||
/// - Windows → cpal/WASAPI ([`cpal_impl::CpalBackend`]).
|
||||
#[cfg(unix)]
|
||||
#[cfg(target_os = "linux")]
|
||||
pub type PlatformAudioBackend = pipewire_impl::PipeWireBackend;
|
||||
#[cfg(windows)]
|
||||
pub type PlatformAudioBackend = cpal_impl::CpalBackend;
|
||||
|
||||
Reference in New Issue
Block a user