static int ProcXF86DRICreateContext( register ClientPtr client ) { xXF86DRICreateContextReply rep; ScreenPtr pScreen; REQUEST(xXF86DRICreateContextReq); REQUEST_SIZE_MATCH(xXF86DRICreateContextReq); if (stuff->screen >= screenInfo.numScreens) { client->errorValue = stuff->screen; return BadValue; } rep.type = X_Reply; rep.length = 0; rep.sequenceNumber = client->sequence; pScreen = screenInfo.screens[stuff->screen]; if (!DRICreateContext( pScreen, NULL, stuff->context, (drm_context_t *)&rep.hHWContext)) { return BadValue; } WriteToClient(client, sizeof(xXF86DRICreateContextReply), (char *)&rep); return Success; }
static int ProcXF86DRICreateContext( register ClientPtr client ) { xXF86DRICreateContextReply rep; ScreenPtr pScreen; VisualPtr visual; int i; REQUEST(xXF86DRICreateContextReq); REQUEST_SIZE_MATCH(xXF86DRICreateContextReq); if (stuff->screen >= screenInfo.numScreens) { client->errorValue = stuff->screen; return BadValue; } rep.type = X_Reply; rep.length = 0; rep.sequenceNumber = client->sequence; pScreen = screenInfo.screens[stuff->screen]; visual = pScreen->visuals; /* Find the requested X visual */ for (i = 0; i < pScreen->numVisuals; i++, visual++) if (visual->vid == stuff->visual) break; if (i == pScreen->numVisuals) { /* No visual found */ return BadValue; } if (!DRICreateContext( pScreen, visual, stuff->context, (drm_context_t *)&rep.hHWContext)) { return BadValue; } WriteToClient(client, sizeof(xXF86DRICreateContextReply), (char *)&rep); return (client->noClientException); }