Merge remote-tracking branch 'ajax/xserver-next'
This commit is contained in:
commit
1c01633877
|
@ -1916,44 +1916,55 @@ DoGetDrawableAttributes(__GLXclientState * cl, XID drawId)
|
|||
{
|
||||
ClientPtr client = cl->client;
|
||||
xGLXGetDrawableAttributesReply reply;
|
||||
__GLXdrawable *pGlxDraw;
|
||||
__GLXdrawable *pGlxDraw = NULL;
|
||||
DrawablePtr pDraw;
|
||||
CARD32 attributes[14];
|
||||
int numAttribs = 0, error;
|
||||
int num = 0, error;
|
||||
|
||||
if (!validGlxDrawable(client, drawId, GLX_DRAWABLE_ANY,
|
||||
DixGetAttrAccess, &pGlxDraw, &error))
|
||||
return error;
|
||||
DixGetAttrAccess, &pGlxDraw, &error)) {
|
||||
/* hack for GLX 1.2 naked windows */
|
||||
int err = dixLookupWindow((WindowPtr *)&pDraw, drawId, client,
|
||||
DixGetAttrAccess);
|
||||
if (err != Success)
|
||||
return error;
|
||||
}
|
||||
if (pGlxDraw)
|
||||
pDraw = pGlxDraw->pDraw;
|
||||
|
||||
attributes[0] = GLX_TEXTURE_TARGET_EXT;
|
||||
attributes[1] = pGlxDraw->target == GL_TEXTURE_2D ? GLX_TEXTURE_2D_EXT :
|
||||
GLX_TEXTURE_RECTANGLE_EXT;
|
||||
numAttribs++;
|
||||
attributes[2] = GLX_Y_INVERTED_EXT;
|
||||
attributes[3] = GL_FALSE;
|
||||
numAttribs++;
|
||||
attributes[4] = GLX_EVENT_MASK;
|
||||
attributes[5] = pGlxDraw->eventMask;
|
||||
numAttribs++;
|
||||
attributes[6] = GLX_WIDTH;
|
||||
attributes[7] = pGlxDraw->pDraw->width;
|
||||
numAttribs++;
|
||||
attributes[8] = GLX_HEIGHT;
|
||||
attributes[9] = pGlxDraw->pDraw->height;
|
||||
numAttribs++;
|
||||
attributes[10] = GLX_FBCONFIG_ID;
|
||||
attributes[11] = pGlxDraw->config->fbconfigID;
|
||||
numAttribs++;
|
||||
if (pGlxDraw->type == GLX_DRAWABLE_PBUFFER) {
|
||||
attributes[12] = GLX_PRESERVED_CONTENTS;
|
||||
attributes[13] = GL_TRUE;
|
||||
numAttribs++;
|
||||
attributes[2*num] = GLX_Y_INVERTED_EXT;
|
||||
attributes[2*num+1] = GL_FALSE;
|
||||
num++;
|
||||
attributes[2*num] = GLX_WIDTH;
|
||||
attributes[2*num+1] = pDraw->width;
|
||||
num++;
|
||||
attributes[2*num] = GLX_HEIGHT;
|
||||
attributes[2*num+1] = pDraw->height;
|
||||
num++;
|
||||
if (pGlxDraw) {
|
||||
attributes[2*num] = GLX_TEXTURE_TARGET_EXT;
|
||||
attributes[2*num+1] = pGlxDraw->target == GL_TEXTURE_2D ?
|
||||
GLX_TEXTURE_2D_EXT :
|
||||
GLX_TEXTURE_RECTANGLE_EXT;
|
||||
num++;
|
||||
attributes[2*num] = GLX_EVENT_MASK;
|
||||
attributes[2*num+1] = pGlxDraw->eventMask;
|
||||
num++;
|
||||
attributes[2*num] = GLX_FBCONFIG_ID;
|
||||
attributes[2*num+1] = pGlxDraw->config->fbconfigID;
|
||||
num++;
|
||||
if (pGlxDraw->type == GLX_DRAWABLE_PBUFFER) {
|
||||
attributes[2*num] = GLX_PRESERVED_CONTENTS;
|
||||
attributes[2*num+1] = GL_TRUE;
|
||||
num++;
|
||||
}
|
||||
}
|
||||
|
||||
reply = (xGLXGetDrawableAttributesReply) {
|
||||
.type = X_Reply,
|
||||
.sequenceNumber = client->sequence,
|
||||
.length = numAttribs << 1,
|
||||
.numAttribs = numAttribs
|
||||
.length = num << 1,
|
||||
.numAttribs = num
|
||||
};
|
||||
|
||||
if (client->swapped) {
|
||||
|
|
Loading…
Reference in New Issue