{
__glXFreeVertexArrayState(gc);
- if (gc->vendor)
- XFree((char *) gc->vendor);
- if (gc->renderer)
- XFree((char *) gc->renderer);
- if (gc->version)
- XFree((char *) gc->version);
- if (gc->extensions)
- XFree((char *) gc->extensions);
+ free((char *) gc->vendor);
+ free((char *) gc->renderer);
+ free((char *) gc->version);
+ free((char *) gc->extensions);
__glFreeAttributeState(gc);
- XFree((char *) gc->buf);
- Xfree((char *) gc->client_state_private);
- XFree((char *) gc);
+ free((char *) gc->buf);
+ free((char *) gc->client_state_private);
+ free((char *) gc);
}
static Bool
}
/* Allocate our context record */
- gc = Xmalloc(sizeof *gc);
+ gc = calloc(1, sizeof *gc);
if (!gc) {
/* Out of memory */
return NULL;
}
- memset(gc, 0, sizeof *gc);
glx_context_init(gc, psc, mode);
gc->isDirect = GL_FALSE;
gc->vtable = &indirect_context_vtable;
- state = Xmalloc(sizeof(struct __GLXattributeRec));
+ state = calloc(1, sizeof(struct __GLXattributeRec));
if (state == NULL) {
/* Out of memory */
- Xfree(gc);
+ free(gc);
return NULL;
}
gc->client_state_private = state;
- memset(gc->client_state_private, 0, sizeof(struct __GLXattributeRec));
state->NoDrawArraysProtocol = (getenv("LIBGL_NO_DRAWARRAYS") != NULL);
/*
*/
bufSize = (XMaxRequestSize(psc->dpy) * 4) - sz_xGLXRenderReq;
- gc->buf = (GLubyte *) Xmalloc(bufSize);
+ gc->buf = malloc(bufSize);
if (!gc->buf) {
- Xfree(gc->client_state_private);
- Xfree(gc);
+ free(gc->client_state_private);
+ free(gc);
return NULL;
}
gc->bufSize = bufSize;
return gc;
}
+static struct glx_context *
+indirect_create_context_attribs(struct glx_screen *base,
+ struct glx_config *config_base,
+ struct glx_context *shareList,
+ unsigned num_attribs,
+ const uint32_t *attribs,
+ unsigned *error)
+{
+ /* All of the attribute validation for indirect contexts is handled on the
+ * server, so there's not much to do here.
+ */
+ (void) num_attribs;
+ (void) attribs;
+
+ /* The error parameter is only used on the server so that correct GLX
+ * protocol errors can be generated. On the client, it can be ignored.
+ */
+ (void) error;
+
+ return indirect_create_context(base, config_base, shareList, 0);
+}
+
struct glx_screen_vtable indirect_screen_vtable = {
- indirect_create_context
+ indirect_create_context,
+ indirect_create_context_attribs
};
_X_HIDDEN struct glx_screen *
{
struct glx_screen *psc;
- psc = Xmalloc(sizeof *psc);
+ psc = calloc(1, sizeof *psc);
if (psc == NULL)
return NULL;
- memset(psc, 0, sizeof *psc);
glx_screen_init(psc, screen, priv);
psc->vtable = &indirect_screen_vtable;