mirror of
https://github.com/X11Libre/xserver.git
synced 2026-10-15 00:13:28 +00:00
Introduce dixLookupFontable for "FONT or GC" parameters.
Signed-off-by: Jamey Sharp <jamey@minilop.net> Reviewed-by: Julien Cristau <jcristau@debian.org> Reviewed-by: Adam Jackson <ajax@redhat.com> Signed-off-by: Keith Packard <keithp@keithp.com>
This commit is contained in:
parent
2eab697adb
commit
35761d5f81
5 changed files with 33 additions and 48 deletions
|
|
@ -1283,22 +1283,13 @@ ProcQueryFont(ClientPtr client)
|
|||
{
|
||||
xQueryFontReply *reply;
|
||||
FontPtr pFont;
|
||||
GC *pGC;
|
||||
int rc;
|
||||
REQUEST(xResourceReq);
|
||||
REQUEST_SIZE_MATCH(xResourceReq);
|
||||
|
||||
client->errorValue = stuff->id; /* EITHER font or gc */
|
||||
rc = dixLookupResourceByType((pointer *)&pFont, stuff->id, RT_FONT, client,
|
||||
DixGetAttrAccess);
|
||||
if (rc == BadValue) {
|
||||
rc = dixLookupResourceByType((pointer *)&pGC, stuff->id, RT_GC, client,
|
||||
DixGetAttrAccess);
|
||||
if (rc == Success)
|
||||
pFont = pGC->font;
|
||||
}
|
||||
rc = dixLookupFontable(&pFont, stuff->id, client, DixGetAttrAccess);
|
||||
if (rc != Success)
|
||||
return (rc == BadValue) ? BadFont: rc;
|
||||
return rc;
|
||||
|
||||
{
|
||||
xCharInfo *pmax = FONTINKMAX(pFont);
|
||||
|
|
@ -1339,24 +1330,15 @@ ProcQueryTextExtents(ClientPtr client)
|
|||
{
|
||||
xQueryTextExtentsReply reply;
|
||||
FontPtr pFont;
|
||||
GC *pGC;
|
||||
ExtentInfoRec info;
|
||||
unsigned long length;
|
||||
int rc;
|
||||
REQUEST(xQueryTextExtentsReq);
|
||||
REQUEST_AT_LEAST_SIZE(xQueryTextExtentsReq);
|
||||
|
||||
client->errorValue = stuff->fid; /* EITHER font or gc */
|
||||
rc = dixLookupResourceByType((pointer *)&pFont, stuff->fid, RT_FONT, client,
|
||||
DixGetAttrAccess);
|
||||
if (rc == BadValue) {
|
||||
rc = dixLookupResourceByType((pointer *)&pGC, stuff->fid, RT_GC, client,
|
||||
DixGetAttrAccess);
|
||||
if (rc == Success)
|
||||
pFont = pGC->font;
|
||||
}
|
||||
rc = dixLookupFontable(&pFont, stuff->fid, client, DixGetAttrAccess);
|
||||
if (rc != Success)
|
||||
return (rc == BadValue) ? BadFont: rc;
|
||||
return rc;
|
||||
|
||||
length = client->req_len - bytes_to_int32(sizeof(xQueryTextExtentsReq));
|
||||
length = length << 1;
|
||||
|
|
|
|||
|
|
@ -92,6 +92,7 @@ Author: Adobe Systems Incorporated
|
|||
#include "windowstr.h"
|
||||
#include "dixstruct.h"
|
||||
#include "pixmapstr.h"
|
||||
#include "gcstruct.h"
|
||||
#include "scrnintstr.h"
|
||||
#define XK_LATIN1
|
||||
#include <X11/keysymdef.h>
|
||||
|
|
@ -235,6 +236,23 @@ dixLookupGC(GCPtr *pGC, XID id, ClientPtr client, Mask access)
|
|||
return (rc == BadValue) ? BadGC : rc;
|
||||
}
|
||||
|
||||
int
|
||||
dixLookupFontable(FontPtr *pFont, XID id, ClientPtr client, Mask access)
|
||||
{
|
||||
int rc;
|
||||
GC *pGC;
|
||||
client->errorValue = id; /* EITHER font or gc */
|
||||
rc = dixLookupResourceByType((pointer *) pFont, id, RT_FONT, client, access);
|
||||
if (rc != BadValue)
|
||||
return rc;
|
||||
rc = dixLookupResourceByType((pointer *) &pGC, id, RT_GC, client, access);
|
||||
if (rc == BadValue)
|
||||
return BadFont;
|
||||
if (rc == Success)
|
||||
*pFont = pGC->font;
|
||||
return rc;
|
||||
}
|
||||
|
||||
int
|
||||
dixLookupClient(ClientPtr *pClient, XID rid, ClientPtr client, Mask access)
|
||||
{
|
||||
|
|
|
|||
Loading…
Reference in a new issue