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/?a=commitdiff_plain;h=142f5a1ce080bb9efc5de029338dd0866f42a57d;p=xsetrootd.git 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)); }