From 142f5a1ce080bb9efc5de029338dd0866f42a57d Mon Sep 17 00:00:00 2001 From: Jacob Casper Date: Mon, 11 Sep 2023 15:57:39 -0500 Subject: [PATCH] Prevent small race when both track and artist change Iteration order can cause the xsetroot command to be updated with only one or the other value at times, which remains incorrect until after another update call such as from the clock or mail listeners. --- src/main.rs | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/main.rs b/src/main.rs index d6beac7..d2d1df2 100644 --- a/src/main.rs +++ b/src/main.rs @@ -51,6 +51,11 @@ fn update_map(arc_map: Arc>>, key: &str, val: &str let clone_arc = arc_map.clone(); let mut map = clone_arc.lock().unwrap(); map.insert(String::from(key), String::from(val)); +} + +fn update_xsetroot(arc_map: Arc>>) { + let clone_arc = arc_map.clone(); + let map = clone_arc.lock().unwrap(); let _ = Command::new("xsetroot") .arg("-name") .arg(format!( @@ -82,6 +87,7 @@ fn main() -> Result<(), Box> { "unread_count", m.count.to_string().as_str(), ); + update_xsetroot(mail_match_map.clone()); true }, ); @@ -119,6 +125,7 @@ fn main() -> Result<(), Box> { _ => (), } } + update_xsetroot(spotify_match_map.clone()); Some(()) }); } @@ -135,6 +142,7 @@ fn main() -> Result<(), Box> { _ => "🔈", }, ); + update_xsetroot(spotify_match_map.clone()); } None => (), } @@ -155,6 +163,7 @@ fn main() -> Result<(), Box> { "date_time", get_local_time_string().as_str(), ); + update_xsetroot(date_time_map.clone()); } thread::sleep(Duration::from_millis(5000)); } -- 2.20.1