This pull request reintroduces the changes originally done in pull request #231 to properly separate end-of-track and end-of-stream handling.
These changes breaks some existing functionality in Mopidy, and was thus reverted from the develop branch. The following issues must be resolved before this can be merged again:
Revert "Revert "Merge pull request #231 from adamcik/feature/end-of-t…
This reverts commit 02b845b.
Revert "Revert "docs: Add changelog entry for EOT/EOS fixing.""
This reverts commit f74b59a.
mopidy/mopidy-gmusic#2 has some relevant discussion on the issues reaming in this branch.
The fact that, BasePlaybackProvider::change_track() always returns True leads to the assumption, that change_track() always succeed. I would like to see that BasePlaybackProvider::play() evaluates the return value of change_track() and returns False when change_track() returns False.
Playing around with this patch I experienced, that ncmcpp (0.5.4) didn't got noticed about (gapless) track changes. It simply continues incrementing the time and does not change the current playing track in the current playlist. GMPC seems to got noticed. So, I don't know, if this is an issue of ncmcpp 0.5.4.
In general, I think gapless playback of remote media will still be an issue. The about-to-finish message comes too late. I was trying to play short mp3 audio files from http://. Sometimes it works, but mostly there is a noticeable gap between the tracks. So, prefetching the next song is crucial for gapless playback of remote media (e.g. Google Music).
Should we perhaps just close this as a PR, as we obviously won't be using this code for anything but a reference at this point and move tracking to a proper bug?
Agree. I'm closing this, as well as the issues that are only present in this branch.