diff --git a/src/bin/daemon.rs b/src/bin/daemon.rs index a2ae678..f35e431 100644 --- a/src/bin/daemon.rs +++ b/src/bin/daemon.rs @@ -27,6 +27,16 @@ async fn main() -> Result<(), Box> { get_daemon_config(); // Initialize daemon config create_virtual_mic()?; get_audio_player().await; // Initialize audio player + + let max_retries = 5; + for i in 0..=max_retries { + match link_player_to_virtual_mic().await { + Ok(_) => break, + Err(e) => println!("{e}\t{i}/{max_retries}"), + } + + sleep(Duration::from_millis(300 * i)).await; + } link_player_to_virtual_mic().await?; let runtime_dir = get_runtime_dir(); diff --git a/src/utils/daemon.rs b/src/utils/daemon.rs index f109f80..e51a939 100644 --- a/src/utils/daemon.rs +++ b/src/utils/daemon.rs @@ -39,16 +39,16 @@ pub async fn link_player_to_virtual_mic() -> Result<(), Box> { if let Ok(device) = get_device("pwsp-daemon").await { pwsp_daemon_output = device; } else { - eprintln!("Could not find alsa_playback.pwsp-daemon device, skipping device linking"); - return Ok(()); + return Err( + "Could not find alsa_playback.pwsp-daemon device, skipping device linking".into(), + ); } let pwsp_daemon_input; if let Ok(device) = get_device("pwsp-virtual-mic").await { pwsp_daemon_input = device; } else { - eprintln!("Could not find pwsp-virtual-mic device, skipping device linking"); - return Ok(()); + return Err("Could not find pwsp-virtual-mic device, skipping device linking".into()); } let output_fl = pwsp_daemon_output