aboutsummaryrefslogtreecommitdiff
path: root/xorg-server/glx
diff options
context:
space:
mode:
authormarha <marha@users.sourceforge.net>2015-02-22 14:31:16 +0100
committermarha <marha@users.sourceforge.net>2015-02-22 14:31:16 +0100
commitf1c2db43dcf35d2cf4715390bd2391c28e42a8c2 (patch)
tree46b537271afe0f6534231b1bd4cc4f91ae1fb446 /xorg-server/glx
parent5e5a48ff8cd08f123601cd0625ca62a86675aac9 (diff)
downloadvcxsrv-f1c2db43dcf35d2cf4715390bd2391c28e42a8c2.tar.gz
vcxsrv-f1c2db43dcf35d2cf4715390bd2391c28e42a8c2.tar.bz2
vcxsrv-f1c2db43dcf35d2cf4715390bd2391c28e42a8c2.zip
xwininfo fontconfig libX11 libXdmcp libfontenc libxcb libxcb/xcb-proto mesalib xserver xkeyboard-config mkfontscale git update 22 Feb 2015
xserver commit 3a06faf3fcdb7451125a46181f9152e8e59e9770 libxcb commit e3ec1f74637237ce500dfd0ca59f2e422da4e019 libxcb/xcb-proto commit 4c550465934164aab2449a125f75f4ca07816233 xkeyboard-config commit 26f344c93f8c6141e9233eb68088ba4fd56bc9ef libX11 commit c8e19b393defd53f046ddc2da3a16881221b3c34 libXdmcp commit 9f4cac7656b221ce2a8f97e7bd31e5e23126d001 libfontenc commit de1843aaf76015c9d99416f3122d169fe331b849 mkfontscale commit 87d628f8eec170ec13bb9feefb1ce05aed07d1d6 xwininfo commit 0c49f8f2bd56b1e77721e81030ea948386dcdf4e fontconfig commit d6d5adeb7940c0d0beb86489c2a1c2ce59e5c044 mesa commit 4359954d842caa2a9f8d4b50d70ecc789884b68b
Diffstat (limited to 'xorg-server/glx')
-rw-r--r--xorg-server/glx/glxcmds.c71
1 files changed, 41 insertions, 30 deletions
diff --git a/xorg-server/glx/glxcmds.c b/xorg-server/glx/glxcmds.c
index e836af8d5..f5f2babb8 100644
--- a/xorg-server/glx/glxcmds.c
+++ b/xorg-server/glx/glxcmds.c
@@ -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;
-
- 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++;
+ 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[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) {