diff --git a/src/components/wifi/wifi_box.rs b/src/components/wifi/wifi_box.rs index 3d41dd1..0cd9fb5 100644 --- a/src/components/wifi/wifi_box.rs +++ b/src/components/wifi/wifi_box.rs @@ -426,6 +426,11 @@ pub fn start_event_listener(listeners: Arc, wifi_box: Arc) { let imp = entry.1.imp(); let mut connected = imp.connected.borrow_mut(); *connected = imp.access_point.borrow().dbus_path == current_device.path; + if *connected { + imp.reset_wifi_connected.set_text("Connected"); + } else { + imp.reset_wifi_connected.set_text(""); + } } }); }); diff --git a/src/components/window/handle_sidebar_click.rs b/src/components/window/handle_sidebar_click.rs index 32354e3..77f8062 100644 --- a/src/components/window/handle_sidebar_click.rs +++ b/src/components/window/handle_sidebar_click.rs @@ -1,7 +1,9 @@ use gtk::prelude::FrameExt; use std::cell::RefCell; +use std::hint::spin_loop; use std::rc::Rc; use std::sync::Arc; +use std::sync::atomic::Ordering; use crate::components::base::setting_box::SettingBox; use crate::components::base::utils::{start_audio_listener, Listeners, Position}; @@ -73,10 +75,13 @@ pub const HANDLE_AUDIO_CLICK: fn(Arc, FlowBox, Rc>) let audio_output = Arc::new(SinkBox::new()); let audio_input = Arc::new(SourceBox::new()); start_audio_listener( - listeners, + listeners.clone(), Some(audio_output.clone()), Some(audio_input.clone()), ); + if !listeners.pulse_listener.load(Ordering::SeqCst) { + spin_loop(); + } populate_sinks(audio_output.clone()); populate_sources(audio_input.clone()); let sink_frame = wrap_in_flow_box_child(SettingBox::new(&*audio_output)); @@ -93,7 +98,10 @@ pub const HANDLE_VOLUME_CLICK: fn(Arc, FlowBox, Rc> return; } let audio_output = Arc::new(SinkBox::new()); - start_audio_listener(listeners, Some(audio_output.clone()), None); + start_audio_listener(listeners.clone(), Some(audio_output.clone()), None); + if !listeners.pulse_listener.load(Ordering::SeqCst) { + spin_loop(); + } populate_sinks(audio_output.clone()); let audio_frame = wrap_in_flow_box_child(SettingBox::new(&*audio_output)); reset_main.remove_all(); @@ -107,7 +115,10 @@ pub const HANDLE_MICROPHONE_CLICK: fn(Arc, FlowBox, Rc