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, sm: s,
player: p, 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) { p.OnTrackChange(func(tracknum int64) {
if tracknum >= int64(len(pm.playQueue)) { if tracknum >= int64(len(pm.playQueue)) {
return return
@@ -266,7 +263,7 @@ func (p *PlaybackManager) checkScrobble(playDur time.Duration) {
return return
} }
if playDur.Seconds() < 0.1 || p.curTrackTime < 0.1 { if playDur.Seconds() < 0.1 || p.curTrackTime < 0.1 {
return // ignore spurious onTrackChange callbacks return
} }
song := p.playQueue[p.nowPlayingIdx] song := p.playQueue[p.nowPlayingIdx]
if playDur.Seconds()/p.curTrackTime > ScrobbleThreshold { 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. // Start playback from the first track in the play queue.
func (p *Player) PlayFromBeginning() error { func (p *Player) PlayFromBeginning() error {
err := p.mpv.Command([]string{"playlist-play-index", "0"}) return p.PlayTrackAt(0)
if err == nil {
p.setState(Playing)
}
return err
} }
// Start playback from the specified track index in the play queue. // Start playback from the specified track index in the play queue.
@@ -378,13 +374,6 @@ func (p *Player) setState(s State) {
cb() cb()
} }
}() }()
if p.status.State == Stopped {
defer func() {
for _, cb := range p.onTrackChange {
cb(p.curPlaylistPos)
}
}()
}
case s == Paused && p.status.State != Paused: case s == Paused && p.status.State != Paused:
defer func() { defer func() {
for _, cb := range p.onPaused { 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 pos, err := p.getInt64Property("playlist-pos"); err == nil {
if p.curPlaylistPos != pos { p.curPlaylistPos = pos
p.curPlaylistPos = pos for _, cb := range p.onTrackChange {
for _, cb := range p.onTrackChange { cb(pos)
cb(pos)
}
} }
} }
case MPVEventIdle: case MPVEventIdle: