a few more goroutines

This commit is contained in:
Drew Weymouth
2025-02-08 08:35:34 -03:00
parent ff78a79906
commit c7adeb5e32
6 changed files with 28 additions and 41 deletions
+1 -1
View File
@@ -77,7 +77,7 @@ func main() {
mainWindow := ui.NewMainWindow(fyneApp, res.AppName, res.DisplayName, res.AppVersion, myApp) mainWindow := ui.NewMainWindow(fyneApp, res.AppName, res.DisplayName, res.AppVersion, myApp)
mainWindow.Window.SetMaster() mainWindow.Window.SetMaster()
myApp.OnReactivate = mainWindow.Show myApp.OnReactivate = mainWindow.Show
myApp.OnExit = mainWindow.Quit myApp.OnExit = func() { fyne.Do(mainWindow.Quit) }
fyneApp.Lifecycle().SetOnEnteredForeground(sync.OnceFunc(func() { fyneApp.Lifecycle().SetOnEnteredForeground(sync.OnceFunc(func() {
defaultServer := myApp.ServerManager.GetDefaultServer() defaultServer := myApp.ServerManager.GetDefaultServer()
+15 -13
View File
@@ -64,20 +64,22 @@ func (a *GenresPage) load(searchOnLoad bool, scrollPos float32) {
if err != nil { if err != nil {
log.Printf("error loading genres: %v", err.Error()) log.Printf("error loading genres: %v", err.Error())
} }
a.genres = genres fyne.Do(func() {
if searchOnLoad { a.genres = genres
a.onSearched(a.searcher.Entry.Text) if searchOnLoad {
if scrollPos != 0 { a.onSearched(a.searcher.Entry.Text)
a.list.list.ScrollToOffset(scrollPos) if scrollPos != 0 {
a.list.list.ScrollToOffset(scrollPos)
}
} else {
a.list.SetGenres(a.genres)
if scrollPos != 0 {
a.list.list.ScrollToOffset(scrollPos)
return
}
a.list.Refresh()
} }
} else { })
a.list.SetGenres(a.genres)
if scrollPos != 0 {
a.list.list.ScrollToOffset(scrollPos)
return
}
a.list.Refresh()
}
} }
func (a *GenresPage) onSearched(query string) { func (a *GenresPage) onSearched(query string) {
+7 -9
View File
@@ -297,7 +297,8 @@ func (a *NowPlayingPage) onImageLoaded(img image.Image, err error) {
if err != nil { if err != nil {
log.Printf("error loading cover art: %v\n", err) log.Printf("error loading cover art: %v\n", err)
} }
a.card.SetCoverImage(img)
fyne.Do(func() { a.card.SetCoverImage(img) })
if img == nil { if img == nil {
return return
} }
@@ -307,18 +308,15 @@ func (a *NowPlayingPage) onImageLoaded(img image.Image, err error) {
return return
} }
evenFrame := true // Fyne animation starting is currently thread-safe,
// despite not being marked as such
// TODO: if this changes, use fyne.Do
anim := canvas.NewColorRGBAAnimation( anim := canvas.NewColorRGBAAnimation(
a.background.StartColor, c, 75*time.Millisecond, func(c color.Color) { a.background.StartColor, c, 75*time.Millisecond, func(c color.Color) {
// reduce fps to reduce mem allocations a.background.StartColor = c
if evenFrame { a.background.Refresh()
a.background.StartColor = c
a.background.Refresh()
}
evenFrame = !evenFrame
}) })
anim.Start() anim.Start()
} }
func (a *NowPlayingPage) updateLyrics() { func (a *NowPlayingPage) updateLyrics() {
+2 -1
View File
@@ -349,6 +349,7 @@ func (a *PlaylistPageHeader) Update(playlist *mediaprovider.PlaylistWithTracks)
a.Refresh() a.Refresh()
} }
// should be called asynchronously
func (a *PlaylistPageHeader) showPopUpCover() { func (a *PlaylistPageHeader) showPopUpCover() {
if a.fullSizeCoverFetching || a.playlistInfo == nil { if a.fullSizeCoverFetching || a.playlistInfo == nil {
return return
@@ -361,7 +362,7 @@ func (a *PlaylistPageHeader) showPopUpCover() {
return return
} }
if a.page != nil { if a.page != nil {
a.page.contr.ShowPopUpImage(cover) fyne.Do(func() { a.page.contr.ShowPopUpImage(cover) })
} }
} }
-16
View File
@@ -133,22 +133,6 @@ func NewMainWindow(fyneApp fyne.App, appName, displayAppName, appVersion string,
m.Window.SetCloseIntercept(func() { m.Window.SetCloseIntercept(func() {
m.SaveWindowSize() m.SaveWindowSize()
// save settings in case we crash during shutdown
// TODO: when all shutdowns exit cleanly, remove these lines
// as they are already executed in app.Shutdown()
app.Config.LocalPlayback.Volume = app.LocalPlayer.GetVolume()
repeatMode := "None"
switch app.PlaybackManager.GetLoopMode() {
case backend.LoopOne:
repeatMode = "One"
case backend.LoopAll:
repeatMode = "All"
}
app.Config.Playback.RepeatMode = repeatMode
app.Config.Playback.Autoplay = app.PlaybackManager.IsAutoplay()
app.SavePlayQueueIfEnabled()
app.SaveConfigFile()
if app.Config.Application.CloseToSystemTray && m.HaveSystemTray() { if app.Config.Application.CloseToSystemTray && m.HaveSystemTray() {
m.Window.Hide() m.Window.Hide()
} else { } else {
+3 -1
View File
@@ -199,7 +199,9 @@ func NewDebouncer(dur time.Duration, callOnDone func()) func() {
if timer != nil { if timer != nil {
timer.Stop() timer.Stop()
} }
timer = time.AfterFunc(dur, callOnDone) timer = time.AfterFunc(dur, func() {
fyne.Do(callOnDone)
})
} }
} }