What about the case of:
* Previous playing item
* Application::PlayFile is called
* OnPlaybackStopped() is called to abort old item
* IPlayer::OpenFile return true;
* OnPlaybackStarted() is later on called to finish the start of the new item

How would that behave. Do note I think we may need to put some requirements on the players for this to function properly.