diff options
Diffstat (limited to 'dix/property.c')
-rw-r--r-- | dix/property.c | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/dix/property.c b/dix/property.c index e74becfa2..8b66ad6a2 100644 --- a/dix/property.c +++ b/dix/property.c @@ -103,7 +103,7 @@ dixLookupProperty(PropertyPtr *result, WindowPtr pWin, Atom propertyName, break; if (pProp) - rc = XaceHookPropertyAccess(client, pWin, pProp, access_mode); + rc = XaceHookPropertyAccess(client, pWin, &pProp, access_mode); *result = pProp; return rc; } @@ -256,12 +256,14 @@ dixChangeWindowProperty(ClientPtr pClient, WindowPtr pWin, Atom property, PropertyPtr pProp; int sizeInBytes, totalSize, rc; pointer data; + Mask access_mode; sizeInBytes = format>>3; totalSize = len * sizeInBytes; + access_mode = (mode == PropModeReplace) ? DixWriteAccess : DixBlendAccess; /* first see if property already exists */ - rc = dixLookupProperty(&pProp, pWin, property, pClient, DixWriteAccess); + rc = dixLookupProperty(&pProp, pWin, property, pClient, access_mode); if (rc == BadMatch) /* just add to list */ { @@ -284,7 +286,7 @@ dixChangeWindowProperty(ClientPtr pClient, WindowPtr pWin, Atom property, memmove((char *)data, (char *)value, totalSize); pProp->size = len; pProp->devPrivates = NULL; - rc = XaceHookPropertyAccess(pClient, pWin, pProp, + rc = XaceHookPropertyAccess(pClient, pWin, &pProp, DixCreateAccess|DixWriteAccess); if (rc != Success) { xfree(data); @@ -588,7 +590,7 @@ ProcListProperties(ClientPtr client) temppAtoms = pAtoms; for (pProp = wUserProps(pWin); pProp; pProp = pProp->next) { realProp = pProp; - rc = XaceHookPropertyAccess(client, pWin, pProp, DixGetAttrAccess); + rc = XaceHookPropertyAccess(client, pWin, &realProp, DixGetAttrAccess); if (rc == Success && realProp == pProp) { *temppAtoms++ = pProp->propertyName; numProps++; |