}
static void
-DestroyDRIDrawable(Display *dpy, GLXDrawable drawable, int destroy_xdrawable)
+DestroyDRIDrawable(Display *dpy, GLXDrawable drawable)
{
#ifdef GLX_DIRECT_RENDERING
struct glx_display *const priv = __glXInitialize(dpy);
__GLXDRIdrawable *pdraw = GetGLXDRIDrawable(dpy, drawable);
- XID xid;
if (priv != NULL && pdraw != NULL) {
- xid = pdraw->xDrawable;
(*pdraw->destroyDrawable) (pdraw);
__glxHashDelete(priv->drawHash, drawable);
- if (destroy_xdrawable)
- XFreePixmap(priv->dpy, xid);
}
#endif
}
protocolDestroyDrawable(dpy, drawable, glxCode);
DestroyGLXDrawable(dpy, drawable);
- DestroyDRIDrawable(dpy, drawable, GL_FALSE);
+ DestroyDRIDrawable(dpy, drawable);
return;
}
CARD32 *data;
CARD8 opcode;
unsigned int i;
- Pixmap pixmap;
GLboolean glx_1_3 = GL_FALSE;
- int depth = config->rgbBits;
if (priv == NULL)
return None;
UnlockDisplay(dpy);
SyncHandle();
- if (depth == 30)
- depth = 32;
-
- pixmap = XCreatePixmap(dpy, RootWindow(dpy, config->screen),
- width, height, depth);
-
- if (!CreateDRIDrawable(dpy, config, pixmap, id, attrib_list, i)) {
+ /* xserver created a pixmap with the same id as pbuffer */
+ if (!CreateDRIDrawable(dpy, config, id, id, attrib_list, i)) {
CARD32 o = glx_1_3 ? X_GLXDestroyPbuffer : X_GLXvop_DestroyGLXPbufferSGIX;
- XFreePixmap(dpy, pixmap);
protocolDestroyDrawable(dpy, id, o);
id = None;
}
UnlockDisplay(dpy);
SyncHandle();
- DestroyDRIDrawable(dpy, drawable, GL_TRUE);
+ DestroyDRIDrawable(dpy, drawable);
return;
}