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,
|
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
@@ -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:
|
||||||
|
|||||||
Reference in New Issue
Block a user