diff --git a/src/components/base/utils.rs b/src/components/base/utils.rs index 0cb42f5..8920b88 100644 --- a/src/components/base/utils.rs +++ b/src/components/base/utils.rs @@ -392,6 +392,8 @@ pub fn start_audio_listener( return; } + let mut conn = start_dbus_audio_listener(conn); + if sink_box.is_some() { conn = start_output_box_listener(conn, sink_box.unwrap()); } @@ -405,6 +407,7 @@ pub fn start_audio_listener( let _ = conn.process(Duration::from_millis(1000)); if !listeners.pulse_listener.load(Ordering::SeqCst) { println!("stopping audio listener"); + stop_dbus_audio_listener(conn); break; } // thread::sleep(Duration::from_millis(1000)); @@ -412,3 +415,22 @@ pub fn start_audio_listener( } }); } + +fn start_dbus_audio_listener(conn: Connection) -> Connection { + let proxy = conn.with_proxy( + "org.xetibo.ReSet", + "/org/xetibo/ReSet", + Duration::from_millis(1000), + ); + let _: Result<(), Error> = proxy.method_call("org.xetibo.ReSet", "StartAudioListener", ()); + conn +} + +fn stop_dbus_audio_listener(conn: Connection) { + let proxy = conn.with_proxy( + "org.xetibo.ReSet", + "/org/xetibo/ReSet", + Duration::from_millis(1000), + ); + let _: Result<(), Error> = proxy.method_call("org.xetibo.ReSet", "StopAudioListener", ()); +} diff --git a/src/components/window/handleSidebarClick.rs b/src/components/window/handleSidebarClick.rs index b2c3bed..f84ee7b 100644 --- a/src/components/window/handleSidebarClick.rs +++ b/src/components/window/handleSidebarClick.rs @@ -67,15 +67,15 @@ pub const HANDLE_AUDIO_CLICK: fn(Arc, FlowBox) = listeners.stop_network_listener(); listeners.stop_bluetooth_listener(); let audioOutput = Arc::new(SinkBox::new()); - populate_sinks(audioOutput.clone()); - let audioFrame = wrapInFrame(SettingBox::new(&*audioOutput)); let audioInput = Arc::new(SourceBox::new()); - populate_sources(audioInput.clone()); start_audio_listener( listeners.clone(), Some(audioOutput.clone()), Some(audioInput.clone()), ); + populate_sinks(audioOutput.clone()); + let audioFrame = wrapInFrame(SettingBox::new(&*audioOutput)); + populate_sources(audioInput.clone()); let sourceFrame = wrapInFrame(SettingBox::new(&*audioInput)); resetMain.remove_all(); resetMain.insert(&audioFrame, -1); @@ -88,8 +88,8 @@ pub const HANDLE_VOLUME_CLICK: fn(Arc, FlowBox) = listeners.stop_network_listener(); listeners.stop_bluetooth_listener(); let audioOutput = Arc::new(SinkBox::new()); - populate_sinks(audioOutput.clone()); start_audio_listener(listeners.clone(), Some(audioOutput.clone()), None); + populate_sinks(audioOutput.clone()); let audioFrame = wrapInFrame(SettingBox::new(&*audioOutput)); resetMain.remove_all(); resetMain.insert(&audioFrame, -1); @@ -101,8 +101,8 @@ pub const HANDLE_MICROPHONE_CLICK: fn(Arc, FlowBox) = listeners.stop_network_listener(); listeners.stop_bluetooth_listener(); let audioInput = Arc::new(SourceBox::new()); - populate_sources(audioInput.clone()); start_audio_listener(listeners.clone(), None, Some(audioInput.clone())); + populate_sources(audioInput.clone()); let sourceFrame = wrapInFrame(SettingBox::new(&*audioInput)); resetMain.remove_all(); resetMain.insert(&sourceFrame, -1);