--- a/qtmobility/plugins/multimedia/gstreamer/mediaplayer/qgstreamerplayerservice.cpp Fri Jun 11 14:26:25 2010 +0300
+++ b/qtmobility/plugins/multimedia/gstreamer/mediaplayer/qgstreamerplayerservice.cpp Wed Jun 23 19:08:38 2010 +0300
@@ -47,7 +47,6 @@
#include "qgstreamerplayercontrol.h"
#include "qgstreamerplayersession.h"
#include "qgstreamermetadataprovider.h"
-#include "qgstreamervideooutputcontrol.h"
#include "qgstreamervideooverlay.h"
#include "qgstreamervideorenderer.h"
@@ -59,74 +58,61 @@
#include <qmediaplaylist.h>
QGstreamerPlayerService::QGstreamerPlayerService(QObject *parent):
- QMediaService(parent)
+ QMediaService(parent),
+ m_videoOutput(0),
+ m_videoRenderer(0),
+ m_videoWindow(0),
+ m_videoWidget(0)
{
m_session = new QGstreamerPlayerSession(this);
m_control = new QGstreamerPlayerControl(m_session, this);
m_metaData = new QGstreamerMetaDataProvider(m_session, this);
- m_videoOutput = new QGstreamerVideoOutputControl(this);
m_streamsControl = new QGstreamerStreamsControl(m_session,this);
- connect(m_videoOutput, SIGNAL(outputChanged(QVideoOutputControl::Output)),
- this, SLOT(videoOutputChanged(QVideoOutputControl::Output)));
m_videoRenderer = new QGstreamerVideoRenderer(this);
+#if defined(Q_WS_X11) && !defined(QT_NO_XVIDEO)
m_videoWindow = new QGstreamerVideoOverlay(this);
m_videoWidget = new QGstreamerVideoWidgetControl(this);
-
- m_videoOutput->setAvailableOutputs(QList<QVideoOutputControl::Output>()
- << QVideoOutputControl::RendererOutput
- << QVideoOutputControl::WindowOutput
- << QVideoOutputControl::WidgetOutput);
+#endif
}
QGstreamerPlayerService::~QGstreamerPlayerService()
{
}
-QMediaControl *QGstreamerPlayerService::control(const char *name) const
+QMediaControl *QGstreamerPlayerService::requestControl(const char *name)
{
if (qstrcmp(name,QMediaPlayerControl_iid) == 0)
return m_control;
- if (qstrcmp(name,QMetaDataControl_iid) == 0)
+ if (qstrcmp(name,QMetaDataReaderControl_iid) == 0)
return m_metaData;
if (qstrcmp(name,QMediaStreamsControl_iid) == 0)
return m_streamsControl;
- if (qstrcmp(name, QVideoOutputControl_iid) == 0)
- return m_videoOutput;
-
- if (qstrcmp(name, QVideoWidgetControl_iid) == 0)
- return m_videoWidget;
+ if (!m_videoOutput) {
+ if (qstrcmp(name, QVideoWidgetControl_iid) == 0)
+ m_videoOutput = m_videoWidget;
+ else if (qstrcmp(name, QVideoRendererControl_iid) == 0)
+ m_videoOutput = m_videoRenderer;
+ else if (qstrcmp(name, QVideoWindowControl_iid) == 0)
+ m_videoOutput = m_videoWindow;
- if (qstrcmp(name, QVideoRendererControl_iid) == 0)
- return m_videoRenderer;
-
- if (qstrcmp(name, QVideoWindowControl_iid) == 0)
- return m_videoWindow;
+ if (m_videoOutput) {
+ m_control->setVideoOutput(m_videoOutput);
+ return m_videoOutput;
+ }
+ }
return 0;
}
-void QGstreamerPlayerService::videoOutputChanged(QVideoOutputControl::Output output)
+void QGstreamerPlayerService::releaseControl(QMediaControl *control)
{
- switch (output) {
- case QVideoOutputControl::NoOutput:
+ if (control == m_videoOutput) {
+ m_videoOutput = 0;
m_control->setVideoOutput(0);
- break;
- case QVideoOutputControl::RendererOutput:
- m_control->setVideoOutput(m_videoRenderer);
- break;
- case QVideoOutputControl::WindowOutput:
- m_control->setVideoOutput(m_videoWindow);
- break;
- case QVideoOutputControl::WidgetOutput:
- m_control->setVideoOutput(m_videoWidget);
- break;
- default:
- qWarning("Invalid video output selection");
- break;
}
}