mirror of
https://github.com/navidrome/navidrome.git
synced 2026-10-18 07:30:29 +00:00
- PlaybackDone now carries the finished *mpv.MpvTrack instead of a bare bool, so trackSwitcherGoroutine can detect and drop stale finish signals raised for a track that Skip/Clear/Set already replaced. Previously a stale signal could cause the goroutine to tear down and advance past the newly-started track. - getStatus() snapshots ActiveTrack/index/gain under the lock, then performs the blocking mpv IPC calls (Position/IsPlaying) after releasing it, so Status/Get polling no longer holds the device mutex during a socket round-trip to mpv. - Add/Set now resolve media file IDs (DB queries) before acquiring the lock, only holding it to mutate the queue. Co-Authored-By: Claude <noreply@anthropic.com>