mirror of
https://github.com/arabianq/pipewire-soundpad.git
synced 2026-06-19 12:13:32 +00:00
2a56e1db6b
Replaces the previous approach of spawning new PipeWire main loops and awaiting a 100ms timeout for every `get_all_devices` call. Instead, this introduces a `PipeWireManager` which maintains a single, persistent background thread with a PipeWire main loop and registry listener. The actor caches `AudioDevice`s and `Port`s continuously in a `HashMap`, providing instantaneous responses to device queries via a channel. This architectural change replaces `Sender<Terminate>` with a simple `PwTerminator` drop-guard to manage the lifetimes of PipeWire objects (virtual mic and links) via `PwCommand::DestroyObject` without creating additional OS threads or PipeWire contexts. Co-authored-by: arabianq <55220741+arabianq@users.noreply.github.com>