qmlgl: ensure Qt defines GLsync to fix compile on some platforms

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,
 ^~~~~~~~~~~~~~~~~~~
```
This commit is contained in:
Milian Wolff 2019-11-26 15:08:20 +01:00 committed by GStreamer Merge Bot
parent 4046970b01
commit 3e0d557744

View file

@ -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>