Login
[x]
Log in using an account from:
Fedora Account System
Red Hat Associate
Red Hat Customer
Or login using a Red Hat Bugzilla account
Forgot Password
Login:
Hide Forgot
Create an Account
Red Hat Bugzilla – Attachment 313661 Details for
Bug 430416
"BadName" for "fixed" unless xfs is restarted
[?]
New
Simple Search
Advanced Search
My Links
Browse
Requests
Reports
Current State
Search
Tabular reports
Graphical reports
Duplicates
Other Reports
User Changes
Plotly Reports
Bug Status
Bug Severity
Non-Defaults
|
Product Dashboard
Help
Page Help!
Bug Writing Guidelines
What's new
Browser Support Policy
5.0.4.rh83 Release notes
FAQ
Guides index
User guide
Web Services
Contact
Legal
This site requires JavaScript to be enabled to function correctly, please enable it.
[patch]
Keith's fix (tested to work)
x-430416-keith-0001.patch (text/plain), 32.72 KB, created by
Pete Zaitcev
on 2008-08-07 03:39:28 UTC
(
hide
)
Description:
Keith's fix (tested to work)
Filename:
MIME Type:
Creator:
Pete Zaitcev
Created:
2008-08-07 03:39:28 UTC
Size:
32.72 KB
patch
obsolete
>From 40b3d2972dbafefae38759666ed49c66cc797889 Mon Sep 17 00:00:00 2001 >From: Keith Packard <keithp@keithp.com> >Date: Wed, 6 Aug 2008 15:26:24 -0700 >Subject: [PATCH] Replace dixLookupResource by dixLookupResourceBy{Type,Class} > >dixLookupResource attempted to automatically detect whether the caller >wanted a lookup by-type or by-class, unfortunately, it guessed wrong for >RT_NONE. Instead of trying to make the guess better, this patch just reverts >the unification and creates separate functions for each operation. >--- > Xext/saver.c | 8 +++--- > Xext/security.c | 4 +- > Xext/shape.c | 2 +- > Xext/sync.c | 2 +- > Xext/xselinux.c | 2 +- > Xext/xtest.c | 6 ++-- > Xi/exevents.c | 2 +- > composite/compext.c | 10 ++++---- > dix/cursor.c | 8 +++--- > dix/deprecated.c | 34 +++++++++++++++++++++++------- > dix/dispatch.c | 48 ++++++++++++++++++++++---------------------- > dix/dixutils.c | 4 +- > dix/events.c | 10 ++++---- > dix/gc.c | 8 +++--- > dix/resource.c | 39 +++++++++++++++++++++++++++++++---- > dix/window.c | 8 +++--- > hw/xfree86/loader/dixsym.c | 2 + > include/resource.h | 39 +++++++++++++++++++++++++++-------- > render/picture.c | 4 +- > render/render.c | 8 +++--- > xfixes/cursor.c | 4 +- > xfixes/region.c | 6 ++-- > 22 files changed, 164 insertions(+), 94 deletions(-) > >diff --git a/Xext/saver.c b/Xext/saver.c >index 69a5fa1..c1f0382 100644 >--- a/Xext/saver.c >+++ b/Xext/saver.c >@@ -1064,7 +1064,7 @@ ScreenSaverSetAttributes (ClientPtr client) > } > else > { >- ret = dixLookupResource((pointer *)&pPixmap, pixID, RT_PIXMAP, >+ ret = dixLookupResourceByType((pointer *)&pPixmap, pixID, RT_PIXMAP, > client, DixReadAccess); > if (ret == Success) > { >@@ -1102,7 +1102,7 @@ ScreenSaverSetAttributes (ClientPtr client) > } > else > { >- ret = dixLookupResource((pointer *)&pPixmap, pixID, RT_PIXMAP, >+ ret = dixLookupResourceByType((pointer *)&pPixmap, pixID, RT_PIXMAP, > client, DixReadAccess); > if (ret == Success) > { >@@ -1196,7 +1196,7 @@ ScreenSaverSetAttributes (ClientPtr client) > break; > case CWColormap: > cmap = (Colormap) *pVlist; >- ret = dixLookupResource((pointer *)&pCmap, cmap, RT_COLORMAP, >+ ret = dixLookupResourceByType((pointer *)&pCmap, cmap, RT_COLORMAP, > client, DixUseAccess); > if (ret != Success) > { >@@ -1220,7 +1220,7 @@ ScreenSaverSetAttributes (ClientPtr client) > } > else > { >- ret = dixLookupResource((pointer *)&pCursor, cursorID, >+ ret = dixLookupResourceByType((pointer *)&pCursor, cursorID, > RT_CURSOR, client, DixUseAccess); > if (ret != Success) > { >diff --git a/Xext/security.c b/Xext/security.c >index bd92600..c865d65 100644 >--- a/Xext/security.c >+++ b/Xext/security.c >@@ -1014,7 +1014,7 @@ SecurityClientState(CallbackListPtr *pcbl, pointer unused, pointer calldata) > > case ClientStateRunning: > state->authId = AuthorizationIDOfClient(pci->client); >- rc = dixLookupResource((pointer *)&pAuth, state->authId, >+ rc = dixLookupResourceByType((pointer *)&pAuth, state->authId, > SecurityAuthorizationResType, serverClient, > DixGetAttrAccess); > if (rc == Success) { >@@ -1029,7 +1029,7 @@ SecurityClientState(CallbackListPtr *pcbl, pointer unused, pointer calldata) > > case ClientStateGone: > case ClientStateRetained: >- rc = dixLookupResource((pointer *)&pAuth, state->authId, >+ rc = dixLookupResourceByType((pointer *)&pAuth, state->authId, > SecurityAuthorizationResType, serverClient, > DixGetAttrAccess); > if (rc == Success) { >diff --git a/Xext/shape.c b/Xext/shape.c >index 6857c28..d03b644 100644 >--- a/Xext/shape.c >+++ b/Xext/shape.c >@@ -438,7 +438,7 @@ ProcShapeMask (client) > if (stuff->src == None) > srcRgn = 0; > else { >- rc = dixLookupResource((pointer *)&pPixmap, stuff->src, RT_PIXMAP, >+ rc = dixLookupResourceByType((pointer *)&pPixmap, stuff->src, RT_PIXMAP, > client, DixReadAccess); > if (rc != Success) > return (rc == BadValue) ? BadPixmap : rc; >diff --git a/Xext/sync.c b/Xext/sync.c >index ce04702..50b2caa 100644 >--- a/Xext/sync.c >+++ b/Xext/sync.c >@@ -440,7 +440,7 @@ SyncInitTrigger(client, pTrigger, counter, changes) > { > if (counter == None) > pCounter = NULL; >- else if (Success != (rc = dixLookupResource((pointer *)&pCounter, >+ else if (Success != (rc = dixLookupResourceByType ((pointer *)&pCounter, > counter, RTCounter, client, DixReadAccess))) > { > client->errorValue = counter; >diff --git a/Xext/xselinux.c b/Xext/xselinux.c >index a47df03..3c74574 100644 >--- a/Xext/xselinux.c >+++ b/Xext/xselinux.c >@@ -555,7 +555,7 @@ SELinuxLabelInitial(void) > SELinuxScreen(NULL, NULL, &srec); > > /* Do the default colormap */ >- dixLookupResource(&unused, screenInfo.screens[i]->defColormap, >+ dixLookupResourceByType(&unused, screenInfo.screens[i]->defColormap, > RT_COLORMAP, serverClient, DixCreateAccess); > } > } >diff --git a/Xext/xtest.c b/Xext/xtest.c >index 8e96f65..2dd61a3 100644 >--- a/Xext/xtest.c >+++ b/Xext/xtest.c >@@ -135,8 +135,8 @@ ProcXTestCompareCursor(client) > else if (stuff->cursor == XTestCurrentCursor) > pCursor = GetSpriteCursor(ptr); > else { >- rc = dixLookupResource((pointer *)&pCursor, stuff->cursor, RT_CURSOR, >- client, DixReadAccess); >+ rc = dixLookupResourceByType((pointer *)&pCursor, stuff->cursor, RT_CURSOR, >+ client, DixReadAccess); > if (rc != Success) > { > client->errorValue = stuff->cursor; >@@ -169,7 +169,7 @@ ProcXTestFakeInput(client) > int numValuators = 0; > int firstValuator = 0; > EventListPtr events; >- int nevents; >+ int nevents = 0; > int i; > int base = 0; > >diff --git a/Xi/exevents.c b/Xi/exevents.c >index 35d8bb5..ef53506 100644 >--- a/Xi/exevents.c >+++ b/Xi/exevents.c >@@ -1369,7 +1369,7 @@ GrabButton(ClientPtr client, DeviceIntPtr dev, BYTE this_device_mode, > if (rcursor == None) > cursor = NullCursor; > else { >- rc = dixLookupResource((pointer *)&cursor, rcursor, RT_CURSOR, >+ rc = dixLookupResourceByType((pointer *)&cursor, rcursor, RT_CURSOR, > client, DixUseAccess); > if (rc != Success) > { >diff --git a/composite/compext.c b/composite/compext.c >index e720f6c..2a7c227 100644 >--- a/composite/compext.c >+++ b/composite/compext.c >@@ -148,7 +148,7 @@ ProcCompositeRedirectWindow (ClientPtr client) > REQUEST(xCompositeRedirectWindowReq); > > REQUEST_SIZE_MATCH(xCompositeRedirectWindowReq); >- rc = dixLookupResource((pointer *)&pWin, stuff->window, RT_WINDOW, client, >+ rc = dixLookupResourceByType((pointer *)&pWin, stuff->window, RT_WINDOW, client, > DixSetAttrAccess|DixManageAccess|DixBlendAccess); > if (rc != Success) > { >@@ -166,7 +166,7 @@ ProcCompositeRedirectSubwindows (ClientPtr client) > REQUEST(xCompositeRedirectSubwindowsReq); > > REQUEST_SIZE_MATCH(xCompositeRedirectSubwindowsReq); >- rc = dixLookupResource((pointer *)&pWin, stuff->window, RT_WINDOW, client, >+ rc = dixLookupResourceByType((pointer *)&pWin, stuff->window, RT_WINDOW, client, > DixSetAttrAccess|DixManageAccess|DixBlendAccess); > if (rc != Success) > { >@@ -218,7 +218,7 @@ ProcCompositeCreateRegionFromBorderClip (ClientPtr client) > REQUEST(xCompositeCreateRegionFromBorderClipReq); > > REQUEST_SIZE_MATCH(xCompositeCreateRegionFromBorderClipReq); >- rc = dixLookupResource((pointer *)&pWin, stuff->window, RT_WINDOW, client, >+ rc = dixLookupResourceByType((pointer *)&pWin, stuff->window, RT_WINDOW, client, > DixGetAttrAccess); > if (rc != Success) > { >@@ -254,7 +254,7 @@ ProcCompositeNameWindowPixmap (ClientPtr client) > REQUEST(xCompositeNameWindowPixmapReq); > > REQUEST_SIZE_MATCH(xCompositeNameWindowPixmapReq); >- rc = dixLookupResource((pointer *)&pWin, stuff->window, RT_WINDOW, client, >+ rc = dixLookupResourceByType((pointer *)&pWin, stuff->window, RT_WINDOW, client, > DixGetAttrAccess); > if (rc != Success) > { >@@ -302,7 +302,7 @@ ProcCompositeGetOverlayWindow (ClientPtr client) > int rc; > > REQUEST_SIZE_MATCH(xCompositeGetOverlayWindowReq); >- rc = dixLookupResource((pointer *)&pWin, stuff->window, RT_WINDOW, client, >+ rc = dixLookupResourceByType((pointer *)&pWin, stuff->window, RT_WINDOW, client, > DixGetAttrAccess); > if (rc != Success) > { >diff --git a/dix/cursor.c b/dix/cursor.c >index 81540fd..0017c66 100644 >--- a/dix/cursor.c >+++ b/dix/cursor.c >@@ -298,15 +298,15 @@ AllocGlyphCursor(Font source, unsigned sourceChar, Font mask, unsigned maskChar, > GlyphSharePtr pShare; > DeviceIntPtr pDev; > >- rc = dixLookupResource((pointer *)&sourcefont, source, RT_FONT, client, >- DixUseAccess); >+ rc = dixLookupResourceByType((pointer *)&sourcefont, source, RT_FONT, client, >+ DixUseAccess); > if (rc != Success) > { > client->errorValue = source; > return (rc == BadValue) ? BadFont : rc; > } >- rc = dixLookupResource((pointer *)&maskfont, mask, RT_FONT, client, >- DixUseAccess); >+ rc = dixLookupResourceByType((pointer *)&maskfont, mask, RT_FONT, client, >+ DixUseAccess); > if (rc != Success && mask != None) > { > client->errorValue = mask; >diff --git a/dix/deprecated.c b/dix/deprecated.c >index 2bb8119..4e20d60 100644 >--- a/dix/deprecated.c >+++ b/dix/deprecated.c >@@ -115,48 +115,66 @@ LookupClient(XID id, ClientPtr client) > return (i == Success) ? pClient : NULL; > } > >-/* replaced by dixLookupResource */ >+/* replaced by dixLookupResourceByType */ > _X_EXPORT pointer > SecurityLookupIDByType(ClientPtr client, XID id, RESTYPE rtype, > Mask access_mode) > { > pointer retval; >- int i = dixLookupResource(&retval, id, rtype, client, access_mode); >+ int i = dixLookupResourceByType(&retval, id, rtype, client, access_mode); > static int warn = 1; > if (warn > 0 && --warn) > ErrorF("Warning: LookupIDByType()/SecurityLookupIDByType() " > "are deprecated. Please convert your driver/module " >- "to use dixLookupResource().\n"); >+ "to use dixLookupResourceByType().\n"); > return (i == Success) ? retval : NULL; > } > >-/* replaced by dixLookupResource */ >+/* replaced by dixLookupResourceByClass */ > _X_EXPORT pointer > SecurityLookupIDByClass(ClientPtr client, XID id, RESTYPE classes, > Mask access_mode) > { > pointer retval; >- int i = dixLookupResource(&retval, id, classes, client, access_mode); >+ int i = dixLookupResourceByClass(&retval, id, classes, client, access_mode); > static int warn = 1; > if (warn > 0 && --warn) > ErrorF("Warning: LookupIDByClass()/SecurityLookupIDByClass() " > "are deprecated. Please convert your driver/module " >- "to use dixLookupResource().\n"); >+ "to use dixLookupResourceByClass().\n"); > return (i == Success) ? retval : NULL; > } > >-/* replaced by dixLookupResource */ >+/* replaced by dixLookupResourceByType */ > _X_EXPORT pointer > LookupIDByType(XID id, RESTYPE rtype) > { > return SecurityLookupIDByType(NullClient, id, rtype, DixUnknownAccess); > } > >-/* replaced by dixLookupResource */ >+/* replaced by dixLookupResourceByClass */ > _X_EXPORT pointer > LookupIDByClass(XID id, RESTYPE classes) > { > return SecurityLookupIDByClass(NullClient, id, classes, DixUnknownAccess); > } > >+/* replaced by dixLookupResourceBy{Type,Class} */ >+_X_EXPORT int >+dixLookupResource (pointer *result, XID id, RESTYPE rtype, >+ ClientPtr client, Mask mode) >+{ >+ Bool istype = ((rtype & TypeMask) && (rtype != RC_ANY)) || (rtype == RT_NONE); >+ >+ static int warn = 1; >+ if (warn > 0 && --warn) >+ ErrorF("Warning: dixLookupResource() " >+ "is deprecated. Please convert your driver/module " >+ "to use dixLookupResourceByType/dixLookupResourceByClass().\n"); >+ if (istype) >+ return dixLookupResourceByType (result, id, rtype, client, mode); >+ else >+ return dixLookupResourceByClass (result, id, rtype, client, mode); >+} >+ > /* end deprecated functions */ >diff --git a/dix/dispatch.c b/dix/dispatch.c >index 8b21690..d1531fc 100644 >--- a/dix/dispatch.c >+++ b/dix/dispatch.c >@@ -1136,11 +1136,11 @@ ProcQueryFont(ClientPtr client) > REQUEST_SIZE_MATCH(xResourceReq); > > client->errorValue = stuff->id; /* EITHER font or gc */ >- rc = dixLookupResource((pointer *)&pFont, stuff->id, RT_FONT, client, >- DixGetAttrAccess); >+ rc = dixLookupResourceByType((pointer *)&pFont, stuff->id, RT_FONT, client, >+ DixGetAttrAccess); > if (rc == BadValue) { >- rc = dixLookupResource((pointer *)&pGC, stuff->id, RT_GC, client, >- DixGetAttrAccess); >+ rc = dixLookupResourceByType((pointer *)&pGC, stuff->id, RT_GC, client, >+ DixGetAttrAccess); > if (rc == Success) > pFont = pGC->font; > } >@@ -1194,10 +1194,10 @@ ProcQueryTextExtents(ClientPtr client) > REQUEST_AT_LEAST_SIZE(xQueryTextExtentsReq); > > client->errorValue = stuff->fid; /* EITHER font or gc */ >- rc = dixLookupResource((pointer *)&pFont, stuff->fid, RT_FONT, client, >- DixGetAttrAccess); >+ rc = dixLookupResourceByType((pointer *)&pFont, stuff->fid, RT_FONT, client, >+ DixGetAttrAccess); > if (rc == BadValue) { >- rc = dixLookupResource((pointer *)&pGC, stuff->fid, RT_GC, client, >+ rc = dixLookupResourceByType((pointer *)&pGC, stuff->fid, RT_GC, client, > DixGetAttrAccess); > if (rc == Success) > pFont = pGC->font; >@@ -1342,7 +1342,7 @@ ProcFreePixmap(ClientPtr client) > REQUEST(xResourceReq); > REQUEST_SIZE_MATCH(xResourceReq); > >- rc = dixLookupResource((pointer *)&pMap, stuff->id, RT_PIXMAP, client, >+ rc = dixLookupResourceByType((pointer *)&pMap, stuff->id, RT_PIXMAP, client, > DixDestroyAccess); > if (rc == Success) > { >@@ -2288,7 +2288,7 @@ ProcFreeColormap(ClientPtr client) > REQUEST(xResourceReq); > > REQUEST_SIZE_MATCH(xResourceReq); >- rc = dixLookupResource((pointer *)&pmap, stuff->id, RT_COLORMAP, client, >+ rc = dixLookupResourceByType((pointer *)&pmap, stuff->id, RT_COLORMAP, client, > DixDestroyAccess); > if (rc == Success) > { >@@ -2316,7 +2316,7 @@ ProcCopyColormapAndFree(ClientPtr client) > REQUEST_SIZE_MATCH(xCopyColormapAndFreeReq); > mid = stuff->mid; > LEGAL_NEW_RESOURCE(mid, client); >- rc = dixLookupResource((pointer *)&pSrcMap, stuff->srcCmap, RT_COLORMAP, >+ rc = dixLookupResourceByType((pointer *)&pSrcMap, stuff->srcCmap, RT_COLORMAP, > client, DixReadAccess|DixRemoveAccess); > if (rc == Success) > { >@@ -2341,7 +2341,7 @@ ProcInstallColormap(ClientPtr client) > REQUEST(xResourceReq); > REQUEST_SIZE_MATCH(xResourceReq); > >- rc = dixLookupResource((pointer *)&pcmp, stuff->id, RT_COLORMAP, client, >+ rc = dixLookupResourceByType((pointer *)&pcmp, stuff->id, RT_COLORMAP, client, > DixInstallAccess); > if (rc != Success) > goto out; >@@ -2366,7 +2366,7 @@ ProcUninstallColormap(ClientPtr client) > REQUEST(xResourceReq); > REQUEST_SIZE_MATCH(xResourceReq); > >- rc = dixLookupResource((pointer *)&pcmp, stuff->id, RT_COLORMAP, client, >+ rc = dixLookupResourceByType((pointer *)&pcmp, stuff->id, RT_COLORMAP, client, > DixUninstallAccess); > if (rc != Success) > goto out; >@@ -2433,7 +2433,7 @@ ProcAllocColor (ClientPtr client) > REQUEST(xAllocColorReq); > > REQUEST_SIZE_MATCH(xAllocColorReq); >- rc = dixLookupResource((pointer *)&pmap, stuff->cmap, RT_COLORMAP, client, >+ rc = dixLookupResourceByType((pointer *)&pmap, stuff->cmap, RT_COLORMAP, client, > DixAddAccess); > if (rc == Success) > { >@@ -2474,7 +2474,7 @@ ProcAllocNamedColor (ClientPtr client) > REQUEST(xAllocNamedColorReq); > > REQUEST_FIXED_SIZE(xAllocNamedColorReq, stuff->nbytes); >- rc = dixLookupResource((pointer *)&pcmp, stuff->cmap, RT_COLORMAP, client, >+ rc = dixLookupResourceByType((pointer *)&pcmp, stuff->cmap, RT_COLORMAP, client, > DixAddAccess); > if (rc == Success) > { >@@ -2525,7 +2525,7 @@ ProcAllocColorCells (ClientPtr client) > REQUEST(xAllocColorCellsReq); > > REQUEST_SIZE_MATCH(xAllocColorCellsReq); >- rc = dixLookupResource((pointer *)&pcmp, stuff->cmap, RT_COLORMAP, client, >+ rc = dixLookupResourceByType((pointer *)&pcmp, stuff->cmap, RT_COLORMAP, client, > DixAddAccess); > if (rc == Success) > { >@@ -2592,7 +2592,7 @@ ProcAllocColorPlanes(ClientPtr client) > REQUEST(xAllocColorPlanesReq); > > REQUEST_SIZE_MATCH(xAllocColorPlanesReq); >- rc = dixLookupResource((pointer *)&pcmp, stuff->cmap, RT_COLORMAP, client, >+ rc = dixLookupResourceByType((pointer *)&pcmp, stuff->cmap, RT_COLORMAP, client, > DixAddAccess); > if (rc == Success) > { >@@ -2657,7 +2657,7 @@ ProcFreeColors(ClientPtr client) > REQUEST(xFreeColorsReq); > > REQUEST_AT_LEAST_SIZE(xFreeColorsReq); >- rc = dixLookupResource((pointer *)&pcmp, stuff->cmap, RT_COLORMAP, client, >+ rc = dixLookupResourceByType((pointer *)&pcmp, stuff->cmap, RT_COLORMAP, client, > DixRemoveAccess); > if (rc == Success) > { >@@ -2692,7 +2692,7 @@ ProcStoreColors (ClientPtr client) > REQUEST(xStoreColorsReq); > > REQUEST_AT_LEAST_SIZE(xStoreColorsReq); >- rc = dixLookupResource((pointer *)&pcmp, stuff->cmap, RT_COLORMAP, client, >+ rc = dixLookupResourceByType((pointer *)&pcmp, stuff->cmap, RT_COLORMAP, client, > DixWriteAccess); > if (rc == Success) > { >@@ -2726,7 +2726,7 @@ ProcStoreNamedColor (ClientPtr client) > REQUEST(xStoreNamedColorReq); > > REQUEST_FIXED_SIZE(xStoreNamedColorReq, stuff->nbytes); >- rc = dixLookupResource((pointer *)&pcmp, stuff->cmap, RT_COLORMAP, client, >+ rc = dixLookupResourceByType((pointer *)&pcmp, stuff->cmap, RT_COLORMAP, client, > DixWriteAccess); > if (rc == Success) > { >@@ -2760,7 +2760,7 @@ ProcQueryColors(ClientPtr client) > REQUEST(xQueryColorsReq); > > REQUEST_AT_LEAST_SIZE(xQueryColorsReq); >- rc = dixLookupResource((pointer *)&pcmp, stuff->cmap, RT_COLORMAP, client, >+ rc = dixLookupResourceByType((pointer *)&pcmp, stuff->cmap, RT_COLORMAP, client, > DixReadAccess); > if (rc == Success) > { >@@ -2812,7 +2812,7 @@ ProcLookupColor(ClientPtr client) > REQUEST(xLookupColorReq); > > REQUEST_FIXED_SIZE(xLookupColorReq, stuff->nbytes); >- rc = dixLookupResource((pointer *)&pcmp, stuff->cmap, RT_COLORMAP, client, >+ rc = dixLookupResourceByType((pointer *)&pcmp, stuff->cmap, RT_COLORMAP, client, > DixReadAccess); > if (rc == Success) > { >@@ -2861,14 +2861,14 @@ ProcCreateCursor (ClientPtr client) > REQUEST_SIZE_MATCH(xCreateCursorReq); > LEGAL_NEW_RESOURCE(stuff->cid, client); > >- rc = dixLookupResource((pointer *)&src, stuff->source, RT_PIXMAP, client, >+ rc = dixLookupResourceByType((pointer *)&src, stuff->source, RT_PIXMAP, client, > DixReadAccess); > if (rc != Success) { > client->errorValue = stuff->source; > return (rc == BadValue) ? BadPixmap : rc; > } > >- rc = dixLookupResource((pointer *)&msk, stuff->mask, RT_PIXMAP, client, >+ rc = dixLookupResourceByType((pointer *)&msk, stuff->mask, RT_PIXMAP, client, > DixReadAccess); > if (rc != Success) > { >@@ -2968,7 +2968,7 @@ ProcFreeCursor (ClientPtr client) > REQUEST(xResourceReq); > > REQUEST_SIZE_MATCH(xResourceReq); >- rc = dixLookupResource((pointer *)&pCursor, stuff->id, RT_CURSOR, client, >+ rc = dixLookupResourceByType((pointer *)&pCursor, stuff->id, RT_CURSOR, client, > DixDestroyAccess); > if (rc == Success) > { >diff --git a/dix/dixutils.c b/dix/dixutils.c >index 22935ce..1d43d44 100644 >--- a/dix/dixutils.c >+++ b/dix/dixutils.c >@@ -216,7 +216,7 @@ dixLookupDrawable(DrawablePtr *pDraw, XID id, ClientPtr client, > if (id == INVALID) > return BadDrawable; > >- rc = dixLookupResource((pointer *)&pTmp, id, RC_DRAWABLE, client, access); >+ rc = dixLookupResourceByClass((pointer *)&pTmp, id, RC_DRAWABLE, client, access); > > if (rc == BadValue) > return BadDrawable; >@@ -259,7 +259,7 @@ dixLookupClient(ClientPtr *pClient, XID rid, ClientPtr client, Mask access) > if (!clientIndex || !clients[clientIndex] || (rid & SERVER_BIT)) > goto bad; > >- rc = dixLookupResource(&pRes, rid, RC_ANY, client, DixGetAttrAccess); >+ rc = dixLookupResourceByClass(&pRes, rid, RC_ANY, client, DixGetAttrAccess); > if (rc != Success) > goto bad; > >diff --git a/dix/events.c b/dix/events.c >index a4deaaa..b8dd680 100644 >--- a/dix/events.c >+++ b/dix/events.c >@@ -5091,7 +5091,7 @@ ProcGrabPointer(ClientPtr client) > cursor = NullCursor; > else > { >- rc = dixLookupResource((pointer *)&cursor, stuff->cursor, RT_CURSOR, >+ rc = dixLookupResourceByType((pointer *)&cursor, stuff->cursor, RT_CURSOR, > client, DixUseAccess); > if (rc != Success) > { >@@ -5191,8 +5191,8 @@ ProcChangeActivePointerGrab(ClientPtr client) > newCursor = NullCursor; > else > { >- int rc = dixLookupResource((pointer *)&newCursor, stuff->cursor, >- RT_CURSOR, client, DixUseAccess); >+ int rc = dixLookupResourceByType((pointer *)&newCursor, stuff->cursor, >+ RT_CURSOR, client, DixUseAccess); > if (rc != Success) > { > client->errorValue = stuff->cursor; >@@ -5798,7 +5798,7 @@ ProcGrabButton(ClientPtr client) > cursor = NullCursor; > else > { >- rc = dixLookupResource((pointer *)&cursor, stuff->cursor, RT_CURSOR, >+ rc = dixLookupResourceByType((pointer *)&cursor, stuff->cursor, RT_CURSOR, > client, DixUseAccess); > if (rc != Success) > if (!cursor) >@@ -6048,7 +6048,7 @@ ProcRecolorCursor(ClientPtr client) > REQUEST(xRecolorCursorReq); > > REQUEST_SIZE_MATCH(xRecolorCursorReq); >- rc = dixLookupResource((pointer *)&pCursor, stuff->cursor, RT_CURSOR, >+ rc = dixLookupResourceByType((pointer *)&pCursor, stuff->cursor, RT_CURSOR, > client, DixWriteAccess); > if (rc != Success) > { >diff --git a/dix/gc.c b/dix/gc.c >index 83f48d4..1a5fb3e 100644 >--- a/dix/gc.c >+++ b/dix/gc.c >@@ -273,7 +273,7 @@ dixChangeGC(ClientPtr client, GC *pGC, BITS32 mask, CARD32 *pC32, ChangeGCValPtr > else > { > NEXTVAL(XID, newpix); >- rc = dixLookupResource((pointer *)&pPixmap, newpix, >+ rc = dixLookupResourceByType((pointer *)&pPixmap, newpix, > RT_PIXMAP, client, DixReadAccess); > } > if (rc == Success) >@@ -310,7 +310,7 @@ dixChangeGC(ClientPtr client, GC *pGC, BITS32 mask, CARD32 *pC32, ChangeGCValPtr > else > { > NEXTVAL(XID, newstipple) >- rc = dixLookupResource((pointer *)&pPixmap, newstipple, >+ rc = dixLookupResourceByType((pointer *)&pPixmap, newstipple, > RT_PIXMAP, client, DixReadAccess); > } > if (rc == Success) >@@ -353,7 +353,7 @@ dixChangeGC(ClientPtr client, GC *pGC, BITS32 mask, CARD32 *pC32, ChangeGCValPtr > else > { > NEXTVAL(XID, newfont) >- rc = dixLookupResource((pointer *)&pFont, newfont, >+ rc = dixLookupResourceByType((pointer *)&pFont, newfont, > RT_FONT, client, DixUseAccess); > } > if (rc == Success) >@@ -420,7 +420,7 @@ dixChangeGC(ClientPtr client, GC *pGC, BITS32 mask, CARD32 *pC32, ChangeGCValPtr > pPixmap = NullPixmap; > } > else { >- rc = dixLookupResource((pointer *)&pPixmap, pid, >+ rc = dixLookupResourceByType((pointer *)&pPixmap, pid, > RT_PIXMAP, client, > DixReadAccess); > if (rc != Success) { >diff --git a/dix/resource.c b/dix/resource.c >index 81b2e95..6d7f816 100644 >--- a/dix/resource.c >+++ b/dix/resource.c >@@ -846,11 +846,10 @@ LegalNewID(XID id, ClientPtr client) > } > > _X_EXPORT int >-dixLookupResource(pointer *result, XID id, RESTYPE rtype, >- ClientPtr client, Mask mode) >+dixLookupResourceByType(pointer *result, XID id, RESTYPE rtype, >+ ClientPtr client, Mask mode) > { > int cid = CLIENT_ID(id); >- int istype = (rtype & TypeMask) && (rtype != RC_ANY); > ResourcePtr res = NULL; > > *result = NULL; >@@ -859,8 +858,38 @@ dixLookupResource(pointer *result, XID id, RESTYPE rtype, > res = clientTable[cid].resources[Hash(cid, id)]; > > for (; res; res = res->next) >- if ((res->id == id) && ((istype && res->type == rtype) || >- (!istype && res->type & rtype))) >+ if (res->id == id && res->type == rtype) >+ break; >+ } >+ if (!res) >+ return BadValue; >+ >+ if (client) { >+ client->errorValue = id; >+ cid = XaceHook(XACE_RESOURCE_ACCESS, client, id, res->type, >+ res->value, RT_NONE, NULL, mode); >+ if (cid != Success) >+ return cid; >+ } >+ >+ *result = res->value; >+ return Success; >+} >+ >+_X_EXPORT int >+dixLookupResourceByClass(pointer *result, XID id, RESTYPE rclass, >+ ClientPtr client, Mask mode) >+{ >+ int cid = CLIENT_ID(id); >+ ResourcePtr res = NULL; >+ >+ *result = NULL; >+ >+ if ((cid < MAXCLIENTS) && clientTable[cid].buckets) { >+ res = clientTable[cid].resources[Hash(cid, id)]; >+ >+ for (; res; res = res->next) >+ if (res->id == id && (res->type & rclass)) > break; > } > if (!res) >diff --git a/dix/window.c b/dix/window.c >index 541d199..5810030 100644 >--- a/dix/window.c >+++ b/dix/window.c >@@ -1086,7 +1086,7 @@ ChangeWindowAttributes(WindowPtr pWin, Mask vmask, XID *vlist, ClientPtr client) > } > else > { >- rc = dixLookupResource((pointer *)&pPixmap, pixID, RT_PIXMAP, >+ rc = dixLookupResourceByType((pointer *)&pPixmap, pixID, RT_PIXMAP, > client, DixReadAccess); > if (rc == Success) > { >@@ -1146,7 +1146,7 @@ ChangeWindowAttributes(WindowPtr pWin, Mask vmask, XID *vlist, ClientPtr client) > pixID = pWin->parent->border.pixmap->drawable.id; > } > } >- rc = dixLookupResource((pointer *)&pPixmap, pixID, RT_PIXMAP, >+ rc = dixLookupResourceByType((pointer *)&pPixmap, pixID, RT_PIXMAP, > client, DixReadAccess); > if (rc == Success) > { >@@ -1348,7 +1348,7 @@ ChangeWindowAttributes(WindowPtr pWin, Mask vmask, XID *vlist, ClientPtr client) > error = BadMatch; > goto PatchUp; > } >- rc = dixLookupResource((pointer *)&pCmap, cmap, RT_COLORMAP, >+ rc = dixLookupResourceByType((pointer *)&pCmap, cmap, RT_COLORMAP, > client, DixUseAccess); > if (rc != Success) > { >@@ -1424,7 +1424,7 @@ ChangeWindowAttributes(WindowPtr pWin, Mask vmask, XID *vlist, ClientPtr client) > } > else > { >- rc = dixLookupResource((pointer *)&pCursor, cursorID, >+ rc = dixLookupResourceByType((pointer *)&pCursor, cursorID, > RT_CURSOR, client, DixUseAccess); > if (rc != Success) > { >diff --git a/hw/xfree86/loader/dixsym.c b/hw/xfree86/loader/dixsym.c >index 5713ca1..58d813e 100644 >--- a/hw/xfree86/loader/dixsym.c >+++ b/hw/xfree86/loader/dixsym.c >@@ -276,6 +276,8 @@ _X_HIDDEN void *dixLookupTab[] = { > SYMFUNC(ChangeResourceValue) > SYMFUNC(CreateNewResourceClass) > SYMFUNC(CreateNewResourceType) >+ SYMFUNC(dixLookupResourceByType) >+ SYMFUNC(dixLookupResourceByClass) > SYMFUNC(dixLookupResource) > SYMFUNC(FakeClientID) > SYMFUNC(FreeResource) >diff --git a/include/resource.h b/include/resource.h >index b8105d4..ad51424 100644 >--- a/include/resource.h >+++ b/include/resource.h >@@ -218,13 +218,20 @@ extern pointer LookupClientResourceComplex( > FindComplexResType func, > pointer cdata); > >-extern int dixLookupResource( >+extern int dixLookupResourceByType( > pointer *result, > XID id, > RESTYPE rtype, > ClientPtr client, > Mask access_mode); > >+extern int dixLookupResourceByClass( >+ pointer *result, >+ XID id, >+ RESTYPE rclass, >+ ClientPtr client, >+ Mask access_mode); >+ > extern void GetXIDRange( > int /*client*/, > Bool /*server*/, >@@ -244,29 +251,43 @@ extern RESTYPE TypeMask; > * Please use the noted replacements instead. > */ > >-/* replaced by dixLookupResource */ >+#ifdef __GNUC__ >+#define X_DEPRECATED __attribute__((deprecated)) >+#else >+#define X_DEPRECATED >+#endif >+ >+/* replaced by dixLookupResourceByType or dixLookupResourceByClass */ >+extern int dixLookupResource( >+ pointer *result, >+ XID id, >+ RESTYPE rtype, >+ ClientPtr client, >+ Mask access_mode) X_DEPRECATED; >+ >+/* replaced by dixLookupResourceByType */ > extern pointer SecurityLookupIDByType( > ClientPtr client, > XID id, > RESTYPE rtype, >- Mask access_mode); >+ Mask access_mode) X_DEPRECATED; > >-/* replaced by dixLookupResource */ >+/* replaced by dixLookupResourceByClass */ > extern pointer SecurityLookupIDByClass( > ClientPtr client, > XID id, > RESTYPE classes, >- Mask access_mode); >+ Mask access_mode) X_DEPRECATED; > >-/* replaced by dixLookupResource */ >+/* replaced by dixLookupResourceByType */ > extern pointer LookupIDByType( > XID id, >- RESTYPE rtype); >+ RESTYPE rtype) X_DEPRECATED; > >-/* replaced by dixLookupResource */ >+/* replaced by dixLookupResourceByClass */ > extern pointer LookupIDByClass( > XID id, >- RESTYPE classes); >+ RESTYPE classes) X_DEPRECATED; > > #endif /* RESOURCE_H */ > >diff --git a/render/picture.c b/render/picture.c >index 723f337..93952c8 100644 >--- a/render/picture.c >+++ b/render/picture.c >@@ -1069,7 +1069,7 @@ ChangePicture (PicturePtr pPicture, > pAlpha = 0; > else > { >- error = dixLookupResource((pointer *)&pAlpha, pid, >+ error = dixLookupResourceByType((pointer *)&pAlpha, pid, > PictureType, client, > DixReadAccess); > if (error != Success) >@@ -1130,7 +1130,7 @@ ChangePicture (PicturePtr pPicture, > else > { > clipType = CT_PIXMAP; >- error = dixLookupResource((pointer *)&pPixmap, pid, >+ error = dixLookupResourceByType((pointer *)&pPixmap, pid, > RT_PIXMAP, client, > DixReadAccess); > if (error != Success) >diff --git a/render/render.c b/render/render.c >index 638aa46..db340dc 100644 >--- a/render/render.c >+++ b/render/render.c >@@ -1018,7 +1018,7 @@ ProcRenderReferenceGlyphSet (ClientPtr client) > > LEGAL_NEW_RESOURCE(stuff->gsid, client); > >- rc = dixLookupResource((pointer *)&glyphSet, stuff->existing, GlyphSetType, >+ rc = dixLookupResourceByType((pointer *)&glyphSet, stuff->existing, GlyphSetType, > client, DixGetAttrAccess); > if (rc != Success) > { >@@ -1042,7 +1042,7 @@ ProcRenderFreeGlyphSet (ClientPtr client) > REQUEST(xRenderFreeGlyphSetReq); > > REQUEST_SIZE_MATCH(xRenderFreeGlyphSetReq); >- rc = dixLookupResource((pointer *)&glyphSet, stuff->glyphset, GlyphSetType, >+ rc = dixLookupResourceByType((pointer *)&glyphSet, stuff->glyphset, GlyphSetType, > client, DixDestroyAccess); > if (rc != Success) > { >@@ -1081,7 +1081,7 @@ ProcRenderAddGlyphs (ClientPtr client) > CARD32 component_alpha; > > REQUEST_AT_LEAST_SIZE(xRenderAddGlyphsReq); >- err = dixLookupResource((pointer *)&glyphSet, stuff->glyphset, GlyphSetType, >+ err = dixLookupResourceByType((pointer *)&glyphSet, stuff->glyphset, GlyphSetType, > client, DixAddAccess); > if (err != Success) > { >@@ -1271,7 +1271,7 @@ ProcRenderFreeGlyphs (ClientPtr client) > CARD32 glyph; > > REQUEST_AT_LEAST_SIZE(xRenderFreeGlyphsReq); >- rc = dixLookupResource((pointer *)&glyphSet, stuff->glyphset, GlyphSetType, >+ rc = dixLookupResourceByType((pointer *)&glyphSet, stuff->glyphset, GlyphSetType, > client, DixRemoveAccess); > if (rc != Success) > { >diff --git a/xfixes/cursor.c b/xfixes/cursor.c >index 0834d88..6853168 100755 >--- a/xfixes/cursor.c >+++ b/xfixes/cursor.c >@@ -850,7 +850,7 @@ ProcXFixesHideCursor (ClientPtr client) > > REQUEST_SIZE_MATCH (xXFixesHideCursorReq); > >- ret = dixLookupResource((pointer *)&pWin, stuff->window, RT_WINDOW, >+ ret = dixLookupResourceByType((pointer *)&pWin, stuff->window, RT_WINDOW, > client, DixGetAttrAccess); > if (ret != Success) { > client->errorValue = stuff->window; >@@ -908,7 +908,7 @@ ProcXFixesShowCursor (ClientPtr client) > > REQUEST_SIZE_MATCH (xXFixesShowCursorReq); > >- rc = dixLookupResource((pointer *)&pWin, stuff->window, RT_WINDOW, >+ rc = dixLookupResourceByType((pointer *)&pWin, stuff->window, RT_WINDOW, > client, DixGetAttrAccess); > if (rc != Success) { > client->errorValue = stuff->window; >diff --git a/xfixes/region.c b/xfixes/region.c >index d90b1e0..b927631 100755 >--- a/xfixes/region.c >+++ b/xfixes/region.c >@@ -115,7 +115,7 @@ ProcXFixesCreateRegionFromBitmap (ClientPtr client) > REQUEST_SIZE_MATCH (xXFixesCreateRegionFromBitmapReq); > LEGAL_NEW_RESOURCE (stuff->region, client); > >- rc = dixLookupResource((pointer *)&pPixmap, stuff->bitmap, RT_PIXMAP, >+ rc = dixLookupResourceByType((pointer *)&pPixmap, stuff->bitmap, RT_PIXMAP, > client, DixReadAccess); > if (rc != Success) > { >@@ -160,7 +160,7 @@ ProcXFixesCreateRegionFromWindow (ClientPtr client) > > REQUEST_SIZE_MATCH (xXFixesCreateRegionFromWindowReq); > LEGAL_NEW_RESOURCE (stuff->region, client); >- rc = dixLookupResource((pointer *)&pWin, stuff->window, RT_WINDOW, >+ rc = dixLookupResourceByType((pointer *)&pWin, stuff->window, RT_WINDOW, > client, DixGetAttrAccess); > if (rc != Success) > { >@@ -687,7 +687,7 @@ ProcXFixesSetWindowShapeRegion (ClientPtr client) > REQUEST(xXFixesSetWindowShapeRegionReq); > > REQUEST_SIZE_MATCH(xXFixesSetWindowShapeRegionReq); >- rc = dixLookupResource((pointer *)&pWin, stuff->dest, RT_WINDOW, >+ rc = dixLookupResourceByType((pointer *)&pWin, stuff->dest, RT_WINDOW, > client, DixSetAttrAccess); > if (rc != Success) > { >-- >1.5.6.3 >
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 430416
:
293936
|
293937
|
293938
|
293939
|
293940
|
293941
|
304370
| 313661