It looks like the skip logic is conflicting with the logic that tries to detect broken renderers. I'll check into it. Thanks for the detailed report!
Hi bob,
I am starting to experiment (as promised) with adding .pls and .m3u support to Whitebear. After studying the issue, one question for me is, how the CP determones the correct point in time when it shall send the next SetNext command.
1) When a renderer is playing single tracks, the CP polls GetPositionInfo, (or subscibe to LastChange::CurrentTrackUri), and when a CurrentTrackUri change event occurs, the CP uses this to trigger the next SetNext.
2) If the CP sends Next() or Seek(Track+1) this causes a CurrentTrackUri event exactly as if the track had played out, and so triggers the next SetNext exactly as in 1).
3) If the CP sends Previous() or Seek(Track-1), and assuming the player had a previous track to play, this also causes a CurrentTrackUri event, but this event should
not trigger a SetNext, because the "next" track is the one we are just leaving.
4) If the renderer is playing a .m3u or .pls playlist, CurrentTrackUri change events will occur whenever the renderer moves forwards or backwards through the playlist. But change events
within the playlist should not trigger a SetNext. Indeed, analog to 1) & 2), only change events over the boundary from the last track in the current playlist to the first track in the next playlist should trigger a SetNext. And, analog to 3), change events over the playlist boundary in the opposite direction should also not trigger a SetNext, because the "next" playlist is the one we are just leaving.
It is amazingly hard to get my head around all the permutations. And indeed in MC you are trying to double guess whether the renderer supports SetNext, so probably you have even more permutations to handle.
=> Can you please share with us the logic that you currently use for triggering SetNext? Perhaps an open discussion may help us to resolve the "perfect" logic that works with all permutations...