diff options
author | Emil Velikov <[email protected]> | 2016-10-12 18:49:36 +0100 |
---|---|---|
committer | Emil Velikov <[email protected]> | 2016-10-14 11:08:59 +0100 |
commit | c85b34ffd04f9a7a16fe30173474e857d0f42d5f (patch) | |
tree | 0d44269b23052fae562e3bfcbae3eab09ae444a5 | |
parent | 0b241b7717b688c75c3d5d1571f195a6d2fc1d63 (diff) |
mesa_glinterop: allow building without X and related headers
This commit effectively reverts c10dcb2ce837922c6ee4e191e6d6202098a5ee10
and fixes the typedef redefinition which inspired it.
In order to prevent requiring X packages at build time earlier commit
forward declared the required X/GLX typedefs. Since that approach
introduced typedef redefinition (a C11 feature) it was reverted.
To avoid the redefinition while _not_ mandating X and related headers
forward declare the structs and use those through the header.
As anyone uses the mesa interop header they ensure that the X (or others
in terms of EGL) headers are included, which ensures that everything is
resolved within the compilation unit.
Cc: Vinson Lee <[email protected]>
Cc: "12.0" <[email protected]>
Cc: Tapani Pälli <[email protected]>
Cc: Chih-Wei Huang <[email protected]>
Fixes: c10dcb2ce837 ("Revert "mesa_glinterop: remove inclusion of GLX
header"")
Fixes: 8472045b16b3 ("mesa_glinterop: remove inclusion of GLX header")
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=96770
Signed-off-by: Emil Velikov <[email protected]>
Tested-by: Vinson Lee <[email protected]>
Reviewed-by: Tapani Pälli <[email protected]>
-rw-r--r-- | include/GL/mesa_glinterop.h | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/include/GL/mesa_glinterop.h b/include/GL/mesa_glinterop.h index c6a967ea8ec..173476a988e 100644 --- a/include/GL/mesa_glinterop.h +++ b/include/GL/mesa_glinterop.h @@ -52,12 +52,15 @@ #include <stddef.h> #include <stdint.h> -#include <GL/glx.h> #ifdef __cplusplus extern "C" { #endif +/* Forward declarations to avoid inclusion of GL/glx.h */ +struct _XDisplay; +struct __GLXcontextRec; + /* Forward declarations to avoid inclusion of EGL/egl.h */ typedef void *EGLDisplay; typedef void *EGLContext; @@ -243,7 +246,7 @@ struct mesa_glinterop_export_out { * \return MESA_GLINTEROP_SUCCESS or MESA_GLINTEROP_* != 0 on error */ int -MesaGLInteropGLXQueryDeviceInfo(Display *dpy, GLXContext context, +MesaGLInteropGLXQueryDeviceInfo(struct _XDisplay *dpy, struct __GLXcontextRec *context, struct mesa_glinterop_device_info *out); @@ -268,7 +271,7 @@ MesaGLInteropEGLQueryDeviceInfo(EGLDisplay dpy, EGLContext context, * \return MESA_GLINTEROP_SUCCESS or MESA_GLINTEROP_* != 0 on error */ int -MesaGLInteropGLXExportObject(Display *dpy, GLXContext context, +MesaGLInteropGLXExportObject(struct _XDisplay *dpy, struct __GLXcontextRec *context, struct mesa_glinterop_export_in *in, struct mesa_glinterop_export_out *out); @@ -283,11 +286,11 @@ MesaGLInteropEGLExportObject(EGLDisplay dpy, EGLContext context, struct mesa_glinterop_export_out *out); -typedef int (PFNMESAGLINTEROPGLXQUERYDEVICEINFOPROC)(Display *dpy, GLXContext context, +typedef int (PFNMESAGLINTEROPGLXQUERYDEVICEINFOPROC)(struct _XDisplay *dpy, struct __GLXcontextRec *context, struct mesa_glinterop_device_info *out); typedef int (PFNMESAGLINTEROPEGLQUERYDEVICEINFOPROC)(EGLDisplay dpy, EGLContext context, struct mesa_glinterop_device_info *out); -typedef int (PFNMESAGLINTEROPGLXEXPORTOBJECTPROC)(Display *dpy, GLXContext context, +typedef int (PFNMESAGLINTEROPGLXEXPORTOBJECTPROC)(struct _XDisplay *dpy, struct __GLXcontextRec *context, struct mesa_glinterop_export_in *in, struct mesa_glinterop_export_out *out); typedef int (PFNMESAGLINTEROPEGLEXPORTOBJECTPROC)(EGLDisplay dpy, EGLContext context, |