From: Haihua Hu Date: Sun, 12 Jun 2016 07:35:28 +0000 (+0800) Subject: qmlglsink: Add Wayland support X-Git-Tag: 1.19.3~507^2~6460 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=39034063045af3bb91775fcf3ea0bf35fe6de68f;p=platform%2Fupstream%2Fgstreamer.git qmlglsink: Add Wayland support Don't use gstgldisplay to get wayland display. Should use QPA on wayland to get wayland display for QT. https://bugzilla.gnome.org/show_bug.cgi?id=767553 --- diff --git a/configure.ac b/configure.ac index 833cfae..8b9ca6c 100644 --- a/configure.ac +++ b/configure.ac @@ -2866,6 +2866,9 @@ AG_GST_CHECK_FEATURE(QT, [Qt elements], qt, [ else HAVE_QT="yes" HAVE_QT_WINDOWING="no" + QT_VERSION="`$PKG_CONFIG --modversion Qt5Core`" + QPA_INCLUDE_PATH=`$PKG_CONFIG --variable=includedir Qt5Core`/QtGui/${QT_VERSION}/QtGui + AC_SUBST(QPA_INCLUDE_PATH) if test "x$GST_GL_HAVE_WINDOW_X11" = "x1" -a "x$GST_GL_HAVE_PLATFORM_GLX" = "x1"; then PKG_CHECK_MODULES(QT_X11, Qt5X11Extras, [ AC_DEFINE([HAVE_QT_X11], [], [Define if Qt X11 integration is installed]) diff --git a/ext/qt/Makefile.am b/ext/qt/Makefile.am index 5fdd90a..eab3e97 100644 --- a/ext/qt/Makefile.am +++ b/ext/qt/Makefile.am @@ -26,6 +26,7 @@ libgstqtsink_la_SOURCES = \ libgstqtsink_la_CXXFLAGS = \ -I$(top_srcdir)/gst-libs \ -I$(top_builddir)/gst-libs \ + -I$(QPA_INCLUDE_PATH) \ $(GST_CXXFLAGS) \ $(GST_BASE_CFLAGS) \ $(GST_PLUGINS_BASE_CFLAGS) \ diff --git a/ext/qt/qtitem.cc b/ext/qt/qtitem.cc index e1f91e7..2df087e 100644 --- a/ext/qt/qtitem.cc +++ b/ext/qt/qtitem.cc @@ -32,6 +32,7 @@ #include #include #include +#include #if GST_GL_HAVE_WINDOW_X11 && GST_GL_HAVE_PLATFORM_GLX && defined (HAVE_QT_X11) #include @@ -147,6 +148,17 @@ QtGLVideoItem::QtGLVideoItem() this->priv->display = (GstGLDisplay *) gst_gl_display_x11_new_with_display (QX11Info::display ()); #endif +#if GST_GL_HAVE_WINDOW_WAYLAND && GST_GL_HAVE_PLATFORM_EGL && defined (HAVE_QT_WAYLAND) + if (QString::fromUtf8 ("wayland") == app->platformName()){ + struct wl_display * wayland_display; + QPlatformNativeInterface *native = + QGuiApplication::platformNativeInterface(); + wayland_display = (struct wl_display *) + native->nativeResourceForWindow("display", NULL); + this->priv->display = (GstGLDisplay *) + gst_gl_display_wayland_new_with_display (wayland_display); + } +#endif #if GST_GL_HAVE_WINDOW_ANDROID && GST_GL_HAVE_PLATFORM_EGL && defined (HAVE_QT_ANDROID) if (QString::fromUtf8 ("android") == app->platformName()) this->priv->display = (GstGLDisplay *) gst_gl_display_egl_new ();