From: Jacob Casper Date: Mon, 11 Sep 2023 20:57:39 +0000 (-0500) Subject: Prevent small race when both track and artist change X-Git-Url: https://git.jacobcasper.com/?p=xsetrootd.git;a=commitdiff_plain;h=142f5a1ce080bb9efc5de029338dd0866f42a57d 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. --- 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)); }