Let's assume "playback session" to be a period which begins when an output device is opened and DSP chain is initialized, on the other hand ends when DSPs and output are flushed and closed.
on_playback_starting is then sent at the beginning of a "playback session", with information about how that was made (double-clicking a track, pressing the Next button, etc.).
Because the output device stays open when tracks play just one after another, no
on_playback_starting or
on_playback_stop notifications are sent. Only
on_playback_new_track informs everybody which track is currently being played.
When there are no more files to play, user presses the stop button, the application shuts down, etc.,
on_playback_stop event is fired, again with the reason why. A "playback session" ends and the output device is closed - that's common for all stop reasons:
*
stop_reason_user - User pressed stop button, playback session ends.
*
stop_reason_eof - Playback reached end of playlist, playback session ends.
*
stop_reason_starting_another - User started playback elsewhere, current playback session ends and a new one begins.
*
stop_reason_shutting_down - Application is shutting down, playback session ends.
QUOTE (sun4384 @ Dec 3 2008, 20:06)

I'm not suggesting to fix/change something by breaking compatibility.
You were - this was certainly about changing the behavior, not documentation:
QUOTE (sun4384 @ Dec 3 2008, 18:17)

This inconsistency somehow better be cleaned up in the next release, either getting stop callbacks whenever a track finishes playing (which I believe is the original intention by looking the name ...eof), or not getting any stop callback as long as a track is playing.