phonon-4.3.80-kde223662.patch more nicely formatted and commented Fri Jan 22 2010 Rex Dieter <rdieter@fedoraproject.org> - 4.3.80-6 - sync w/mdv patchesepel9
parent
b6251ee9d0
commit
f96ca01b1c
@ -0,0 +1,78 @@
|
||||
commit 7ab2d9572662f1afc776e5d90ecf35e212e3543c
|
||||
Author: cguthrie <cguthrie@283d02a7-25f6-0310-bc7c-ecb5cbfe19da>
|
||||
Date: Thu Jan 21 20:13:50 2010 +0000
|
||||
|
||||
xine: Always ensure we create the correct xine port for audio output.
|
||||
|
||||
When integrating with pulseaudio it was possible that the port was not correctly created.
|
||||
This could happen if phonon was started and the first device detected from PA was a capture device
|
||||
rather than a playback device (which is unlikely) or if the first device detected
|
||||
was a removable audio device which was subsequently removed before playback started.
|
||||
|
||||
There are possibly other cases where this could happen too.
|
||||
In this case xine would create a null port.
|
||||
|
||||
This change reverts a previous 'fix' committed in r1051721. I now issue a special case
|
||||
for dealing with PA support in the createPort() method. As a result I no longer need
|
||||
to special case handle the audioDriverFor() method of the backend so this is
|
||||
now removed.
|
||||
|
||||
CCBUG: 223662
|
||||
|
||||
git-svn-id: svn+ssh://svn.kde.org/home/kde/trunk/kdesupport/phonon@1078226 283d02a7-25f6-0310-bc7c-ecb5cbfe19da
|
||||
|
||||
diff --git a/xine/audiooutput.cpp b/xine/audiooutput.cpp
|
||||
index c6ca730..1444aa3 100644
|
||||
--- a/xine/audiooutput.cpp
|
||||
+++ b/xine/audiooutput.cpp
|
||||
@@ -26,6 +26,7 @@
|
||||
#include <sys/ioctl.h>
|
||||
#include <iostream>
|
||||
#include <QSet>
|
||||
+#include <phonon/pulsesupport_p.h>
|
||||
#include "mediaobject.h"
|
||||
#include "backend.h"
|
||||
#include "events.h"
|
||||
@@ -48,10 +49,6 @@ namespace Xine
|
||||
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 @@ xine_audio_port_t *AudioOutput::createPort(const AudioOutputDevice &deviceDesc)
|
||||
{
|
||||
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);
|
||||
diff --git a/xine/backend.cpp b/xine/backend.cpp
|
||||
index 7e881da..9010b8c 100644
|
||||
--- a/xine/backend.cpp
|
||||
+++ b/xine/backend.cpp
|
||||
@@ -588,9 +588,6 @@ QHash<QByteArray, QVariant> Backend::audioOutputProperties(int audioDevice)
|
||||
|
||||
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) {
|
@ -1,51 +0,0 @@
|
||||
--- 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 <sys/ioctl.h>
|
||||
#include <iostream>
|
||||
#include <QSet>
|
||||
+#include <phonon/pulsesupport_p.h>
|
||||
#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) {
|
Loading…
Reference in new issue