Features in KDE Base
If, for some reason (xine's time reporting does not work very good), the aboutToFinish signal was not emitted and playback finished, first emit the aboutToFinish signal with a time of 0 ms, before emitting finished.
Added event debugging.
Sometimes (not sure what the condition is, but unit tests and fast sequences of stop-play-stop-play trigger this) calls to xine_play need a long time before playback really starts. Use a timer to regularly check for the status and staying BufferingState until then.
As the timing information from xine is bad, better not rely on it when setting a timer for the aboutToFinish signal. So we take the time info from xine minus 400 ms, too perhaps look at it again too early and then it's like full time polling for the right moment.