On Wed, Oct 12, 2016 at 10:49 AM, Emil Velikov <emil.l.veli...@gmail.com> wrote: > 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 <v...@freedesktop.org> > Cc: "12.0" <mesa-sta...@lists.freedesktop.org> > Cc: Tapani Pälli <tapani.pa...@intel.com> > Cc: Chih-Wei Huang <cwhu...@android-x86.org> > 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 <emil.veli...@collabora.com> > --- > TL;DR; Yay typedefs, because they make things so much better ;-) > > Tapani/Chih-Wei, this should fix the breakage that you are seing. Please > let me know if it sorts things on your end. > > Vison, this should resolve things on your end as well. A confirmation > would be great. > --- > include/GL/mesa_glinterop.h | 13 ++++++++----- > 1 file changed, 8 insertions(+), 5 deletions(-) > > diff --git a/include/GL/mesa_glinterop.h b/include/GL/mesa_glinterop.h > index c6a967e..173476a 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, > -- > 2.10.0 >
Builds okay with this patch for me. Tested-by: Vinson Lee <v...@freedesktop.org> _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev