From 498724e2a433d5f6192dc55c74ec94be6e3fea22 Mon Sep 17 00:00:00 2001 From: Henrik Friedrichsen Date: Sun, 8 Sep 2019 21:11:59 +0200 Subject: [PATCH] fix: trigger UI redraw after fetching artist data in separate thread fixes #91 --- src/library.rs | 4 ++++ src/ui/artist.rs | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/src/library.rs b/src/library.rs index dc347b7..b8394b9 100644 --- a/src/library.rs +++ b/src/library.rs @@ -749,4 +749,8 @@ impl Library { self.save_cache(config::cache_path(CACHE_PLAYLISTS), self.playlists.clone()); } + + pub fn trigger_redraw(&self) { + self.ev.trigger(); + } } diff --git a/src/ui/artist.rs b/src/ui/artist.rs index 6b6716e..d07d32c 100644 --- a/src/ui/artist.rs +++ b/src/ui/artist.rs @@ -37,10 +37,12 @@ impl ArtistView { let top_tracks = top_tracks.clone(); let spotify = spotify.clone(); let id = artist.id.clone(); + let library = library.clone(); thread::spawn(move || { if let Some(id) = id { if let Some(tracks) = spotify.artist_top_tracks(id) { top_tracks.write().unwrap().extend(tracks); + library.trigger_redraw(); } } }); @@ -51,10 +53,12 @@ impl ArtistView { let related = related.clone(); let spotify = spotify.clone(); let id = artist.id.clone(); + let library = library.clone(); thread::spawn(move || { if let Some(id) = id { if let Some(artists) = spotify.artist_related_artists(id) { related.write().unwrap().extend(artists); + library.trigger_redraw(); } } });