diff options
Diffstat (limited to 'src/gsttools')
-rw-r--r-- | src/gsttools/qgstreamervideowidget.cpp | 5 | ||||
-rw-r--r-- | src/gsttools/qgstreamervideowindow.cpp | 5 |
2 files changed, 8 insertions, 2 deletions
diff --git a/src/gsttools/qgstreamervideowidget.cpp b/src/gsttools/qgstreamervideowidget.cpp index 9a29d327f..6e65b3065 100644 --- a/src/gsttools/qgstreamervideowidget.cpp +++ b/src/gsttools/qgstreamervideowidget.cpp @@ -98,7 +98,10 @@ QGstreamerVideoWidgetControl::QGstreamerVideoWidgetControl(QObject *parent) , m_widget(0) , m_fullScreen(false) { - m_videoSink = gst_element_factory_make ("xvimagesink", NULL); + // The QWidget needs to have a native X window handle to be able to use xvimagesink. + // Bail out if Qt is not using xcb (the control will then be ignored by the plugin) + if (QGuiApplication::platformName().compare(QLatin1String("xcb"), Qt::CaseInsensitive) == 0) + m_videoSink = gst_element_factory_make ("xvimagesink", NULL); if (m_videoSink) { // Check if the xv sink is usable diff --git a/src/gsttools/qgstreamervideowindow.cpp b/src/gsttools/qgstreamervideowindow.cpp index 7dd6ab253..a0697003a 100644 --- a/src/gsttools/qgstreamervideowindow.cpp +++ b/src/gsttools/qgstreamervideowindow.cpp @@ -35,6 +35,7 @@ #include <private/qgstutils_p.h> #include <QtCore/qdebug.h> +#include <QtGui/qguiapplication.h> #include <gst/gst.h> @@ -57,7 +58,9 @@ QGstreamerVideoWindow::QGstreamerVideoWindow(QObject *parent, const char *elemen { if (elementName) { m_videoSink = gst_element_factory_make(elementName, NULL); - } else { + } else if (QGuiApplication::platformName().compare(QLatin1String("xcb"), Qt::CaseInsensitive) == 0) { + // We need a native X window handle to be able to use xvimagesink. + // Bail out if Qt is not using xcb (the control will then be ignored by the plugin) m_videoSink = gst_element_factory_make("xvimagesink", NULL); } |