[PATCH 1/5] glx: Compute number of attributes in GetDrawableAttributes on the fly

Adam Jackson ajax at redhat.com
Mon Feb 25 14:04:08 PST 2013


This doesn't have any effect yet, but is needed to properly build the
reply for pbuffers.

Signed-off-by: Adam Jackson <ajax at redhat.com>
---
 glx/glxcmds.c | 20 +++++++++++---------
 1 file changed, 11 insertions(+), 9 deletions(-)

diff --git a/glx/glxcmds.c b/glx/glxcmds.c
index 574f8ef..09fc719 100644
--- a/glx/glxcmds.c
+++ b/glx/glxcmds.c
@@ -1875,27 +1875,29 @@ DoGetDrawableAttributes(__GLXclientState * cl, XID drawId)
     xGLXGetDrawableAttributesReply reply;
     __GLXdrawable *pGlxDraw;
     CARD32 attributes[6];
-    int numAttribs, error;
+    int numAttribs = 0, error;
 
     if (!validGlxDrawable(client, drawId, GLX_DRAWABLE_ANY,
                           DixGetAttrAccess, &pGlxDraw, &error))
         return error;
 
-    numAttribs = 3;
-    reply = (xGLXGetDrawableAttributesReply) {
-        .type = X_Reply,
-        .sequenceNumber = client->sequence,
-        .length = numAttribs << 1,
-        .numAttribs = numAttribs
-    };
-
     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++;
+
+    reply = (xGLXGetDrawableAttributesReply) {
+        .type = X_Reply,
+        .sequenceNumber = client->sequence,
+        .length = numAttribs << 1,
+        .numAttribs = numAttribs
+    };
 
     if (client->swapped) {
         __glXSwapGetDrawableAttributesReply(client, &reply, attributes);
-- 
1.8.1.4



More information about the xorg-devel mailing list