diff --git a/Xext/xace.c b/Xext/xace.c index 0e05877d2bd43b8a26dde6d6d9c0e98734d62909..bb8ce69977ebd0c32a73e3c4423e152c132b9274 100644 --- a/Xext/xace.c +++ b/Xext/xace.c @@ -136,43 +136,11 @@ int XaceHookAuthAvail(ClientPtr client, XID authId) return Success; } -/* Entry point for hook functions. Called by Xserver. - */ -int -XaceHook(int hook, ...) +int XaceHookKeyAvail(xEventPtr ev, DeviceIntPtr dev, int count) { - union { - XaceKeyAvailRec key; - } u; - int *prv = NULL; /* points to return value from callback */ - va_list ap; /* argument list */ - - if (!XaceHooks[hook]) - return Success; - - va_start(ap, hook); - - /* Marshal arguments for passing to callback. - * Each callback has its own case, which sets up a structure to hold - * the arguments and integer return parameter, or in some cases just - * sets calldata directly to a single argument (with no return result) - */ - switch (hook) { - case XACE_KEY_AVAIL: - u.key.event = va_arg(ap, xEventPtr); - u.key.keybd = va_arg(ap, DeviceIntPtr); - u.key.count = va_arg(ap, int); - - break; - default: - va_end(ap); - return 0; /* unimplemented hook number */ - } - va_end(ap); - - /* call callbacks and return result, if any. */ - CallCallbacks(&XaceHooks[hook], &u); - return prv ? *prv : Success; + XaceKeyAvailRec rec = { ev, dev, count }; + CallCallbacks(&XaceHooks[XACE_KEY_AVAIL], &rec); + return Success; } /* XaceHookIsSet diff --git a/Xext/xace.h b/Xext/xace.h index c1e838ee1053800e3af158d064d793b201bb922c..481110a1cc3b726bb2f5b1404ed21d2b2bfdc6d9 100644 --- a/Xext/xace.h +++ b/Xext/xace.h @@ -94,6 +94,7 @@ int XaceHookServerAccess(ClientPtr client, Mask access_mode); int XaceHookScreenAccess(ClientPtr client, ScreenPtr screen, Mask access_mode); int XaceHookScreensaverAccess(ClientPtr client, ScreenPtr screen, Mask access_mode); int XaceHookAuthAvail(ClientPtr client, XID authId); +int XaceHookKeyAvail(xEventPtr ev, DeviceIntPtr dev, int count); /* Register a callback for a given hook. @@ -129,14 +130,12 @@ void XaceCensorImage(ClientPtr client, /* Define calls away when XACE is not being built. */ #ifdef __GNUC__ -#define XaceHook(args...) Success #define XaceHookIsSet(args...) 0 #define XaceHookDispatch(args...) Success #define XaceHookPropertyAccess(args...) Success #define XaceHookSelectionAccess(args...) Success #define XaceCensorImage(args...) { ; } #else -#define XaceHook(...) Success #define XaceHookIsSet(...) 0 #define XaceHookDispatch(...) Success #define XaceHookPropertyAccess(...) Success diff --git a/Xi/exevents.c b/Xi/exevents.c index dc70bae002b7c67bec5e8c3ead2c776ddda6d54a..6bfc9a6de3df6c8e1cfb202ca04a696546d5b0d9 100644 --- a/Xi/exevents.c +++ b/Xi/exevents.c @@ -1880,7 +1880,7 @@ ProcessDeviceEvent(InternalEvent *ev, DeviceIntPtr device) int count; if (EventToCore(ev, &core, &count) == Success && count > 0) { - XaceHook(XACE_KEY_AVAIL, core, device, 0); + XaceHookKeyAvail(core, device, 0); free(core); } }