sync code with last improvements from OpenBSD
This commit is contained in:
commit
88965415ff
26235 changed files with 29195616 additions and 0 deletions
525
xserver/glx/vnd_dispatch_stubs.c
Normal file
525
xserver/glx/vnd_dispatch_stubs.c
Normal file
|
@ -0,0 +1,525 @@
|
|||
|
||||
#include <dix-config.h>
|
||||
#include <dix.h>
|
||||
#include "vndserver.h"
|
||||
|
||||
// HACK: The opcode in old glxproto.h has a typo in it.
|
||||
#if !defined(X_GLXCreateContextAttribsARB)
|
||||
#define X_GLXCreateContextAttribsARB X_GLXCreateContextAtrribsARB
|
||||
#endif
|
||||
|
||||
static int dispatch_Render(ClientPtr client)
|
||||
{
|
||||
REQUEST(xGLXRenderReq);
|
||||
CARD32 contextTag;
|
||||
GlxServerVendor *vendor = NULL;
|
||||
REQUEST_AT_LEAST_SIZE(*stuff);
|
||||
contextTag = GlxCheckSwap(client, stuff->contextTag);
|
||||
vendor = glxServer.getContextTag(client, contextTag);
|
||||
if (vendor != NULL) {
|
||||
int ret;
|
||||
ret = glxServer.forwardRequest(vendor, client);
|
||||
return ret;
|
||||
} else {
|
||||
client->errorValue = contextTag;
|
||||
return GlxErrorBase + GLXBadContextTag;
|
||||
}
|
||||
}
|
||||
static int dispatch_RenderLarge(ClientPtr client)
|
||||
{
|
||||
REQUEST(xGLXRenderLargeReq);
|
||||
CARD32 contextTag;
|
||||
GlxServerVendor *vendor = NULL;
|
||||
REQUEST_AT_LEAST_SIZE(*stuff);
|
||||
contextTag = GlxCheckSwap(client, stuff->contextTag);
|
||||
vendor = glxServer.getContextTag(client, contextTag);
|
||||
if (vendor != NULL) {
|
||||
int ret;
|
||||
ret = glxServer.forwardRequest(vendor, client);
|
||||
return ret;
|
||||
} else {
|
||||
client->errorValue = contextTag;
|
||||
return GlxErrorBase + GLXBadContextTag;
|
||||
}
|
||||
}
|
||||
static int dispatch_CreateContext(ClientPtr client)
|
||||
{
|
||||
REQUEST(xGLXCreateContextReq);
|
||||
CARD32 screen, context;
|
||||
GlxServerVendor *vendor = NULL;
|
||||
REQUEST_SIZE_MATCH(*stuff);
|
||||
screen = GlxCheckSwap(client, stuff->screen);
|
||||
context = GlxCheckSwap(client, stuff->context);
|
||||
LEGAL_NEW_RESOURCE(context, client);
|
||||
if (screen < screenInfo.numScreens) {
|
||||
vendor = glxServer.getVendorForScreen(client, screenInfo.screens[screen]);
|
||||
}
|
||||
if (vendor != NULL) {
|
||||
int ret;
|
||||
if (!glxServer.addXIDMap(context, vendor)) {
|
||||
return BadAlloc;
|
||||
}
|
||||
ret = glxServer.forwardRequest(vendor, client);
|
||||
if (ret != Success) {
|
||||
glxServer.removeXIDMap(context);
|
||||
}
|
||||
return ret;
|
||||
} else {
|
||||
client->errorValue = screen;
|
||||
return BadMatch;
|
||||
}
|
||||
}
|
||||
static int dispatch_DestroyContext(ClientPtr client)
|
||||
{
|
||||
REQUEST(xGLXDestroyContextReq);
|
||||
CARD32 context;
|
||||
GlxServerVendor *vendor = NULL;
|
||||
REQUEST_SIZE_MATCH(*stuff);
|
||||
context = GlxCheckSwap(client, stuff->context);
|
||||
vendor = glxServer.getXIDMap(context);
|
||||
if (vendor != NULL) {
|
||||
int ret;
|
||||
ret = glxServer.forwardRequest(vendor, client);
|
||||
if (ret == Success) {
|
||||
glxServer.removeXIDMap(context);
|
||||
}
|
||||
return ret;
|
||||
} else {
|
||||
client->errorValue = context;
|
||||
return GlxErrorBase + GLXBadContext;
|
||||
}
|
||||
}
|
||||
static int dispatch_WaitGL(ClientPtr client)
|
||||
{
|
||||
REQUEST(xGLXWaitGLReq);
|
||||
CARD32 contextTag;
|
||||
GlxServerVendor *vendor = NULL;
|
||||
REQUEST_SIZE_MATCH(*stuff);
|
||||
contextTag = GlxCheckSwap(client, stuff->contextTag);
|
||||
vendor = glxServer.getContextTag(client, contextTag);
|
||||
if (vendor != NULL) {
|
||||
int ret;
|
||||
ret = glxServer.forwardRequest(vendor, client);
|
||||
return ret;
|
||||
} else {
|
||||
client->errorValue = contextTag;
|
||||
return GlxErrorBase + GLXBadContextTag;
|
||||
}
|
||||
}
|
||||
static int dispatch_WaitX(ClientPtr client)
|
||||
{
|
||||
REQUEST(xGLXWaitXReq);
|
||||
CARD32 contextTag;
|
||||
GlxServerVendor *vendor = NULL;
|
||||
REQUEST_SIZE_MATCH(*stuff);
|
||||
contextTag = GlxCheckSwap(client, stuff->contextTag);
|
||||
vendor = glxServer.getContextTag(client, contextTag);
|
||||
if (vendor != NULL) {
|
||||
int ret;
|
||||
ret = glxServer.forwardRequest(vendor, client);
|
||||
return ret;
|
||||
} else {
|
||||
client->errorValue = contextTag;
|
||||
return GlxErrorBase + GLXBadContextTag;
|
||||
}
|
||||
}
|
||||
static int dispatch_UseXFont(ClientPtr client)
|
||||
{
|
||||
REQUEST(xGLXUseXFontReq);
|
||||
CARD32 contextTag;
|
||||
GlxServerVendor *vendor = NULL;
|
||||
REQUEST_SIZE_MATCH(*stuff);
|
||||
contextTag = GlxCheckSwap(client, stuff->contextTag);
|
||||
vendor = glxServer.getContextTag(client, contextTag);
|
||||
if (vendor != NULL) {
|
||||
int ret;
|
||||
ret = glxServer.forwardRequest(vendor, client);
|
||||
return ret;
|
||||
} else {
|
||||
client->errorValue = contextTag;
|
||||
return GlxErrorBase + GLXBadContextTag;
|
||||
}
|
||||
}
|
||||
static int dispatch_CreateGLXPixmap(ClientPtr client)
|
||||
{
|
||||
REQUEST(xGLXCreateGLXPixmapReq);
|
||||
CARD32 screen, glxpixmap;
|
||||
GlxServerVendor *vendor = NULL;
|
||||
REQUEST_SIZE_MATCH(*stuff);
|
||||
screen = GlxCheckSwap(client, stuff->screen);
|
||||
glxpixmap = GlxCheckSwap(client, stuff->glxpixmap);
|
||||
LEGAL_NEW_RESOURCE(glxpixmap, client);
|
||||
if (screen < screenInfo.numScreens) {
|
||||
vendor = glxServer.getVendorForScreen(client, screenInfo.screens[screen]);
|
||||
}
|
||||
if (vendor != NULL) {
|
||||
int ret;
|
||||
if (!glxServer.addXIDMap(glxpixmap, vendor)) {
|
||||
return BadAlloc;
|
||||
}
|
||||
ret = glxServer.forwardRequest(vendor, client);
|
||||
if (ret != Success) {
|
||||
glxServer.removeXIDMap(glxpixmap);
|
||||
}
|
||||
return ret;
|
||||
} else {
|
||||
client->errorValue = screen;
|
||||
return BadMatch;
|
||||
}
|
||||
}
|
||||
static int dispatch_GetVisualConfigs(ClientPtr client)
|
||||
{
|
||||
REQUEST(xGLXGetVisualConfigsReq);
|
||||
CARD32 screen;
|
||||
GlxServerVendor *vendor = NULL;
|
||||
REQUEST_SIZE_MATCH(*stuff);
|
||||
screen = GlxCheckSwap(client, stuff->screen);
|
||||
if (screen < screenInfo.numScreens) {
|
||||
vendor = glxServer.getVendorForScreen(client, screenInfo.screens[screen]);
|
||||
}
|
||||
if (vendor != NULL) {
|
||||
int ret;
|
||||
ret = glxServer.forwardRequest(vendor, client);
|
||||
return ret;
|
||||
} else {
|
||||
client->errorValue = screen;
|
||||
return BadMatch;
|
||||
}
|
||||
}
|
||||
static int dispatch_DestroyGLXPixmap(ClientPtr client)
|
||||
{
|
||||
REQUEST(xGLXDestroyGLXPixmapReq);
|
||||
CARD32 glxpixmap;
|
||||
GlxServerVendor *vendor = NULL;
|
||||
REQUEST_SIZE_MATCH(*stuff);
|
||||
glxpixmap = GlxCheckSwap(client, stuff->glxpixmap);
|
||||
vendor = glxServer.getXIDMap(glxpixmap);
|
||||
if (vendor != NULL) {
|
||||
int ret;
|
||||
ret = glxServer.forwardRequest(vendor, client);
|
||||
return ret;
|
||||
} else {
|
||||
client->errorValue = glxpixmap;
|
||||
return GlxErrorBase + GLXBadPixmap;
|
||||
}
|
||||
}
|
||||
static int dispatch_QueryExtensionsString(ClientPtr client)
|
||||
{
|
||||
REQUEST(xGLXQueryExtensionsStringReq);
|
||||
CARD32 screen;
|
||||
GlxServerVendor *vendor = NULL;
|
||||
REQUEST_SIZE_MATCH(*stuff);
|
||||
screen = GlxCheckSwap(client, stuff->screen);
|
||||
if (screen < screenInfo.numScreens) {
|
||||
vendor = glxServer.getVendorForScreen(client, screenInfo.screens[screen]);
|
||||
}
|
||||
if (vendor != NULL) {
|
||||
int ret;
|
||||
ret = glxServer.forwardRequest(vendor, client);
|
||||
return ret;
|
||||
} else {
|
||||
client->errorValue = screen;
|
||||
return BadMatch;
|
||||
}
|
||||
}
|
||||
static int dispatch_QueryServerString(ClientPtr client)
|
||||
{
|
||||
REQUEST(xGLXQueryServerStringReq);
|
||||
CARD32 screen;
|
||||
GlxServerVendor *vendor = NULL;
|
||||
REQUEST_SIZE_MATCH(*stuff);
|
||||
screen = GlxCheckSwap(client, stuff->screen);
|
||||
if (screen < screenInfo.numScreens) {
|
||||
vendor = glxServer.getVendorForScreen(client, screenInfo.screens[screen]);
|
||||
}
|
||||
if (vendor != NULL) {
|
||||
int ret;
|
||||
ret = glxServer.forwardRequest(vendor, client);
|
||||
return ret;
|
||||
} else {
|
||||
client->errorValue = screen;
|
||||
return BadMatch;
|
||||
}
|
||||
}
|
||||
static int dispatch_ChangeDrawableAttributes(ClientPtr client)
|
||||
{
|
||||
REQUEST(xGLXChangeDrawableAttributesReq);
|
||||
CARD32 drawable;
|
||||
GlxServerVendor *vendor = NULL;
|
||||
REQUEST_AT_LEAST_SIZE(*stuff);
|
||||
drawable = GlxCheckSwap(client, stuff->drawable);
|
||||
vendor = glxServer.getXIDMap(drawable);
|
||||
if (vendor != NULL) {
|
||||
int ret;
|
||||
ret = glxServer.forwardRequest(vendor, client);
|
||||
return ret;
|
||||
} else {
|
||||
client->errorValue = drawable;
|
||||
return BadDrawable;
|
||||
}
|
||||
}
|
||||
static int dispatch_CreateNewContext(ClientPtr client)
|
||||
{
|
||||
REQUEST(xGLXCreateNewContextReq);
|
||||
CARD32 screen, context;
|
||||
GlxServerVendor *vendor = NULL;
|
||||
REQUEST_SIZE_MATCH(*stuff);
|
||||
screen = GlxCheckSwap(client, stuff->screen);
|
||||
context = GlxCheckSwap(client, stuff->context);
|
||||
LEGAL_NEW_RESOURCE(context, client);
|
||||
if (screen < screenInfo.numScreens) {
|
||||
vendor = glxServer.getVendorForScreen(client, screenInfo.screens[screen]);
|
||||
}
|
||||
if (vendor != NULL) {
|
||||
int ret;
|
||||
if (!glxServer.addXIDMap(context, vendor)) {
|
||||
return BadAlloc;
|
||||
}
|
||||
ret = glxServer.forwardRequest(vendor, client);
|
||||
if (ret != Success) {
|
||||
glxServer.removeXIDMap(context);
|
||||
}
|
||||
return ret;
|
||||
} else {
|
||||
client->errorValue = screen;
|
||||
return BadMatch;
|
||||
}
|
||||
}
|
||||
static int dispatch_CreatePbuffer(ClientPtr client)
|
||||
{
|
||||
REQUEST(xGLXCreatePbufferReq);
|
||||
CARD32 screen, pbuffer;
|
||||
GlxServerVendor *vendor = NULL;
|
||||
REQUEST_AT_LEAST_SIZE(*stuff);
|
||||
screen = GlxCheckSwap(client, stuff->screen);
|
||||
pbuffer = GlxCheckSwap(client, stuff->pbuffer);
|
||||
LEGAL_NEW_RESOURCE(pbuffer, client);
|
||||
if (screen < screenInfo.numScreens) {
|
||||
vendor = glxServer.getVendorForScreen(client, screenInfo.screens[screen]);
|
||||
}
|
||||
if (vendor != NULL) {
|
||||
int ret;
|
||||
if (!glxServer.addXIDMap(pbuffer, vendor)) {
|
||||
return BadAlloc;
|
||||
}
|
||||
ret = glxServer.forwardRequest(vendor, client);
|
||||
if (ret != Success) {
|
||||
glxServer.removeXIDMap(pbuffer);
|
||||
}
|
||||
return ret;
|
||||
} else {
|
||||
client->errorValue = screen;
|
||||
return BadMatch;
|
||||
}
|
||||
}
|
||||
static int dispatch_CreatePixmap(ClientPtr client)
|
||||
{
|
||||
REQUEST(xGLXCreatePixmapReq);
|
||||
CARD32 screen, glxpixmap;
|
||||
GlxServerVendor *vendor = NULL;
|
||||
REQUEST_AT_LEAST_SIZE(*stuff);
|
||||
screen = GlxCheckSwap(client, stuff->screen);
|
||||
glxpixmap = GlxCheckSwap(client, stuff->glxpixmap);
|
||||
LEGAL_NEW_RESOURCE(glxpixmap, client);
|
||||
if (screen < screenInfo.numScreens) {
|
||||
vendor = glxServer.getVendorForScreen(client, screenInfo.screens[screen]);
|
||||
}
|
||||
if (vendor != NULL) {
|
||||
int ret;
|
||||
if (!glxServer.addXIDMap(glxpixmap, vendor)) {
|
||||
return BadAlloc;
|
||||
}
|
||||
ret = glxServer.forwardRequest(vendor, client);
|
||||
if (ret != Success) {
|
||||
glxServer.removeXIDMap(glxpixmap);
|
||||
}
|
||||
return ret;
|
||||
} else {
|
||||
client->errorValue = screen;
|
||||
return BadMatch;
|
||||
}
|
||||
}
|
||||
static int dispatch_CreateWindow(ClientPtr client)
|
||||
{
|
||||
REQUEST(xGLXCreateWindowReq);
|
||||
CARD32 screen, glxwindow;
|
||||
GlxServerVendor *vendor = NULL;
|
||||
REQUEST_AT_LEAST_SIZE(*stuff);
|
||||
screen = GlxCheckSwap(client, stuff->screen);
|
||||
glxwindow = GlxCheckSwap(client, stuff->glxwindow);
|
||||
LEGAL_NEW_RESOURCE(glxwindow, client);
|
||||
if (screen < screenInfo.numScreens) {
|
||||
vendor = glxServer.getVendorForScreen(client, screenInfo.screens[screen]);
|
||||
}
|
||||
if (vendor != NULL) {
|
||||
int ret;
|
||||
if (!glxServer.addXIDMap(glxwindow, vendor)) {
|
||||
return BadAlloc;
|
||||
}
|
||||
ret = glxServer.forwardRequest(vendor, client);
|
||||
if (ret != Success) {
|
||||
glxServer.removeXIDMap(glxwindow);
|
||||
}
|
||||
return ret;
|
||||
} else {
|
||||
client->errorValue = screen;
|
||||
return BadMatch;
|
||||
}
|
||||
}
|
||||
static int dispatch_CreateContextAttribsARB(ClientPtr client)
|
||||
{
|
||||
REQUEST(xGLXCreateContextAttribsARBReq);
|
||||
CARD32 screen, context;
|
||||
GlxServerVendor *vendor = NULL;
|
||||
REQUEST_AT_LEAST_SIZE(*stuff);
|
||||
screen = GlxCheckSwap(client, stuff->screen);
|
||||
context = GlxCheckSwap(client, stuff->context);
|
||||
LEGAL_NEW_RESOURCE(context, client);
|
||||
if (screen < screenInfo.numScreens) {
|
||||
vendor = glxServer.getVendorForScreen(client, screenInfo.screens[screen]);
|
||||
}
|
||||
if (vendor != NULL) {
|
||||
int ret;
|
||||
if (!glxServer.addXIDMap(context, vendor)) {
|
||||
return BadAlloc;
|
||||
}
|
||||
ret = glxServer.forwardRequest(vendor, client);
|
||||
if (ret != Success) {
|
||||
glxServer.removeXIDMap(context);
|
||||
}
|
||||
return ret;
|
||||
} else {
|
||||
client->errorValue = screen;
|
||||
return BadMatch;
|
||||
}
|
||||
}
|
||||
static int dispatch_DestroyPbuffer(ClientPtr client)
|
||||
{
|
||||
REQUEST(xGLXDestroyPbufferReq);
|
||||
CARD32 pbuffer;
|
||||
GlxServerVendor *vendor = NULL;
|
||||
REQUEST_SIZE_MATCH(*stuff);
|
||||
pbuffer = GlxCheckSwap(client, stuff->pbuffer);
|
||||
vendor = glxServer.getXIDMap(pbuffer);
|
||||
if (vendor != NULL) {
|
||||
int ret;
|
||||
ret = glxServer.forwardRequest(vendor, client);
|
||||
if (ret == Success) {
|
||||
glxServer.removeXIDMap(pbuffer);
|
||||
}
|
||||
return ret;
|
||||
} else {
|
||||
client->errorValue = pbuffer;
|
||||
return GlxErrorBase + GLXBadPbuffer;
|
||||
}
|
||||
}
|
||||
static int dispatch_DestroyPixmap(ClientPtr client)
|
||||
{
|
||||
REQUEST(xGLXDestroyPixmapReq);
|
||||
CARD32 glxpixmap;
|
||||
GlxServerVendor *vendor = NULL;
|
||||
REQUEST_SIZE_MATCH(*stuff);
|
||||
glxpixmap = GlxCheckSwap(client, stuff->glxpixmap);
|
||||
vendor = glxServer.getXIDMap(glxpixmap);
|
||||
if (vendor != NULL) {
|
||||
int ret;
|
||||
ret = glxServer.forwardRequest(vendor, client);
|
||||
if (ret == Success) {
|
||||
glxServer.removeXIDMap(glxpixmap);
|
||||
}
|
||||
return ret;
|
||||
} else {
|
||||
client->errorValue = glxpixmap;
|
||||
return GlxErrorBase + GLXBadPixmap;
|
||||
}
|
||||
}
|
||||
static int dispatch_DestroyWindow(ClientPtr client)
|
||||
{
|
||||
REQUEST(xGLXDestroyWindowReq);
|
||||
CARD32 glxwindow;
|
||||
GlxServerVendor *vendor = NULL;
|
||||
REQUEST_SIZE_MATCH(*stuff);
|
||||
glxwindow = GlxCheckSwap(client, stuff->glxwindow);
|
||||
vendor = glxServer.getXIDMap(glxwindow);
|
||||
if (vendor != NULL) {
|
||||
int ret;
|
||||
ret = glxServer.forwardRequest(vendor, client);
|
||||
if (ret == Success) {
|
||||
glxServer.removeXIDMap(glxwindow);
|
||||
}
|
||||
return ret;
|
||||
} else {
|
||||
client->errorValue = glxwindow;
|
||||
return GlxErrorBase + GLXBadWindow;
|
||||
}
|
||||
}
|
||||
static int dispatch_GetDrawableAttributes(ClientPtr client)
|
||||
{
|
||||
REQUEST(xGLXGetDrawableAttributesReq);
|
||||
CARD32 drawable;
|
||||
GlxServerVendor *vendor = NULL;
|
||||
REQUEST_SIZE_MATCH(*stuff);
|
||||
drawable = GlxCheckSwap(client, stuff->drawable);
|
||||
vendor = glxServer.getXIDMap(drawable);
|
||||
if (vendor != NULL) {
|
||||
int ret;
|
||||
ret = glxServer.forwardRequest(vendor, client);
|
||||
return ret;
|
||||
} else {
|
||||
client->errorValue = drawable;
|
||||
return BadDrawable;
|
||||
}
|
||||
}
|
||||
static int dispatch_GetFBConfigs(ClientPtr client)
|
||||
{
|
||||
REQUEST(xGLXGetFBConfigsReq);
|
||||
CARD32 screen;
|
||||
GlxServerVendor *vendor = NULL;
|
||||
REQUEST_SIZE_MATCH(*stuff);
|
||||
screen = GlxCheckSwap(client, stuff->screen);
|
||||
if (screen < screenInfo.numScreens) {
|
||||
vendor = glxServer.getVendorForScreen(client, screenInfo.screens[screen]);
|
||||
}
|
||||
if (vendor != NULL) {
|
||||
int ret;
|
||||
ret = glxServer.forwardRequest(vendor, client);
|
||||
return ret;
|
||||
} else {
|
||||
client->errorValue = screen;
|
||||
return BadMatch;
|
||||
}
|
||||
}
|
||||
static int dispatch_QueryContext(ClientPtr client)
|
||||
{
|
||||
REQUEST(xGLXQueryContextReq);
|
||||
CARD32 context;
|
||||
GlxServerVendor *vendor = NULL;
|
||||
REQUEST_SIZE_MATCH(*stuff);
|
||||
context = GlxCheckSwap(client, stuff->context);
|
||||
vendor = glxServer.getXIDMap(context);
|
||||
if (vendor != NULL) {
|
||||
int ret;
|
||||
ret = glxServer.forwardRequest(vendor, client);
|
||||
return ret;
|
||||
} else {
|
||||
client->errorValue = context;
|
||||
return GlxErrorBase + GLXBadContext;
|
||||
}
|
||||
}
|
||||
static int dispatch_IsDirect(ClientPtr client)
|
||||
{
|
||||
REQUEST(xGLXIsDirectReq);
|
||||
CARD32 context;
|
||||
GlxServerVendor *vendor = NULL;
|
||||
REQUEST_SIZE_MATCH(*stuff);
|
||||
context = GlxCheckSwap(client, stuff->context);
|
||||
vendor = glxServer.getXIDMap(context);
|
||||
if (vendor != NULL) {
|
||||
int ret;
|
||||
ret = glxServer.forwardRequest(vendor, client);
|
||||
return ret;
|
||||
} else {
|
||||
client->errorValue = context;
|
||||
return GlxErrorBase + GLXBadContext;
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue