--- trunk/kdesupport/phonon/xine/audiooutput.cpp 2009/12/27 16:57:19 1066664 +++ trunk/kdesupport/phonon/xine/audiooutput.cpp 2010/01/21 20:13:50 1078226 @@ -26,6 +26,7 @@ #include #include #include +#include #include "mediaobject.h" #include "backend.h" #include "events.h" @@ -48,10 +49,6 @@ AudioOutput::AudioOutput(QObject *parent) : AbstractAudioOutput(new AudioOutputXT, parent) { - // Always initialise the "device" in use. - // This is needed for PulseAudio support as subsequent calls to setOutputDevice() - // are suppressed - setOutputDevice(0); } AudioOutput::~AudioOutput() @@ -132,6 +129,17 @@ { K_XT(AudioOutput); xine_audio_port_t *port = 0; + + PulseSupport *pulse = PulseSupport::getInstance(); + if (pulse->isActive()) { + // Here we trust that the PA plugin is setup correctly and we just want to use it. + const QByteArray &outputPlugin = "pulseaudio"; + debug() << Q_FUNC_INFO << "PA Active: use output plugin:" << outputPlugin; + port = xine_open_audio_driver(xt->m_xine, outputPlugin.constData(), 0); + debug() << Q_FUNC_INFO << "----------------------------------------------- audio_port created"; + return port; + } + if (!deviceDesc.isValid()) { // use null output for invalid devices port = xine_open_audio_driver(xt->m_xine, "none", 0); --- trunk/kdesupport/phonon/xine/backend.cpp 2009/12/27 16:57:19 1066664 +++ trunk/kdesupport/phonon/xine/backend.cpp 2010/01/21 20:13:50 1078226 @@ -588,9 +588,6 @@ QByteArray Backend::audioDriverFor(int audioDevice) { - if (PulseSupport::getInstance()->isActive()) - return "pulseaudio"; - instance()->checkAudioOutputs(); const Backend *const that = instance(); for (int i = 0; i < that->m_audioOutputInfos.size(); ++i) {