fix extra onTrackChange events
This commit is contained in:
@@ -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
@@ -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:
|
||||
|
||||
Reference in New Issue
Block a user