make sure waveform shows up for track loaded paused when starting app

This commit is contained in:
Drew Weymouth
2026-02-21 10:17:20 -08:00
parent dba540861f
commit 6782e8d470
+16 -6
View File
@@ -115,14 +115,20 @@ func (p *PlaybackManager) addOnTrackChangeHook() {
}) })
p.engine.onBeforeSongChange = append(p.engine.onBeforeSongChange, func(item mediaprovider.MediaItem) { p.engine.onBeforeSongChange = append(p.engine.onBeforeSongChange, func(item mediaprovider.MediaItem) {
if p.engine.playbackCfg.UseWaveformSeekbar { if item == nil || !p.engine.playbackCfg.UseWaveformSeekbar {
if p.wfmGen != nil && item != nil && item.Metadata().Type == mediaprovider.MediaItemTypeTrack { return
if _, ok := p.findWfmImageJob(item.Metadata().ID, true); !ok { }
// start generating waveform image for next-up track if p.wfmGen != nil && item.Metadata().Type == mediaprovider.MediaItemTypeTrack {
p.addWfmImageJob(p.wfmGen.StartWaveformGeneration(item.(*mediaprovider.Track))) if _, ok := p.findWfmImageJob(item.Metadata().ID, true); !ok {
} // start generating waveform image for next-up track
p.addWfmImageJob(p.wfmGen.StartWaveformGeneration(item.(*mediaprovider.Track)))
} }
} }
if p.isLoadTrackPaused() {
// we need to call handleWaveformImageSongChange to ensure the waveform image is updated
// for the track that is loaded paused when starting the app
p.handleWaveformImageSongChange(item)
}
}) })
p.OnSongChange(func(item mediaprovider.MediaItem, _ *mediaprovider.Track) { p.OnSongChange(func(item mediaprovider.MediaItem, _ *mediaprovider.Track) {
@@ -517,6 +523,10 @@ func (p *PlaybackManager) LoadTrackPaused(idx int, startTime float64) {
p.cmdQueue.LoadTrackPaused(idx, startTime) p.cmdQueue.LoadTrackPaused(idx, startTime)
} }
func (p *PlaybackManager) isLoadTrackPaused() bool {
return p.engine.pendingLoadPaused
}
func (p *PlaybackManager) PlayRandomSongs(genreName string) error { func (p *PlaybackManager) PlayRandomSongs(genreName string) error {
return p.fetchAndPlayTracks(func() ([]*mediaprovider.Track, error) { return p.fetchAndPlayTracks(func() ([]*mediaprovider.Track, error) {
tr, err := p.engine.sm.Server.GetRandomTracks(genreName, p.appCfg.EnqueueBatchSize) tr, err := p.engine.sm.Server.GetRandomTracks(genreName, p.appCfg.EnqueueBatchSize)