From e7fbf8f4d841d402734539e1ded042f1be87cfa9 Mon Sep 17 00:00:00 2001 From: csd4ni3l Date: Sun, 15 Feb 2026 18:12:10 +0100 Subject: [PATCH] Fix a bunch of issues with the windows standard to virtual mic routing, fix all warnings for youtube_downloader and others --- src/main.rs | 14 ++++++++------ src/windows_lib.rs | 26 +++++++++++++------------- 2 files changed, 21 insertions(+), 19 deletions(-) diff --git a/src/main.rs b/src/main.rs index 0579084..99ef0bb 100644 --- a/src/main.rs +++ b/src/main.rs @@ -269,7 +269,7 @@ fn play_sound(file_path: String, app_state: &mut AppState) { app_state.currently_playing.push(playing_sound); } -fn create_virtual_mic_dropdown(ui: &mut Ui, mut app_state: &mut ResMut, available_width: f32, available_height: f32) { +fn create_virtual_mic_dropdown(ui: &mut Ui, app_state: &mut ResMut, available_width: f32, available_height: f32) { #[cfg(target_os = "linux")] { let outputs = app_state.virt_outputs.clone(); let output_index = app_state.virt_output_index.clone(); @@ -295,11 +295,13 @@ fn create_virtual_mic_dropdown(ui: &mut Ui, mut app_state: &mut ResMut return; } - - ui.add(egui::Button::new("Unsupported. Select inside apps.".to_string())); + #[allow(unreachable_code)] + { + ui.add(egui::Button::new("Unsupported. Select inside apps.".to_string())); + } } -fn main_ui(mut ctx: &Context, mut app_state: ResMut) { +fn main_ui(ctx: &Context, mut app_state: ResMut) { egui::SidePanel::right("tools").show(ctx, |ui| { ui.heading("Tools"); @@ -424,9 +426,9 @@ fn main_ui(mut ctx: &Context, mut app_state: ResMut) { }); } -fn youtube_downloader_ui(mut ctx: &Context, mut app_state: ResMut) { +fn youtube_downloader_ui(ctx: &Context, app_state: ResMut) { egui::CentralPanel::default().show(ctx, |ui| { - ui.heading("Coming Soon!"); + ui.heading(format!("Coming Soon! Currently on {} view.", app_state.current_view)); // view is only included here so there is no warning about app_state not being used. }); } diff --git a/src/windows_lib.rs b/src/windows_lib.rs index 815b08b..e99dd84 100644 --- a/src/windows_lib.rs +++ b/src/windows_lib.rs @@ -1,46 +1,46 @@ use rodio::{ OutputStream, OutputStreamBuilder, - cpal::{self, traits::DeviceTrait, traits::HostTrait}, + cpal::{self, traits::{DeviceTrait, StreamTrait, HostTrait}, StreamConfig, SampleRate}, }; use ringbuf::{traits::*, HeapRb}; -fn route_standard_to_virtual(virtual_mic: cpal::Device) { - let standard_mic = host.default_output_device(); +fn route_standard_to_virtual(host: &cpal::Host, virtual_mic: &cpal::Device) { + let standard_mic = host.default_input_device().expect("Could not get default input device."); let config = StreamConfig { channels: 2, sample_rate: SampleRate(48_000), buffer_size: cpal::BufferSize::Default, }; - let rb = HeapRb::::new(48_000 * 2); + let rb = HeapRb::::new(48_000 * 2); let (mut producer, mut consumer) = rb.split(); let input_stream = standard_mic.build_input_stream( &config, move |data: &[f32], _| { for &sample in data { - let _ = producer.push(sample); - let _ = producer.push(sample); + let _ = producer.try_push(sample); + let _ = producer.try_push(sample); } }, move |err| eprintln!("Input stream error: {err}"), None, - )?; + ).expect("Could not build input stream for standard to virtual mic routing"); let output_stream = virtual_mic.build_output_stream( &config, move |data: &mut [f32], _| { for sample in data { - *sample = consumer.pop().unwrap_or(0.0); + *sample = consumer.try_pop().unwrap_or(0.0); } }, move |err| eprintln!("Output stream error: {err}"), None, - )?; + ).expect("Could not build output stream for standard to virtual mic routing"); - input_stream.play()?; - output_stream.play()?; + input_stream.play(); + output_stream.play(); } pub fn create_virtual_mic_windows() -> (OutputStream, OutputStream) { @@ -59,7 +59,7 @@ pub fn create_virtual_mic_windows() -> (OutputStream, OutputStream) { }) .expect("Could not get VB Cable output device. Is VB Cable Driver installed?"); - route_standard_to_virtual(virtual_mic); + route_standard_to_virtual(&host, &virtual_mic); let normal_output = host .default_output_device() @@ -75,4 +75,4 @@ pub fn create_virtual_mic_windows() -> (OutputStream, OutputStream) { .open_stream() .expect("Failed to open stream"), ); -} +} \ No newline at end of file