mirror of
https://gitlab.freedesktop.org/xorg/xserver.git
synced 2026-02-15 02:10:35 +01:00
xace: typesafe hook function for XACE_SCREEN_ACCESS
he generic XaceHook() call isn't typesafe (und unnecessarily slow).
Better add an explicit function, just like we already have for others.
Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/1556>
(cherry picked from commit 51d8bcfc0d)
This commit is contained in:
parent
dd0dcbe99d
commit
4e4e6d6f42
5 changed files with 15 additions and 11 deletions
|
|
@ -116,6 +116,13 @@ int XaceHookServerAccess(ClientPtr client, Mask access_mode)
|
|||
return rec.status;
|
||||
}
|
||||
|
||||
int XaceHookScreenAccess(ClientPtr client, ScreenPtr screen, Mask access_mode)
|
||||
{
|
||||
XaceScreenAccessRec rec = { client, screen, access_mode, Success };
|
||||
CallCallbacks(&XaceHooks[XACE_SCREEN_ACCESS], &rec);
|
||||
return rec.status;
|
||||
}
|
||||
|
||||
/* Entry point for hook functions. Called by Xserver.
|
||||
*/
|
||||
int
|
||||
|
|
@ -140,7 +147,6 @@ XaceHook(int hook, ...)
|
|||
* sets calldata directly to a single argument (with no return result)
|
||||
*/
|
||||
switch (hook) {
|
||||
case XACE_SCREEN_ACCESS:
|
||||
case XACE_SCREENSAVER_ACCESS:
|
||||
u.screen.client = va_arg(ap, ClientPtr);
|
||||
u.screen.screen = va_arg(ap, ScreenPtr);
|
||||
|
|
|
|||
|
|
@ -93,6 +93,7 @@ int XaceHookReceiveAccess(ClientPtr client, WindowPtr win, xEventPtr ev, int cou
|
|||
int XaceHookClientAccess(ClientPtr client, ClientPtr target, Mask access_mode);
|
||||
int XaceHookExtAccess(ClientPtr client, ExtensionEntry *ext);
|
||||
int XaceHookServerAccess(ClientPtr client, Mask access_mode);
|
||||
int XaceHookScreenAccess(ClientPtr client, ScreenPtr screen, Mask access_mode);
|
||||
|
||||
|
||||
/* Register a callback for a given hook.
|
||||
|
|
|
|||
|
|
@ -611,7 +611,7 @@ ProcDbeGetVisualInfo(ClientPtr client)
|
|||
pDrawables[i]->pScreen;
|
||||
pDbeScreenPriv = DBE_SCREEN_PRIV(pScreen);
|
||||
|
||||
rc = XaceHook(XACE_SCREEN_ACCESS, client, pScreen, DixGetAttrAccess);
|
||||
rc = XaceHookScreenAccess(client, pScreen, DixGetAttrAccess);
|
||||
if (rc != Success)
|
||||
goto freeScrVisInfo;
|
||||
|
||||
|
|
|
|||
|
|
@ -2517,7 +2517,7 @@ ProcInstallColormap(ClientPtr client)
|
|||
if (rc != Success)
|
||||
goto out;
|
||||
|
||||
rc = XaceHook(XACE_SCREEN_ACCESS, client, pcmp->pScreen, DixSetAttrAccess);
|
||||
rc = XaceHookScreenAccess(client, pcmp->pScreen, DixSetAttrAccess);
|
||||
if (rc != Success) {
|
||||
if (rc == BadValue)
|
||||
rc = BadColor;
|
||||
|
|
@ -2546,7 +2546,7 @@ ProcUninstallColormap(ClientPtr client)
|
|||
if (rc != Success)
|
||||
goto out;
|
||||
|
||||
rc = XaceHook(XACE_SCREEN_ACCESS, client, pcmp->pScreen, DixSetAttrAccess);
|
||||
rc = XaceHookScreenAccess(client, pcmp->pScreen, DixSetAttrAccess);
|
||||
if (rc != Success) {
|
||||
if (rc == BadValue)
|
||||
rc = BadColor;
|
||||
|
|
@ -2576,8 +2576,7 @@ ProcListInstalledColormaps(ClientPtr client)
|
|||
if (rc != Success)
|
||||
return rc;
|
||||
|
||||
rc = XaceHook(XACE_SCREEN_ACCESS, client, pWin->drawable.pScreen,
|
||||
DixGetAttrAccess);
|
||||
rc = XaceHookScreenAccess(client, pWin->drawable.pScreen, DixGetAttrAccess);
|
||||
if (rc != Success)
|
||||
return rc;
|
||||
|
||||
|
|
@ -3141,7 +3140,7 @@ ProcQueryBestSize(ClientPtr client)
|
|||
if (stuff->class != CursorShape && pDraw->type == UNDRAWABLE_WINDOW)
|
||||
return BadMatch;
|
||||
pScreen = pDraw->pScreen;
|
||||
rc = XaceHook(XACE_SCREEN_ACCESS, client, pScreen, DixGetAttrAccess);
|
||||
rc = XaceHookScreenAccess(client, pScreen, DixGetAttrAccess);
|
||||
if (rc != Success)
|
||||
return rc;
|
||||
(*pScreen->QueryBestSize) (stuff->class, &stuff->width,
|
||||
|
|
|
|||
|
|
@ -878,8 +878,7 @@ ProcXFixesHideCursor(ClientPtr client)
|
|||
* This is the first time this client has hid the cursor
|
||||
* for this screen.
|
||||
*/
|
||||
ret = XaceHook(XACE_SCREEN_ACCESS, client, pWin->drawable.pScreen,
|
||||
DixHideAccess);
|
||||
ret = XaceHookScreenAccess(client, pWin->drawable.pScreen, DixHideAccess);
|
||||
if (ret != Success)
|
||||
return ret;
|
||||
|
||||
|
|
@ -936,8 +935,7 @@ ProcXFixesShowCursor(ClientPtr client)
|
|||
return BadMatch;
|
||||
}
|
||||
|
||||
rc = XaceHook(XACE_SCREEN_ACCESS, client, pWin->drawable.pScreen,
|
||||
DixShowAccess);
|
||||
rc = XaceHookScreenAccess(client, pWin->drawable.pScreen, DixShowAccess);
|
||||
if (rc != Success)
|
||||
return rc;
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue