If CreateDRIDrawable fails, then return 0 as the GLXDrawable. Cc: nob...@dreamwidth.org Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=33758 Note: This is candidate for the stable branch. Signed-off-by: Chad Versace <c...@chad-versace.us> --- src/glx/glx_pbuffer.c | 17 +++++++++++------ 1 files changed, 11 insertions(+), 6 deletions(-)
diff --git a/src/glx/glx_pbuffer.c b/src/glx/glx_pbuffer.c index 1f4c0f3..19be4e5 100644 --- a/src/glx/glx_pbuffer.c +++ b/src/glx/glx_pbuffer.c @@ -34,6 +34,7 @@ #include <X11/extensions/extutil.h> #include <X11/extensions/Xext.h> #include <assert.h> +#include <stdbool.h> #include <string.h> #include "glxextensions.h" @@ -187,7 +188,7 @@ determineTextureFormat(const int *attribs, int numAttribs) return 0; } -static void +static bool CreateDRIDrawable(Display *dpy, struct glx_config *config, XID drawable, XID glxdrawable, const int *attrib_list, size_t num_attribs) @@ -204,16 +205,17 @@ CreateDRIDrawable(Display *dpy, struct glx_config *config, glxdrawable, config); if (pdraw == NULL) { fprintf(stderr, "failed to create drawable\n"); - return; + return false; } if (__glxHashInsert(priv->drawHash, glxdrawable, pdraw)) { (*pdraw->destroyDrawable) (pdraw); - return; /* FIXME: Check what we're supposed to do here... */ + return false; } pdraw->textureTarget = determineTextureTarget(attrib_list, num_attribs); pdraw->textureFormat = determineTextureFormat(attrib_list, num_attribs); + return true; } static void @@ -371,6 +373,7 @@ static GLXDrawable CreateDrawable(Display *dpy, struct glx_config *config, Drawable drawable, const int *attrib_list, CARD8 glxCode) { + bool ok; xGLXCreateWindowReq *req; CARD32 *data; unsigned int i; @@ -405,9 +408,11 @@ CreateDrawable(Display *dpy, struct glx_config *config, UnlockDisplay(dpy); SyncHandle(); - CreateDRIDrawable(dpy, config, drawable, xid, attrib_list, i); - - return xid; + ok = CreateDRIDrawable(dpy, config, drawable, xid, attrib_list, i); + if (ok) + return xid; + else + return 0; } -- 1.7.5.4 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev