[PATCH 1/2] glx: Dynamically compute attribute slot in GetDrawableAttributes

Eric Anholt eric at anholt.net
Thu Dec 4 15:33:03 PST 2014


Adam Jackson <ajax at redhat.com> writes:

> No functional change.
>
> Signed-off-by: Adam Jackson <ajax at redhat.com>
> ---
>  glx/glxcmds.c | 49 +++++++++++++++++++++++++------------------------
>  1 file changed, 25 insertions(+), 24 deletions(-)
>
> diff --git a/glx/glxcmds.c b/glx/glxcmds.c
> index 6d4b0ee..2240a5b 100644
> --- a/glx/glxcmds.c
> +++ b/glx/glxcmds.c
> @@ -1916,42 +1916,43 @@ DoGetDrawableAttributes(__GLXclientState * cl, XID drawId)
>      xGLXGetDrawableAttributesReply reply;
>      __GLXdrawable *pGlxDraw;
>      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 :
> +    attributes[2*num] = GLX_TEXTURE_TARGET_EXT;
> +    attributes[2*num+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++;
> +    num++;
> +    attributes[2*num] = GLX_Y_INVERTED_EXT;
> +    attributes[2*num+1] = GL_FALSE;
> +    num++;
> +    attributes[2*num] = GLX_EVENT_MASK;
> +    attributes[2*num+1] = pGlxDraw->eventMask;
> +    num++;
> +    attributes[2*num] = GLX_WIDTH;
> +    attributes[2*num+1] = pGlxDraw->pDraw->width;
> +    num++;
> +    attributes[2*num] = GLX_HEIGHT;
> +    attributes[2*num+1] = pGlxDraw->pDraw->height;
> +    num++;
> +    attributes[2*num] = GLX_FBCONFIG_ID;
> +    attributes[2*num+1] = pGlxDraw->config->fbconfigID;
> +    num++;
>      if (pGlxDraw->type == GLX_DRAWABLE_PBUFFER) {
> -        attributes[12] = GLX_PRESERVED_CONTENTS;
> -        attributes[13] = GL_TRUE;
> -        numAttribs++;
> +        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
>      };

A macro or helper function would make this code a lot nicer to read, but
it's still better than hand-written constants.

These two patches are:

Reviewed-by: Eric Anholt <eric at anholt.net>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 818 bytes
Desc: not available
URL: <http://lists.x.org/archives/xorg-devel/attachments/20141204/13357062/attachment.sig>


More information about the xorg-devel mailing list