2012/3/1 Chad Versace <chad.vers...@linux.intel.com>: > On 03/01/2012 11:39 AM, Benjamin Franzke wrote: >> 2012/3/1 Chad Versace <chad.vers...@linux.intel.com>: >>> On 02/29/2012 07:36 AM, Benjamin Franzke wrote: >>>> We dont want eglplatform.h to typedef egl native types >>>> to x11 types, when x11 headers are not available. >>>> --- >>>> configure.ac | 4 ++++ >>>> 1 files changed, 4 insertions(+), 0 deletions(-) >>>> >>>> diff --git a/configure.ac b/configure.ac >>>> index 0caa1b1..92a0e52 100644 >>>> --- a/configure.ac >>>> +++ b/configure.ac >>>> @@ -1402,6 +1402,10 @@ if test "x$enable_egl" = xyes; then >>>> >>>> AC_CHECK_FUNC(mincore, [DEFINES="$DEFINES -DHAVE_MINCORE"]) >>>> >>>> + if test "$have_x" != yes; then >>>> + DEFINES="$DEFINES -DMESA_EGL_NO_X11_HEADERS" >>>> + fi >>>> + >>>> if test "$enable_static" != yes; then >>>> # build egl_glx when libGL is built >>>> if test "x$enable_glx" = xyes; then >>> >>> After examining the where the macro is used, in eglplatform.h ... >>> >>> --- snip --- >>> #elif defined(__unix__) >>> >>> #ifdef MESA_EGL_NO_X11_HEADERS >>> >>> typedef void *EGLNativeDisplayType; >>> typedef khronos_uint32_t EGLNativePixmapType; >>> typedef khronos_uint32_t EGLNativeWindowType; >>> >>> #else >>> >>> /* X11 (tentative) */ >>> #include <X11/Xlib.h> >>> #include <X11/Xutil.h> >>> >>> typedef Display *EGLNativeDisplayType; >>> typedef Pixmap EGLNativePixmapType; >>> typedef Window EGLNativeWindowType; >>> >>> #endif /* MESA_EGL_NO_X11_HEADERS */ >>> --- end snip --- >>> >>> I can't think of a valid reason for the #else branch to ever be taken. >>> If you're building EGL on Unix/Linux, but not for gbm (__GBM__), Android >>> (ANDRDOID), >>> Wayland (WL_EGL_PLATFORM), or X (the default), then for what platform >>> are you building libEGL? (The question is not rhetorical). >> >> The platform headers for wayland/gbm are not included when compiling >> src/egl/main/* or some other common code in st/egl, that is when the >> else branch is taken. >> So currently we include Xlib.h when building without x11 platform, >> that fails if its not available. >> Will add a note to the commit message. > > It appears that the patch may introduce a bug in the 64-bit build of libEGL, > but I'm not certain. Here's my reasoning. > > 1. Suppose that > - This patch is applied. > - The system has no X headers installed. > - Some Wayland application has a source file, broken.c, that > #includes <wayland-egl.h> then <EGL/egl.h>. > > 2. In eglapi.c, which defines eglCreateWindowSurface, EGLNativeWindowType > will be defined as khronos_uint32_t. > > 3. In broken.c, wayland-egl.h first defines WL_EGL_PLATFORM. Then > EGLNativeWindowType will be defined as wl_egl_window*, a 64-bit type.
Yes, thanks for pointing that out. We should just typedef them to khronos_uintptr_t instead. > > Without the patch, eglapi.c safely typedefs EGLNativeWindowType to XID, which > matches > the system's pointer size. > > - Chad > _______________________________________________ > mesa-dev mailing list > mesa-dev@lists.freedesktop.org > http://lists.freedesktop.org/mailman/listinfo/mesa-dev _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev