Harald Sitter committed changes in [phonon] phonon/factory.cpp:

Remove runtime backend switching



This was causing super horrible issues as it gets somewhat ugly when

phonon does not destruct the backend objects completely.

In the past this caused various problems (e.g. in gst callbacks to

objects that were not existing anymore) as well as recreatable

crashes on switching itself, not just of the KCM but *all*

currently running Phonon applications.

Generally speaking it required the backends to implement object

tracking as to destroy the whole backend graph upon backend switch,

which was only implemented in Xine and even there was insanely

complicated given the use.



Talking about use... it was agreed that the benefit of runtime

switching does not justify the work involved to implement and

support across multiple backends. Additionally switching the backend

ought not be something you do every day, but ultimately not ever as

the default backend installed by the user or the distributor should

be of sufficient stability and use. Should this not be the case it

*must* be considered a bug and treated as such. Working around by

switching to another backend does not contribute to the long-term

user experience in any way.



The implementation at hand replaces the backend switching logic with

a QMessageBox informing the user that she will have to restart the

application in order to apply the backend change.

In KDE 4.7's Phonon KCM we will introduce a more visually compelling

way of feedback. Unfortunately, as to maintain support for older

releases both the DBus interface and the handler function must remain

present to provide the silly messagebox feedback :S





FIXED-IN: 4.6.0