From 1a8196d47165b82faf323c79841002d8d2ed23d7 Mon Sep 17 00:00:00 2001 From: Drew Weymouth Date: Sun, 5 Nov 2023 08:54:59 -0800 Subject: [PATCH] make tracklist.SetTracks refresh to mitigate risk of non-refresh bugs --- ui/browsing/playlistpage.go | 2 -- ui/widgets/tracklist.go | 9 +++++++-- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/ui/browsing/playlistpage.go b/ui/browsing/playlistpage.go index 0c30717..355680e 100644 --- a/ui/browsing/playlistpage.go +++ b/ui/browsing/playlistpage.go @@ -157,7 +157,6 @@ func (a *PlaylistPage) load() { a.tracks = playlist.Tracks a.tracklist.SetTracks(playlist.Tracks) a.tracklist.SetNowPlaying(a.nowPlayingID) - a.tracklist.Refresh() a.header.Update(playlist) } @@ -207,7 +206,6 @@ func (a *PlaylistPage) doSetNewTrackOrder(op sharedutil.TrackReorderOp) { a.tracklist.SetSorting(widgets.TracklistSort{}) a.tracklist.SetTracks(newTracks) a.tracklist.UnselectAll() - a.tracklist.Refresh() } } diff --git a/ui/widgets/tracklist.go b/ui/widgets/tracklist.go index 417bc9a..5b0875a 100644 --- a/ui/widgets/tracklist.go +++ b/ui/widgets/tracklist.go @@ -114,7 +114,7 @@ func NewTracklist(tracks []*mediaprovider.Track) *Tracklist { t.ExtendBaseWidget(t) if len(tracks) > 0 { - t.SetTracks(tracks) + t._setTracks(tracks) } // #, Title, Artist, Album, Time, Year, Favorite, Rating, Plays, Bitrate, Size, Path @@ -286,8 +286,13 @@ func (t *Tracklist) Clear() { t.tracksOrigOrder = nil } -// Sets the tracks in the tracklist. Does not issue Refresh call. Thread-safe. +// Sets the tracks in the tracklist. Thread-safe. func (t *Tracklist) SetTracks(trs []*mediaprovider.Track) { + t._setTracks(trs) + t.Refresh() +} + +func (t *Tracklist) _setTracks(trs []*mediaprovider.Track) { t.tracksMutex.Lock() defer t.tracksMutex.Unlock() t.tracksOrigOrder = toTrackModels(trs)