blob: 136848763b366a8e9dc85c148f0f07ead9a3c6ec [file] [log] [blame]
From 3e0d5577444b32579bdf5b69d720a322322ff7bc Mon Sep 17 00:00:00 2001
From: Milian Wolff <milian.wolff@kdab.com>
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 <raj.khem@gmail.com>
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 <QtGui/qtgui-config.h>
#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 <gst/gl/gstglconfig.h>
-#undef GST_GL_HAVE_GLSYNC
-#define GST_GL_HAVE_GLSYNC 1
-#include <gst/gl/gstglfuncs.h>
/* 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 <QtGui/qopengl.h>
+
+/* 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 <gst/gl/gstglfuncs.h>
+
#if defined(QT_OPENGL_ES_2)
#include <QtGui/QOpenGLContext>
#include <QtGui/QOpenGLFunctions>