diff options
author | Sergey Borovkov <sergey.borovkov@wireload.net> | 2016-04-14 18:14:32 +0300 |
---|---|---|
committer | Matthew Waters <matthew@centricular.com> | 2016-06-16 01:49:16 +1000 |
commit | 180405714c88c0fe1081f3ec5ca4838c1c127bd0 (patch) | |
tree | 1b6e08eb169c3394fe67a8dc3edf3b0978e70934 | |
parent | 14c6fece0972183053f23874d0b5fd7b072e40d5 (diff) | |
download | gstreamer-plugins-bad-180405714c88c0fe1081f3ec5ca4838c1c127bd0.tar.gz |
qml: Enable qmlglsink for eglfs
https://bugzilla.gnome.org/show_bug.cgi?id=763044
-rw-r--r-- | configure.ac | 41 | ||||
-rw-r--r-- | ext/qt/qtitem.cc | 12 | ||||
-rw-r--r-- | gst-libs/gst/gl/egl/gstegl.h | 2 |
3 files changed, 34 insertions, 21 deletions
diff --git a/configure.ac b/configure.ac index 8b9ca6c1e..88918a898 100644 --- a/configure.ac +++ b/configure.ac @@ -2886,24 +2886,29 @@ AG_GST_CHECK_FEATURE(QT, [Qt elements], qt, [ HAVE_QT_WINDOWING="yes" ], [AC_MSG_NOTICE([Could not find Qt Wayland integration])]) fi - if test "x$GST_GL_HAVE_WINDOW_ANDROID" = "x1" -a "x$GST_GL_HAVE_PLATFORM_EGL" = "x1"; then - PKG_CHECK_MODULES(QT_ANDROID, Qt5AndroidExtras, [ - # c++ on android requires a standard library and there are multiple - # choices. cerbero provides a pkg-config file the describes a choice - # so try to use that. Outside cerbero one has to pass these flags - # manually for the library one is using - PKG_CHECK_MODULES(GNUSTL, gnustl, [ - QT_CFLAGS="$QT_CFLAGS $GNUSTL_CFLAGS" - QT_LIBS="$QT_LIBS $GNUSTL_LIBS" - ], [ - AC_MSG_NOTICE([Could not find Standard C++ library])]) - - AC_DEFINE([HAVE_QT_ANDROID], [], - [Define if Qt Android integration is installed]) - QT_CFLAGS="$QT_CFLAGS $QT_ANDROID_CFLAGS" - QT_LIBS="$QT_LIBS $QT_ANDROID_LIBS" - HAVE_QT_WINDOWING="yes" - ], [AC_MSG_NOTICE([Could not find Qt Android integration])]) + if test "x$GST_GL_HAVE_PLATFORM_EGL" = "x1"; then + if test "x$GST_GL_HAVE_WINDOW_ANDROID" = "x1"; then + PKG_CHECK_MODULES(QT_ANDROID, Qt5AndroidExtras, [ + # c++ on android requires a standard library and there are multiple + # choices. cerbero provides a pkg-config file the describes a choice + # so try to use that. Outside cerbero one has to pass these flags + # manually for the library one is using + PKG_CHECK_MODULES(GNUSTL, gnustl, [ + QT_CFLAGS="$QT_CFLAGS $GNUSTL_CFLAGS" + QT_LIBS="$QT_LIBS $GNUSTL_LIBS" + ], [ + AC_MSG_NOTICE([Could not find Standard C++ library])]) + AC_DEFINE([HAVE_QT_EGLFS], [], + [Define if Qt eglfs integration is installed]) + QT_CFLAGS="$QT_CFLAGS $QT_ANDROID_CFLAGS" + QT_LIBS="$QT_LIBS $QT_ANDROID_LIBS" + HAVE_QT_WINDOWING="yes" + ], [AC_MSG_NOTICE([Could not find Qt Android integration])]) + else + AC_DEFINE([HAVE_QT_EGLFS], [], + [Define if Qt eglfs integration is installed]) + HAVE_QT_WINDOWING="yes" + fi fi if test "x$GST_GL_HAVE_WINDOW_COCOA" = "x1" -a "x$GST_GL_HAVE_PLATFORM_CGL" = "x1"; then PKG_CHECK_MODULES(QT_MAC, Qt5MacExtras, [ diff --git a/ext/qt/qtitem.cc b/ext/qt/qtitem.cc index 9c359f85d..505ed03f2 100644 --- a/ext/qt/qtitem.cc +++ b/ext/qt/qtitem.cc @@ -44,7 +44,7 @@ #include <gst/gl/wayland/gstgldisplay_wayland.h> #endif -#if GST_GL_HAVE_WINDOW_ANDROID && GST_GL_HAVE_PLATFORM_EGL && defined (HAVE_QT_ANDROID) +#if GST_GL_HAVE_PLATFORM_EGL && defined (HAVE_QT_EGLFS) #include <gst/gl/egl/gstgldisplay_egl.h> #include <gst/gl/egl/gstglcontext_egl.h> #endif @@ -162,10 +162,14 @@ QtGLVideoItem::QtGLVideoItem() 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 GST_GL_HAVE_PLATFORM_EGL && GST_GL_HAVE_WINDOW_ANDROID if (QString::fromUtf8 ("android") == app->platformName()) this->priv->display = (GstGLDisplay *) gst_gl_display_egl_new (); +#elif GST_GL_HAVE_PLATFORM_EGL && defined (HAVE_QT_EGLFS) + if (QString::fromUtf8("eglfs") == app->platformName()) + this->priv->display = (GstGLDisplay *) gst_gl_display_egl_new (); #endif + #if GST_GL_HAVE_WINDOW_COCOA && GST_GL_HAVE_PLATFORM_COCOA && defined (HAVE_QT_MAC) if (QString::fromUtf8 ("cocoa") == app->platformName()) this->priv->display = (GstGLDisplay *) gst_gl_display_cocoa_new (); @@ -348,7 +352,8 @@ QtGLVideoItem::onSceneGraphInitialized () platform, gl_api); } #endif -#if GST_GL_HAVE_WINDOW_ANDROID && GST_GL_HAVE_PLATFORM_EGL && defined (HAVE_QT_ANDROID) + +#if GST_GL_HAVE_PLATFORM_EGL && defined (HAVE_QT_EGLFS) if (GST_IS_GL_DISPLAY_EGL (this->priv->display)) { platform = GST_GL_PLATFORM_EGL; gl_api = gst_gl_context_get_current_gl_api (platform, NULL, NULL); @@ -359,6 +364,7 @@ QtGLVideoItem::onSceneGraphInitialized () platform, gl_api); } #endif + #if GST_GL_HAVE_WINDOW_COCOA && GST_GL_HAVE_PLATFORM_COCOA && defined (HAVE_QT_MAC) if (this->priv->display) { platform = GST_GL_PLATFORM_CGL; diff --git a/gst-libs/gst/gl/egl/gstegl.h b/gst-libs/gst/gl/egl/gstegl.h index 4fc2f3d4f..82d4953dd 100644 --- a/gst-libs/gst/gl/egl/gstegl.h +++ b/gst-libs/gst/gl/egl/gstegl.h @@ -30,8 +30,10 @@ #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wredundant-decls" +#if !defined(__cplusplus) #pragma GCC optimize ("gnu89-inline") #endif +#endif #ifndef EGL_EGLEXT_PROTOTYPES #define EGL_EGLEXT_PROTOTYPES 1 |