diff options
author | Yoann Lopes <yoann.lopes@theqtcompany.com> | 2015-02-11 12:40:10 +0100 |
---|---|---|
committer | Yoann Lopes <yoann.lopes@theqtcompany.com> | 2015-02-18 11:38:34 +0000 |
commit | fcf5d826a0e2d3ea6a01bf4c962e0d4fe096d321 (patch) | |
tree | d64b1517af8754c56acd6a248799e70061099da4 /src/plugins/gstreamer/mediaplayer | |
parent | 14b2b53edc14f36ad15afadbd5254e9260118db5 (diff) |
GStreamer: improved logic for window and widget controls usage.
Provide these controls only when the xvimagesink gstreamer element is
available. This allows QVideoWidget to fallback to QVideoRendererControl
when xvimagesink is not available.
Task-number: QTBUG-41618
Change-Id: I59f90ea8857c7ec0ffa08be9804e5458d95b79c4
Reviewed-by: Christian Stromme <christian.stromme@theqtcompany.com>
Diffstat (limited to 'src/plugins/gstreamer/mediaplayer')
-rw-r--r-- | src/plugins/gstreamer/mediaplayer/qgstreamerplayerservice.cpp | 14 | ||||
-rw-r--r-- | src/plugins/gstreamer/mediaplayer/qgstreamerplayerservice.h | 5 |
2 files changed, 17 insertions, 2 deletions
diff --git a/src/plugins/gstreamer/mediaplayer/qgstreamerplayerservice.cpp b/src/plugins/gstreamer/mediaplayer/qgstreamerplayerservice.cpp index ce267d737..ddc828eb2 100644 --- a/src/plugins/gstreamer/mediaplayer/qgstreamerplayerservice.cpp +++ b/src/plugins/gstreamer/mediaplayer/qgstreamerplayerservice.cpp @@ -91,9 +91,23 @@ QGstreamerPlayerService::QGstreamerPlayerService(QObject *parent): #else m_videoWindow = new QGstreamerVideoWindow(this); #endif + // If the GStreamer sink element is not available (xvimagesink), don't provide + // the video window control since it won't work anyway. + if (!m_videoWindow->videoSink()) { + delete m_videoWindow; + m_videoWindow = 0; + } #if defined(HAVE_WIDGETS) m_videoWidget = new QGstreamerVideoWidgetControl(this); + + // If the GStreamer sink element is not available (xvimagesink or ximagesink), don't provide + // the video widget control since it won't work anyway. + // QVideoWidget will fall back to QVideoRendererControl in that case. + if (!m_videoWidget->videoSink()) { + delete m_videoWidget; + m_videoWidget = 0; + } #endif } diff --git a/src/plugins/gstreamer/mediaplayer/qgstreamerplayerservice.h b/src/plugins/gstreamer/mediaplayer/qgstreamerplayerservice.h index f3081e986..0c5b40641 100644 --- a/src/plugins/gstreamer/mediaplayer/qgstreamerplayerservice.h +++ b/src/plugins/gstreamer/mediaplayer/qgstreamerplayerservice.h @@ -50,6 +50,7 @@ class QGstreamerPlayerSession; class QGstreamerMetaDataProvider; class QGstreamerStreamsControl; class QGstreamerVideoRenderer; +class QGstreamerVideoWindow; class QGstreamerVideoWidgetControl; class QGStreamerAvailabilityControl; @@ -72,9 +73,9 @@ private: QMediaControl *m_videoOutput; QMediaControl *m_videoRenderer; - QMediaControl *m_videoWindow; + QGstreamerVideoWindow *m_videoWindow; #if defined(HAVE_WIDGETS) - QMediaControl *m_videoWidget; + QGstreamerVideoWidgetControl *m_videoWidget; #endif void increaseVideoRef(); |