summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/glx/x11/glx_pbuffer.c26
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);