From 6b382c62938248a08e19b1590e7823b282533f2c Mon Sep 17 00:00:00 2001 From: Drew Weymouth Date: Thu, 19 Feb 2026 08:27:21 -0800 Subject: [PATCH] Fix #857: Clear in-memory cache as well as on disk --- backend/app.go | 31 ++++++++++++++++--------------- backend/imagemanager.go | 11 +++++++---- 2 files changed, 23 insertions(+), 19 deletions(-) diff --git a/backend/app.go b/backend/app.go index 97c453f..70ff658 100644 --- a/backend/app.go +++ b/backend/app.go @@ -43,23 +43,23 @@ var ( ) type App struct { - Config *Config - ServerManager *ServerManager - LyricsManager *LyricsManager - ImageManager *ImageManager - AudioCache *AudioCache - AutoEQManager *AutoEQManager - EQPresetManager *EQPresetManager - PlaybackManager *PlaybackManager - LocalPlayer *mpv.Player - UpdateChecker UpdateChecker - MPRISHandler *MPRISHandler - WinSMTC *windows.SMTC - ipcServer ipc.IPCServer + Config *Config + ServerManager *ServerManager + LyricsManager *LyricsManager + ImageManager *ImageManager + AudioCache *AudioCache + AutoEQManager *AutoEQManager + EQPresetManager *EQPresetManager + PlaybackManager *PlaybackManager + LocalPlayer *mpv.Player + UpdateChecker UpdateChecker + MPRISHandler *MPRISHandler + WinSMTC *windows.SMTC + ipcServer ipc.IPCServer // UI callbacks to be set in main - OnReactivate func() - OnExit func() + OnReactivate func() + OnExit func() OnReloadTheme func() appName string @@ -283,6 +283,7 @@ func (a *App) ClearCaches() { } } } + a.ImageManager.ClearInMemoryCache() } func checkPortablePath() string { diff --git a/backend/imagemanager.go b/backend/imagemanager.go index af05663..4309fa7 100644 --- a/backend/imagemanager.go +++ b/backend/imagemanager.go @@ -66,10 +66,7 @@ func NewImageManager(ctx context.Context, s *ServerManager, baseCacheDir string) maxOnDiskCacheSizeBytes: defaultDiskCacheSizeBytes, serverFetchSema: make(chan any, maxConcurrentServerFetches), } - s.OnLogout(func() { - i.thumbnailCache.Clear() - i.clearFullSizeCover() - }) + s.OnLogout(i.ClearInMemoryCache) i.thumbnailCache.OnEvictTaskRan = func() { i.clearFullSizeCoverIfExpired() i.pruneOnDiskCache() @@ -195,6 +192,12 @@ func (i *ImageManager) RefreshCachedArtistImageIfExpired(artistID string, imgURL return err } +// ClearInMemoryCache clears images from the in-memory caches. +func (i *ImageManager) ClearInMemoryCache() { + i.thumbnailCache.Clear() + i.clearFullSizeCover() +} + func (i *ImageManager) ensureCoverCacheDir() string { // if user logged out with pending fetches in progress, // make sure we don't write to nil (00000000-*0) cache directory