From 3e0d5577444b32579bdf5b69d720a322322ff7bc Mon Sep 17 00:00:00 2001 From: Milian Wolff Date: Tue, 26 Nov 2019 15:08:20 +0100 Subject: [PATCH] qmlgl: ensure Qt defines GLsync to fix compile on some platforms MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit By explictly including QtGui/qopengl.h we force the code path that defines GLsync in the Qt-specific way. Without that, some platforms failed to compile the qmlgl plugin, since neither Qt nor gstreamer defined GLsync then, leading to e.g.: ``` make[4]: Entering directory '/.../gst-plugins-good-1.16.1/ext/qt' CXX libgstqmlgl_la-qtitem.lo In file included from gstqtgl.h:32, from qtitem.h:27, from qtitem.cc:28: /.../usr/include/gstreamer-1.0/ gst/gl/gstglfuncs.h:93:17: error: expected identifier before ‘*’ token ret (GSTGLAPI *name) args; ^ /.../usr/include/gstreamer-1.0/ gst/gl/glprototypes/sync.h:27:1: note: in expansion of macro ‘GST_GL_EXT_FUNCTION’ GST_GL_EXT_FUNCTION (GLsync, FenceSync, ^~~~~~~~~~~~~~~~~~~ ``` Signed-off-by: Khem Raj Upstream-Status: Backport [https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/commit/3e0d5577444b32579bdf5b69d720a322322ff7bc] --- ext/qt/gstqtgl.h | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) --- a/ext/qt/gstqtgl.h +++ b/ext/qt/gstqtgl.h @@ -22,14 +22,7 @@ #include #endif -/* qt uses the same trick as us to typedef GLsync on GLES2 but to a different - * type which confuses the preprocessor. Instead of trying to reconcile the - * two, we instead use the GLsync definition from Qt from above, and ensure - * that we don't typedef GLsync in gstglfuncs.h */ #include -#undef GST_GL_HAVE_GLSYNC -#define GST_GL_HAVE_GLSYNC 1 -#include /* The glext.h guard was renamed in 2018, but some software which * includes their own copy of the GL headers (such as qt) might have @@ -46,6 +39,17 @@ #endif #endif +/* pulls in GLsync, see below */ +#include + +/* qt uses the same trick as us to typedef GLsync on GLES2 but to a different + * type which confuses the preprocessor. Instead of trying to reconcile the + * two, we instead use the GLsync definition from Qt from above, and ensure + * that we don't typedef GLsync in gstglfuncs.h */ +#undef GST_GL_HAVE_GLSYNC +#define GST_GL_HAVE_GLSYNC 1 +#include + #if defined(QT_OPENGL_ES_2) #include #include