From 4e9d98fddb1e13b9ed6409608f0a13fe575a4e81 Mon Sep 17 00:00:00 2001 From: Fabio Lenherr Date: Tue, 21 Nov 2023 13:59:16 +0100 Subject: [PATCH] feat: Allow audio listener to be deactivated --- Cargo.toml | 2 +- src/components/base/utils.rs | 22 +++++++++++++++++++++ src/components/window/handleSidebarClick.rs | 6 +++--- 3 files changed, 26 insertions(+), 4 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index 98ee8cf..8c5eede 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -6,7 +6,7 @@ description = "A wip universal Linux settings application." [dependencies] reset_daemon = "0.1.9" -ReSet-Lib = "0.3.5" +ReSet-Lib = "0.4.0" adw = { version = "0.5.3", package = "libadwaita", features = ["v1_4"] } dbus = "0.9.7" gtk = { version = "0.7.3", package = "gtk4", features = ["v4_12"] } 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..d87618e 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);