diff options
-rw-r--r-- | src/glx/x11/glx_pbuffer.c | 26 |
1 files changed, 16 insertions, 10 deletions
diff --git a/src/glx/x11/glx_pbuffer.c b/src/glx/x11/glx_pbuffer.c index a7d9f122cb0..b515f0c8395 100644 --- a/src/glx/x11/glx_pbuffer.c +++ b/src/glx/x11/glx_pbuffer.c @@ -278,14 +278,16 @@ CreateDrawable( Display *dpy, const __GLcontextModes * fbconfig, { xGLXCreateWindowReq * req; CARD32 * data; - unsigned int i; - + unsigned int i; - for ( i = 0 ; attrib_list[i * 2] != None ; i++ ) - /* empty */ ; + i = 0; + if (attrib_list) { + while (attrib_list[i * 2] != None) + i++; + } LockDisplay(dpy); - GetReqExtra( GLXCreateWindow, 20 + (8 * i), req ); + GetReqExtra( GLXCreateWindow, 8 * i, req ); data = (CARD32 *) (req + 1); req->reqType = __glXSetupForCommand(dpy); @@ -293,12 +295,15 @@ CreateDrawable( Display *dpy, const __GLcontextModes * fbconfig, req->screen = (CARD32) fbconfig->screen; req->fbconfig = fbconfig->fbconfigID; req->window = (GLXPbuffer) drawable; + req->glxwindow = (GLXWindow) XAllocID(dpy); req->numAttribs = (CARD32) i; + memcpy( data, attrib_list, 8 * i ); + UnlockDisplay(dpy); SyncHandle(); - return drawable; + return (GLXDrawable)req->glxwindow; } @@ -355,10 +360,11 @@ CreatePbuffer( Display *dpy, const __GLcontextModes * fbconfig, CARD32 * data; unsigned int i; - - for ( i = 0 ; attrib_list[i * 2] != None ; i++ ) - /* empty */ ; - + i = 0; + if (attrib_list) { + while (attrib_list[i * 2]) + i++; + } LockDisplay(dpy); id = XAllocID(dpy); |