
The last days I worked on reducing the dependencies of libphononcore. So far it linked to libkio + libsolid. KIO+kdeui were used for the MediaObject KIO fallback, KMessageBox, KIcon and KNotification. I've moved all those (except the KMessageBox stuff - it uses KMessage now) into interfaces that are implemented in libphononui now and libphononcore will make use of if the application links against phononui. There's no need to call any method in phononui to make it work, it's completely automatic. But that also means you need phononui for KIO fallback (which is not 100% intuitive). Perhaps KIO fallback should be a plugin, but I think that's overkill.
Now my changes are awaiting the last KMimeType cleanups, so that I can use KMimeType in phononcore from kdecore (it was in libkio before).
Also I worked on making the "unit" tests to be compiled as two different sets: one that force the fake backend and can be run automatically on "make test". And another set of the tests that should be run manually: to be used by backend developers. For the latter I was contemplating a little GUI that runs all the tests (and where it makes sense, runs the tests multiple times) and gives a nice overview what fails reliably, what fails sporadically and what works reliably + all the debug logs that go with it. This is very useful since backends that use threads sometimes work and sometimes don't. Also it might depend on timing issues with KIO or any other data source: in short there's great potential for race conditions. So stress testing the backend makes a lot of sense.
For example I found one serious bug in the xine backend that would happen about 1% of the time only by stress testing ByteStream. I.e. every time the address of the ByteStream object contained a '#'. You don't want to know the details...