fix extra onTrackChange events

This commit is contained in:
Drew Weymouth
2023-03-17 17:57:18 -07:00
parent 60b7b93ee2
commit bd5c2f2cbb
2 changed files with 5 additions and 21 deletions
+1 -4
View File
@@ -42,9 +42,6 @@ func NewPlaybackManager(ctx context.Context, s *ServerManager, p *player.Player)
sm: s,
player: p,
}
// TODO: we get some spurious OnTrackChange callbacks from the player,
// especially when loading/playing a new album,
// but for now they're pretty much harmless. Investigate later.
p.OnTrackChange(func(tracknum int64) {
if tracknum >= int64(len(pm.playQueue)) {
return
@@ -266,7 +263,7 @@ func (p *PlaybackManager) checkScrobble(playDur time.Duration) {
return
}
if playDur.Seconds() < 0.1 || p.curTrackTime < 0.1 {
return // ignore spurious onTrackChange callbacks
return
}
song := p.playQueue[p.nowPlayingIdx]
if playDur.Seconds()/p.curTrackTime > ScrobbleThreshold {
+4 -17
View File
@@ -239,11 +239,7 @@ func (p *Player) setPaused(paused bool) error {
// Start playback from the first track in the play queue.
func (p *Player) PlayFromBeginning() error {
err := p.mpv.Command([]string{"playlist-play-index", "0"})
if err == nil {
p.setState(Playing)
}
return err
return p.PlayTrackAt(0)
}
// Start playback from the specified track index in the play queue.
@@ -378,13 +374,6 @@ func (p *Player) setState(s State) {
cb()
}
}()
if p.status.State == Stopped {
defer func() {
for _, cb := range p.onTrackChange {
cb(p.curPlaylistPos)
}
}()
}
case s == Paused && p.status.State != Paused:
defer func() {
for _, cb := range p.onPaused {
@@ -429,11 +418,9 @@ func (p *Player) eventHandler(ctx context.Context) {
}
}
if pos, err := p.getInt64Property("playlist-pos"); err == nil {
if p.curPlaylistPos != pos {
p.curPlaylistPos = pos
for _, cb := range p.onTrackChange {
cb(pos)
}
p.curPlaylistPos = pos
for _, cb := range p.onTrackChange {
cb(pos)
}
}
case MPVEventIdle: