Signed-off-by: Jamey Sharp <[email protected]>
---
 dix/dixfonts.c     |   54 ++++++++++++++++++++-------------------------------
 include/closestr.h |   24 -----------------------
 2 files changed, 21 insertions(+), 57 deletions(-)

diff --git a/dix/dixfonts.c b/dix/dixfonts.c
index 4a8f113..91092be 100644
--- a/dix/dixfonts.c
+++ b/dix/dixfonts.c
@@ -1175,6 +1175,7 @@ doPolyText(ClientPtr client, PTclosurePtr c)
     enum { NEVER_SLEPT, START_SLEEP, SLEEPING } client_state = NEVER_SLEPT;
     FontPathElementPtr fpe;
     GC *origGC = NULL;
+    int itemSize = c->reqType == X_PolyText8 ? 1 : 2;
 
     if (client->clientGone)
     {
@@ -1260,10 +1261,6 @@ doPolyText(ClientPtr client, PTclosurePtr c)
                    val.ptr = pFont;
                    ChangeGC(NullClient, c->pGC, GCFont, &val);
                    ValidateGC(c->pDraw, c->pGC);
-                   if (c->reqType == X_PolyText8)
-                       c->polyText = (PolyTextPtr) c->pGC->ops->PolyText8;
-                   else
-                       c->polyText = (PolyTextPtr) c->pGC->ops->PolyText16;
                }
 
                /* Undo the refcnt++ we performed when going to sleep */
@@ -1275,7 +1272,7 @@ doPolyText(ClientPtr client, PTclosurePtr c)
        else    /* print a string */
        {
            unsigned char *pNextElt;
-           pNextElt = c->pElt + TextEltHeader + (*c->pElt)*c->itemSize;
+           pNextElt = c->pElt + TextEltHeader + (*c->pElt) * itemSize;
            if ( pNextElt > c->endReq)
            {
                err = BadLength;
@@ -1288,7 +1285,7 @@ doPolyText(ClientPtr client, PTclosurePtr c)
            }
            if (c->pDraw)
            {
-               lgerr = LoadGlyphs(client, c->pGC->font, *c->pElt, c->itemSize,
+               lgerr = LoadGlyphs(client, c->pGC->font, *c->pElt, itemSize,
                                   c->pElt + TextEltHeader);
            }
            else lgerr = Successful;
@@ -1387,8 +1384,12 @@ doPolyText(ClientPtr client, PTclosurePtr c)
            if (c->pDraw)
            {
                c->xorg += *((INT8 *)(c->pElt + 1));    /* must be signed */
-               c->xorg = (* c->polyText)(c->pDraw, c->pGC, c->xorg, c->yorg,
-                   *c->pElt, c->pElt + TextEltHeader);
+               if (c->reqType == X_PolyText8)
+                   c->xorg = (* c->pGC->ops->PolyText8)(c->pDraw, c->pGC, 
c->xorg, c->yorg,
+                       *c->pElt, (char *) (c->pElt + TextEltHeader));
+               else
+                   c->xorg = (* c->pGC->ops->PolyText16)(c->pDraw, c->pGC, 
c->xorg, c->yorg,
+                       *c->pElt, (unsigned short *) (c->pElt + TextEltHeader));
            }
            c->pElt = pNextElt;
        }
@@ -1447,16 +1448,7 @@ PolyText(ClientPtr client, DrawablePtr pDraw, GC *pGC, 
unsigned char *pElt,
     local_closure.pDraw = pDraw;
     local_closure.xorg = xorg;
     local_closure.yorg = yorg;
-    if ((local_closure.reqType = reqType) == X_PolyText8)
-    {
-       local_closure.polyText = (PolyTextPtr) pGC->ops->PolyText8;
-       local_closure.itemSize = 1;
-    }
-    else
-    {
-       local_closure.polyText =  (PolyTextPtr) pGC->ops->PolyText16;
-       local_closure.itemSize = 2;
-    }
+    local_closure.reqType = reqType;
     local_closure.pGC = pGC;
     local_closure.did = did;
     local_closure.err = Success;
@@ -1475,6 +1467,7 @@ doImageText(ClientPtr client, ITclosurePtr c)
 {
     int err = Success, lgerr;  /* err is in X error, not font error, space */
     FontPathElementPtr fpe;
+    int itemSize = c->reqType == X_ImageText8 ? 1 : 2;
 
     if (client->clientGone)
     {
@@ -1499,7 +1492,7 @@ doImageText(ClientPtr client, ITclosurePtr c)
        }
     }
 
-    lgerr = LoadGlyphs(client, c->pGC->font, c->nChars, c->itemSize, c->data);
+    lgerr = LoadGlyphs(client, c->pGC->font, c->nChars, itemSize, c->data);
     if (lgerr == Suspended)
     {
         if (!c->slept) {
@@ -1521,14 +1514,14 @@ doImageText(ClientPtr client, ITclosurePtr c)
            *new_closure = *c;
            c = new_closure;
 
-           data = malloc(c->nChars * c->itemSize);
+           data = malloc(c->nChars * itemSize);
            if (!data)
            {
                free(c);
                err = BadAlloc;
                goto bail;
            }
-           memmove(data, c->data, c->nChars * c->itemSize);
+           memmove(data, c->data, c->nChars * itemSize);
            c->data = data;
 
            pGC = GetScratchGC(c->pGC->depth, c->pGC->pScreen);
@@ -1567,8 +1560,12 @@ doImageText(ClientPtr client, ITclosurePtr c)
     }
     if (c->pDraw)
     {
-       (* c->imageText)(c->pDraw, c->pGC, c->xorg, c->yorg,
-           c->nChars, c->data);
+       if (c->reqType == X_ImageText8)
+           (* c->pGC->ops->ImageText8)(c->pDraw, c->pGC, c->xorg, c->yorg,
+               c->nChars, (char *) c->data);
+       else
+           (* c->pGC->ops->ImageText16)(c->pDraw, c->pGC, c->xorg, c->yorg,
+               c->nChars, (unsigned short *) c->data);
     }
 
 bail:
@@ -1605,16 +1602,7 @@ ImageText(ClientPtr client, DrawablePtr pDraw, GC *pGC, 
int nChars,
     local_closure.data = data;
     local_closure.xorg = xorg;
     local_closure.yorg = yorg;
-    if ((local_closure.reqType = reqType) == X_ImageText8)
-    {
-       local_closure.imageText = (ImageTextPtr) pGC->ops->ImageText8;
-       local_closure.itemSize = 1;
-    }
-    else
-    {
-       local_closure.imageText = (ImageTextPtr) pGC->ops->ImageText16;
-       local_closure.itemSize = 2;
-    }
+    local_closure.reqType = reqType;
     local_closure.did = did;
     local_closure.slept = FALSE;
 
diff --git a/include/closestr.h b/include/closestr.h
index 2cd67b1..1660151 100644
--- a/include/closestr.h
+++ b/include/closestr.h
@@ -100,16 +100,6 @@ typedef struct _LFclosure {
 
 /* PolyText */
 
-typedef
-    int                        (* PolyTextPtr)(
-                       DrawablePtr /* pDraw */,
-                       GCPtr /* pGC */,
-                       int /* x */,
-                       int /* y */,
-                       int /* count */,
-                       void * /* chars or shorts */
-                       );
-
 typedef struct _PTclosure {
     ClientPtr          client;
     DrawablePtr                pDraw;
@@ -120,8 +110,6 @@ typedef struct _PTclosure {
     int                        xorg;
     int                        yorg;
     CARD8              reqType;
-    PolyTextPtr                polyText;
-    int                        itemSize;
     XID                        did;
     int                        err;
     Bool               slept;
@@ -129,16 +117,6 @@ typedef struct _PTclosure {
 
 /* ImageText */
 
-typedef
-    void               (* ImageTextPtr)(
-                       DrawablePtr /* pDraw */,
-                       GCPtr /* pGC */,
-                       int /* x */,
-                       int /* y */,
-                       int /* count */,
-                       void * /* chars or shorts */
-                       );
-
 typedef struct _ITclosure {
     ClientPtr          client;
     DrawablePtr                pDraw;
@@ -148,8 +126,6 @@ typedef struct _ITclosure {
     int                        xorg;
     int                        yorg;
     CARD8              reqType;
-    ImageTextPtr       imageText;
-    int                        itemSize;
     XID                        did;
     Bool               slept;
 } ITclosureRec;
-- 
1.7.0

_______________________________________________
[email protected]: X.Org development
Archives: http://lists.x.org/archives/xorg-devel
Info: http://lists.x.org/mailman/listinfo/xorg-devel

Reply via email to