On 31 July 2015 at 11:02, Frank Binns <frank.bi...@imgtec.com> wrote: > Both eglCreatePixmapSurface and eglCreateWindowSurface were incorrectly > setting the EGL error to be EGL_BAD_ALLOC when an invalid native drawable > handle was being passed in. The EGL spec states the following for > eglCreatePixmapSurface: > > "If pixmap is not a valid native pixmap handle, then an EGL_BAD_- > NATIVE_PIXMAP error should be generated." > > (eglCreateWindowSurface has similar text) > > Correctly set the EGL error value based on xcb_get_geometry_reply returning > an error structure. > > Signed-off-by: Frank Binns <frank.bi...@imgtec.com> > --- > src/egl/drivers/dri2/platform_x11.c | 14 ++++++++++---- > 1 file changed, 10 insertions(+), 4 deletions(-) > > diff --git a/src/egl/drivers/dri2/platform_x11.c > b/src/egl/drivers/dri2/platform_x11.c > index eb8d185..d35e9e2 100644 > --- a/src/egl/drivers/dri2/platform_x11.c > +++ b/src/egl/drivers/dri2/platform_x11.c > @@ -265,10 +265,16 @@ dri2_x11_create_surface(_EGLDriver *drv, _EGLDisplay > *disp, EGLint type, > if (type != EGL_PBUFFER_BIT) { > cookie = xcb_get_geometry (dri2_dpy->conn, dri2_surf->drawable); > reply = xcb_get_geometry_reply (dri2_dpy->conn, cookie, &error); > - if (reply == NULL || error != NULL) { > - _eglError(EGL_BAD_ALLOC, "xcb_get_geometry"); > - free(error); > - goto cleanup_dri_drawable; > + if (error != NULL) { > + if (type == EGL_WINDOW_BIT) > + _eglError(EGL_BAD_NATIVE_WINDOW, "xcb_get_geometry"); > + else > + _eglError(EGL_BAD_NATIVE_PIXMAP, "xcb_get_geometry"); Obviously in most cases xcb_get_geometry_reply will fail due to the above two reasons, but won't these trigger even if we fail due to ENOMEM ? The xcb documentation does not explicitly mention if error will be non-NULL in the latter case, although common sense seems to hint that way.
-Emil _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev