xace: typesafe hook function for XACE_DEVICE_ACCESS
The 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>
This commit is contained in:
parent
ae3c573337
commit
9524ffee89
16
Xext/xace.c
16
Xext/xace.c
|
@ -71,13 +71,19 @@ int XaceHookResourceAccess(ClientPtr client, XID id, RESTYPE rtype, void *res,
|
|||
return rec.status;
|
||||
}
|
||||
|
||||
int XaceHookDeviceAccess(ClientPtr client, DeviceIntPtr dev, Mask access_mode)
|
||||
{
|
||||
XaceDeviceAccessRec rec = { client, dev, access_mode, Success };
|
||||
CallCallbacks(&XaceHooks[XACE_DEVICE_ACCESS], &rec);
|
||||
return rec.status;
|
||||
}
|
||||
|
||||
/* Entry point for hook functions. Called by Xserver.
|
||||
*/
|
||||
int
|
||||
XaceHook(int hook, ...)
|
||||
{
|
||||
union {
|
||||
XaceDeviceAccessRec dev;
|
||||
XaceSendAccessRec send;
|
||||
XaceReceiveAccessRec recv;
|
||||
XaceClientAccessRec client;
|
||||
|
@ -101,14 +107,6 @@ XaceHook(int hook, ...)
|
|||
* sets calldata directly to a single argument (with no return result)
|
||||
*/
|
||||
switch (hook) {
|
||||
case XACE_DEVICE_ACCESS:
|
||||
u.dev.client = va_arg(ap, ClientPtr);
|
||||
u.dev.dev = va_arg(ap, DeviceIntPtr);
|
||||
u.dev.access_mode = va_arg(ap, Mask);
|
||||
|
||||
u.dev.status = Success; /* default allow */
|
||||
prv = &u.dev.status;
|
||||
break;
|
||||
case XACE_SEND_ACCESS:
|
||||
u.send.client = va_arg(ap, ClientPtr);
|
||||
u.send.dev = va_arg(ap, DeviceIntPtr);
|
||||
|
|
|
@ -82,6 +82,8 @@ int XaceHookSelectionAccess(ClientPtr ptr, Selection ** ppSel, Mask access_mode)
|
|||
_X_EXPORT int XaceHookResourceAccess(ClientPtr client, XID id, RESTYPE rtype, void *res,
|
||||
RESTYPE ptype, void *parent, Mask access_mode);
|
||||
|
||||
int XaceHookDeviceAccess(ClientPtr client, DeviceIntPtr dev, Mask access_mode);
|
||||
|
||||
/* Register a callback for a given hook.
|
||||
*/
|
||||
#define XaceRegisterCallback(hook,callback,data) \
|
||||
|
|
|
@ -2514,7 +2514,7 @@ GrabButton(ClientPtr client, DeviceIntPtr dev, DeviceIntPtr modifier_device,
|
|||
if (param->this_device_mode == GrabModeSync ||
|
||||
param->other_devices_mode == GrabModeSync)
|
||||
access_mode |= DixFreezeAccess;
|
||||
rc = XaceHook(XACE_DEVICE_ACCESS, client, dev, access_mode);
|
||||
rc = XaceHookDeviceAccess(client, dev, access_mode);
|
||||
if (rc != Success)
|
||||
return rc;
|
||||
rc = dixLookupWindow(&pWin, param->grabWindow, client, DixSetAttrAccess);
|
||||
|
@ -2570,7 +2570,7 @@ GrabKey(ClientPtr client, DeviceIntPtr dev, DeviceIntPtr modifier_device,
|
|||
if (param->this_device_mode == GrabModeSync ||
|
||||
param->other_devices_mode == GrabModeSync)
|
||||
access_mode |= DixFreezeAccess;
|
||||
rc = XaceHook(XACE_DEVICE_ACCESS, client, dev, access_mode);
|
||||
rc = XaceHookDeviceAccess(client, dev, access_mode);
|
||||
if (rc != Success)
|
||||
return rc;
|
||||
|
||||
|
@ -2613,7 +2613,7 @@ GrabWindow(ClientPtr client, DeviceIntPtr dev, int type,
|
|||
if (param->this_device_mode == GrabModeSync ||
|
||||
param->other_devices_mode == GrabModeSync)
|
||||
access_mode |= DixFreezeAccess;
|
||||
rc = XaceHook(XACE_DEVICE_ACCESS, client, dev, access_mode);
|
||||
rc = XaceHookDeviceAccess(client, dev, access_mode);
|
||||
if (rc != Success)
|
||||
return rc;
|
||||
|
||||
|
@ -2644,7 +2644,7 @@ GrabTouchOrGesture(ClientPtr client, DeviceIntPtr dev, DeviceIntPtr mod_dev,
|
|||
rc = dixLookupWindow(&pWin, param->grabWindow, client, DixSetAttrAccess);
|
||||
if (rc != Success)
|
||||
return rc;
|
||||
rc = XaceHook(XACE_DEVICE_ACCESS, client, dev, DixGrabAccess);
|
||||
rc = XaceHookDeviceAccess(client, dev, DixGrabAccess);
|
||||
if (rc != Success)
|
||||
return rc;
|
||||
|
||||
|
|
|
@ -126,7 +126,7 @@ ProcXGrabDeviceButton(ClientPtr client)
|
|||
}
|
||||
else {
|
||||
mdev = PickKeyboard(client);
|
||||
ret = XaceHook(XACE_DEVICE_ACCESS, client, mdev, DixUseAccess);
|
||||
ret = XaceHookDeviceAccess(client, mdev, DixUseAccess);
|
||||
if (ret != Success)
|
||||
return ret;
|
||||
}
|
||||
|
|
|
@ -124,7 +124,7 @@ ProcXGrabDeviceKey(ClientPtr client)
|
|||
}
|
||||
else {
|
||||
mdev = PickKeyboard(client);
|
||||
ret = XaceHook(XACE_DEVICE_ACCESS, client, mdev, DixUseAccess);
|
||||
ret = XaceHookDeviceAccess(client, mdev, DixUseAccess);
|
||||
if (ret != Success)
|
||||
return ret;
|
||||
}
|
||||
|
|
|
@ -309,7 +309,7 @@ ShouldSkipDevice(ClientPtr client, DeviceIntPtr d)
|
|||
{
|
||||
/* don't send master devices other than VCP/VCK */
|
||||
if (!IsMaster(d) || d == inputInfo.pointer ||d == inputInfo.keyboard) {
|
||||
int rc = XaceHook(XACE_DEVICE_ACCESS, client, d, DixGetAttrAccess);
|
||||
int rc = XaceHookDeviceAccess(client, d, DixGetAttrAccess);
|
||||
|
||||
if (rc == Success)
|
||||
return FALSE;
|
||||
|
|
|
@ -178,7 +178,7 @@ ShouldSkipDevice(ClientPtr client, int deviceid, DeviceIntPtr dev)
|
|||
{
|
||||
/* if all devices are not being queried, only master devices are */
|
||||
if (deviceid == XIAllDevices || IsMaster(dev)) {
|
||||
int rc = XaceHook(XACE_DEVICE_ACCESS, client, dev, DixGetAttrAccess);
|
||||
int rc = XaceHookDeviceAccess(client, dev, DixGetAttrAccess);
|
||||
|
||||
if (rc == Success)
|
||||
return FALSE;
|
||||
|
@ -575,7 +575,7 @@ ListDeviceClasses(ClientPtr client, DeviceIntPtr dev,
|
|||
int rc;
|
||||
|
||||
/* Check if the current device state should be suppressed */
|
||||
rc = XaceHook(XACE_DEVICE_ACCESS, client, dev, DixReadAccess);
|
||||
rc = XaceHookDeviceAccess(client, dev, DixReadAccess);
|
||||
|
||||
if (dev->button) {
|
||||
(*nclasses)++;
|
||||
|
|
|
@ -296,7 +296,7 @@ AddInputDevice(ClientPtr client, DeviceProc deviceProc, Bool autoStart)
|
|||
|
||||
/* security creation/labeling check
|
||||
*/
|
||||
if (XaceHook(XACE_DEVICE_ACCESS, client, dev, DixCreateAccess)) {
|
||||
if (XaceHookDeviceAccess(client, dev, DixCreateAccess)) {
|
||||
dixFreePrivates(dev->devPrivates, PRIVATE_DEVICE);
|
||||
free(dev);
|
||||
return NULL;
|
||||
|
@ -1264,7 +1264,7 @@ dixLookupDevice(DeviceIntPtr *pDev, int id, ClientPtr client, Mask access_mode)
|
|||
return BadDevice;
|
||||
|
||||
found:
|
||||
rc = XaceHook(XACE_DEVICE_ACCESS, client, dev, access_mode);
|
||||
rc = XaceHookDeviceAccess(client, dev, access_mode);
|
||||
if (rc == Success)
|
||||
*pDev = dev;
|
||||
return rc;
|
||||
|
@ -1844,7 +1844,7 @@ ProcChangeKeyboardMapping(ClientPtr client)
|
|||
keysyms.mapWidth = stuff->keySymsPerKeyCode;
|
||||
keysyms.map = (KeySym *) &stuff[1];
|
||||
|
||||
rc = XaceHook(XACE_DEVICE_ACCESS, client, pDev, DixManageAccess);
|
||||
rc = XaceHookDeviceAccess(client, pDev, DixManageAccess);
|
||||
if (rc != Success)
|
||||
return rc;
|
||||
|
||||
|
@ -1857,7 +1857,7 @@ ProcChangeKeyboardMapping(ClientPtr client)
|
|||
if (!tmp->key)
|
||||
continue;
|
||||
|
||||
rc = XaceHook(XACE_DEVICE_ACCESS, client, pDev, DixManageAccess);
|
||||
rc = XaceHookDeviceAccess(client, pDev, DixManageAccess);
|
||||
if (rc != Success)
|
||||
continue;
|
||||
|
||||
|
@ -1938,7 +1938,7 @@ ProcGetKeyboardMapping(ClientPtr client)
|
|||
REQUEST(xGetKeyboardMappingReq);
|
||||
REQUEST_SIZE_MATCH(xGetKeyboardMappingReq);
|
||||
|
||||
rc = XaceHook(XACE_DEVICE_ACCESS, client, kbd, DixGetAttrAccess);
|
||||
rc = XaceHookDeviceAccess(client, kbd, DixGetAttrAccess);
|
||||
if (rc != Success)
|
||||
return rc;
|
||||
|
||||
|
@ -1991,7 +1991,7 @@ ProcGetPointerMapping(ClientPtr client)
|
|||
|
||||
REQUEST_SIZE_MATCH(xReq);
|
||||
|
||||
rc = XaceHook(XACE_DEVICE_ACCESS, client, ptr, DixGetAttrAccess);
|
||||
rc = XaceHookDeviceAccess(client, ptr, DixGetAttrAccess);
|
||||
if (rc != Success)
|
||||
return rc;
|
||||
|
||||
|
@ -2217,7 +2217,7 @@ ProcChangeKeyboardControl(ClientPtr client)
|
|||
if ((pDev == keyboard ||
|
||||
(!IsMaster(pDev) && GetMaster(pDev, MASTER_KEYBOARD) == keyboard))
|
||||
&& pDev->kbdfeed && pDev->kbdfeed->CtrlProc) {
|
||||
ret = XaceHook(XACE_DEVICE_ACCESS, client, pDev, DixManageAccess);
|
||||
ret = XaceHookDeviceAccess(client, pDev, DixManageAccess);
|
||||
if (ret != Success)
|
||||
return ret;
|
||||
}
|
||||
|
@ -2246,7 +2246,7 @@ ProcGetKeyboardControl(ClientPtr client)
|
|||
|
||||
REQUEST_SIZE_MATCH(xReq);
|
||||
|
||||
rc = XaceHook(XACE_DEVICE_ACCESS, client, kbd, DixGetAttrAccess);
|
||||
rc = XaceHookDeviceAccess(client, kbd, DixGetAttrAccess);
|
||||
if (rc != Success)
|
||||
return rc;
|
||||
|
||||
|
@ -2294,7 +2294,7 @@ ProcBell(ClientPtr client)
|
|||
(!IsMaster(dev) && GetMaster(dev, MASTER_KEYBOARD) == keybd)) &&
|
||||
((dev->kbdfeed && dev->kbdfeed->BellProc) || dev->xkb_interest)) {
|
||||
|
||||
rc = XaceHook(XACE_DEVICE_ACCESS, client, dev, DixBellAccess);
|
||||
rc = XaceHookDeviceAccess(client, dev, DixBellAccess);
|
||||
if (rc != Success)
|
||||
return rc;
|
||||
XkbHandleBell(FALSE, FALSE, dev, newpercent,
|
||||
|
@ -2367,7 +2367,7 @@ ProcChangePointerControl(ClientPtr client)
|
|||
if ((dev == mouse ||
|
||||
(!IsMaster(dev) && GetMaster(dev, MASTER_POINTER) == mouse)) &&
|
||||
dev->ptrfeed) {
|
||||
rc = XaceHook(XACE_DEVICE_ACCESS, client, dev, DixManageAccess);
|
||||
rc = XaceHookDeviceAccess(client, dev, DixManageAccess);
|
||||
if (rc != Success)
|
||||
return rc;
|
||||
}
|
||||
|
@ -2399,7 +2399,7 @@ ProcGetPointerControl(ClientPtr client)
|
|||
|
||||
REQUEST_SIZE_MATCH(xReq);
|
||||
|
||||
rc = XaceHook(XACE_DEVICE_ACCESS, client, ptr, DixGetAttrAccess);
|
||||
rc = XaceHookDeviceAccess(client, ptr, DixGetAttrAccess);
|
||||
if (rc != Success)
|
||||
return rc;
|
||||
|
||||
|
@ -2448,7 +2448,7 @@ ProcGetMotionEvents(ClientPtr client)
|
|||
rc = dixLookupWindow(&pWin, stuff->window, client, DixGetAttrAccess);
|
||||
if (rc != Success)
|
||||
return rc;
|
||||
rc = XaceHook(XACE_DEVICE_ACCESS, client, mouse, DixReadAccess);
|
||||
rc = XaceHookDeviceAccess(client, mouse, DixReadAccess);
|
||||
if (rc != Success)
|
||||
return rc;
|
||||
|
||||
|
@ -2512,7 +2512,7 @@ ProcQueryKeymap(ClientPtr client)
|
|||
.length = 2
|
||||
};
|
||||
|
||||
rc = XaceHook(XACE_DEVICE_ACCESS, client, keybd, DixReadAccess);
|
||||
rc = XaceHookDeviceAccess(client, keybd, DixReadAccess);
|
||||
/* If rc is Success, we're allowed to copy out the keymap.
|
||||
* If it's BadAccess, we leave it empty & lie to the client.
|
||||
*/
|
||||
|
|
18
dix/events.c
18
dix/events.c
|
@ -3626,7 +3626,7 @@ ProcWarpPointer(ClientPtr client)
|
|||
|
||||
for (tmp = inputInfo.devices; tmp; tmp = tmp->next) {
|
||||
if (GetMaster(tmp, MASTER_ATTACHED) == dev) {
|
||||
rc = XaceHook(XACE_DEVICE_ACCESS, client, dev, DixWriteAccess);
|
||||
rc = XaceHookDeviceAccess(client, dev, DixWriteAccess);
|
||||
if (rc != Success)
|
||||
return rc;
|
||||
}
|
||||
|
@ -4705,7 +4705,7 @@ CoreEnterLeaveEvent(DeviceIntPtr mouse,
|
|||
ClientPtr client = grab ? rClient(grab) : wClient(pWin);
|
||||
int rc;
|
||||
|
||||
rc = XaceHook(XACE_DEVICE_ACCESS, client, keybd, DixReadAccess);
|
||||
rc = XaceHookDeviceAccess(client, keybd, DixReadAccess);
|
||||
if (rc == Success)
|
||||
memcpy((char *) &ke.map[0], (char *) &keybd->key->down[1], 31);
|
||||
|
||||
|
@ -4816,7 +4816,7 @@ CoreFocusEvent(DeviceIntPtr dev, int type, int mode, int detail, WindowPtr pWin)
|
|||
ClientPtr client = wClient(pWin);
|
||||
int rc;
|
||||
|
||||
rc = XaceHook(XACE_DEVICE_ACCESS, client, dev, DixReadAccess);
|
||||
rc = XaceHookDeviceAccess(client, dev, DixReadAccess);
|
||||
if (rc == Success)
|
||||
memcpy((char *) &ke.map[0], (char *) &dev->key->down[1], 31);
|
||||
|
||||
|
@ -4879,7 +4879,7 @@ SetInputFocus(ClientPtr client,
|
|||
if (!focusWin->realized)
|
||||
return BadMatch;
|
||||
}
|
||||
rc = XaceHook(XACE_DEVICE_ACCESS, client, dev, DixSetFocusAccess);
|
||||
rc = XaceHookDeviceAccess(client, dev, DixSetFocusAccess);
|
||||
if (rc != Success)
|
||||
return Success;
|
||||
|
||||
|
@ -4957,7 +4957,7 @@ ProcGetInputFocus(ClientPtr client)
|
|||
/* REQUEST(xReq); */
|
||||
REQUEST_SIZE_MATCH(xReq);
|
||||
|
||||
rc = XaceHook(XACE_DEVICE_ACCESS, client, kbd, DixGetFocusAccess);
|
||||
rc = XaceHookDeviceAccess(client, kbd, DixGetFocusAccess);
|
||||
if (rc != Success)
|
||||
return rc;
|
||||
|
||||
|
@ -5191,7 +5191,7 @@ GrabDevice(ClientPtr client, DeviceIntPtr dev,
|
|||
|
||||
if (keyboard_mode == GrabModeSync || pointer_mode == GrabModeSync)
|
||||
access_mode |= DixFreezeAccess;
|
||||
rc = XaceHook(XACE_DEVICE_ACCESS, client, dev, access_mode);
|
||||
rc = XaceHookDeviceAccess(client, dev, access_mode);
|
||||
if (rc != Success)
|
||||
return rc;
|
||||
|
||||
|
@ -5330,7 +5330,7 @@ ProcQueryPointer(ClientPtr client)
|
|||
rc = dixLookupWindow(&pWin, stuff->id, client, DixGetAttrAccess);
|
||||
if (rc != Success)
|
||||
return rc;
|
||||
rc = XaceHook(XACE_DEVICE_ACCESS, client, mouse, DixReadAccess);
|
||||
rc = XaceHookDeviceAccess(client, mouse, DixReadAccess);
|
||||
if (rc != Success && rc != BadAccess)
|
||||
return rc;
|
||||
|
||||
|
@ -5730,7 +5730,7 @@ ProcGrabButton(ClientPtr client)
|
|||
if (stuff->pointerMode == GrabModeSync ||
|
||||
stuff->keyboardMode == GrabModeSync)
|
||||
access_mode |= DixFreezeAccess;
|
||||
rc = XaceHook(XACE_DEVICE_ACCESS, client, ptr, access_mode);
|
||||
rc = XaceHookDeviceAccess(client, ptr, access_mode);
|
||||
if (rc != Success)
|
||||
return rc;
|
||||
|
||||
|
@ -6136,7 +6136,7 @@ WriteEventsToClient(ClientPtr pClient, int count, xEvent *events)
|
|||
int
|
||||
SetClientPointer(ClientPtr client, DeviceIntPtr device)
|
||||
{
|
||||
int rc = XaceHook(XACE_DEVICE_ACCESS, client, device, DixUseAccess);
|
||||
int rc = XaceHookDeviceAccess(client, device, DixUseAccess);
|
||||
|
||||
if (rc != Success)
|
||||
return rc;
|
||||
|
|
|
@ -548,7 +548,7 @@ AddPassiveGrabToList(ClientPtr client, GrabPtr pGrab)
|
|||
if (pGrab->keyboardMode == GrabModeSync ||
|
||||
pGrab->pointerMode == GrabModeSync)
|
||||
access_mode |= DixFreezeAccess;
|
||||
rc = XaceHook(XACE_DEVICE_ACCESS, client, pGrab->device, access_mode);
|
||||
rc = XaceHookDeviceAccess(client, pGrab->device, access_mode);
|
||||
if (rc != Success)
|
||||
return rc;
|
||||
|
||||
|
|
|
@ -54,7 +54,7 @@ check_butmap_change(DeviceIntPtr dev, CARD8 *map, int len, CARD32 *errval_out,
|
|||
return BadDevice;
|
||||
}
|
||||
|
||||
ret = XaceHook(XACE_DEVICE_ACCESS, client, dev, DixManageAccess);
|
||||
ret = XaceHookDeviceAccess(client, dev, DixManageAccess);
|
||||
if (ret != Success) {
|
||||
client->errorValue = dev->id;
|
||||
return ret;
|
||||
|
@ -135,7 +135,7 @@ check_modmap_change(ClientPtr client, DeviceIntPtr dev, KeyCode *modmap)
|
|||
int ret, i;
|
||||
XkbDescPtr xkb;
|
||||
|
||||
ret = XaceHook(XACE_DEVICE_ACCESS, client, dev, DixManageAccess);
|
||||
ret = XaceHookDeviceAccess(client, dev, DixManageAccess);
|
||||
if (ret != Success)
|
||||
return ret;
|
||||
|
||||
|
@ -293,7 +293,7 @@ generate_modkeymap(ClientPtr client, DeviceIntPtr dev,
|
|||
KeyCode *modkeymap = NULL;
|
||||
int i, j, ret;
|
||||
|
||||
ret = XaceHook(XACE_DEVICE_ACCESS, client, dev, DixGetAttrAccess);
|
||||
ret = XaceHookDeviceAccess(client, dev, DixGetAttrAccess);
|
||||
if (ret != Success)
|
||||
return ret;
|
||||
|
||||
|
|
36
xkb/xkb.c
36
xkb/xkb.c
|
@ -562,7 +562,7 @@ ProcXkbBell(ClientPtr client)
|
|||
for (other = inputInfo.devices; other; other = other->next) {
|
||||
if ((other != dev) && other->key && !IsMaster(other) &&
|
||||
GetMaster(other, MASTER_KEYBOARD) == dev) {
|
||||
rc = XaceHook(XACE_DEVICE_ACCESS, client, other, DixBellAccess);
|
||||
rc = XaceHookDeviceAccess(client, other, DixBellAccess);
|
||||
if (rc == Success)
|
||||
_XkbBell(client, other, pWin, stuff->bellClass,
|
||||
stuff->bellID, stuff->pitch, stuff->duration,
|
||||
|
@ -2749,8 +2749,7 @@ ProcXkbSetMap(ClientPtr client)
|
|||
for (other = inputInfo.devices; other; other = other->next) {
|
||||
if ((other != dev) && other->key && !IsMaster(other) &&
|
||||
GetMaster(other, MASTER_KEYBOARD) == dev) {
|
||||
rc = XaceHook(XACE_DEVICE_ACCESS, client, other,
|
||||
DixManageAccess);
|
||||
rc = XaceHookDeviceAccess(client, other, DixManageAccess);
|
||||
if (rc == Success) {
|
||||
rc = _XkbSetMapChecks(client, other, stuff, tmp, FALSE);
|
||||
if (rc != Success)
|
||||
|
@ -2783,8 +2782,7 @@ ProcXkbSetMap(ClientPtr client)
|
|||
for (other = inputInfo.devices; other; other = other->next) {
|
||||
if ((other != dev) && other->key && !IsMaster(other) &&
|
||||
GetMaster(other, MASTER_KEYBOARD) == dev) {
|
||||
rc = XaceHook(XACE_DEVICE_ACCESS, client, other,
|
||||
DixManageAccess);
|
||||
rc = XaceHookDeviceAccess(client, other, DixManageAccess);
|
||||
if (rc == Success)
|
||||
_XkbSetMap(client, other, stuff, tmp);
|
||||
/* ignore rc. if the SetMap failed although the check above
|
||||
|
@ -3123,8 +3121,7 @@ ProcXkbSetCompatMap(ClientPtr client)
|
|||
for (other = inputInfo.devices; other; other = other->next) {
|
||||
if ((other != dev) && other->key && !IsMaster(other) &&
|
||||
GetMaster(other, MASTER_KEYBOARD) == dev) {
|
||||
rc = XaceHook(XACE_DEVICE_ACCESS, client, other,
|
||||
DixManageAccess);
|
||||
rc = XaceHookDeviceAccess(client, other, DixManageAccess);
|
||||
if (rc == Success) {
|
||||
/* dry-run */
|
||||
rc = _XkbSetCompatMap(client, other, stuff, data, TRUE);
|
||||
|
@ -3145,8 +3142,7 @@ ProcXkbSetCompatMap(ClientPtr client)
|
|||
for (other = inputInfo.devices; other; other = other->next) {
|
||||
if ((other != dev) && other->key && !IsMaster(other) &&
|
||||
GetMaster(other, MASTER_KEYBOARD) == dev) {
|
||||
rc = XaceHook(XACE_DEVICE_ACCESS, client, other,
|
||||
DixManageAccess);
|
||||
rc = XaceHookDeviceAccess(client, other, DixManageAccess);
|
||||
if (rc == Success) {
|
||||
rc = _XkbSetCompatMap(client, other, stuff, data, FALSE);
|
||||
if (rc != Success)
|
||||
|
@ -3407,8 +3403,7 @@ ProcXkbSetIndicatorMap(ClientPtr client)
|
|||
for (other = inputInfo.devices; other; other = other->next) {
|
||||
if ((other != dev) && other->key && !IsMaster(other) &&
|
||||
GetMaster(other, MASTER_KEYBOARD) == dev) {
|
||||
rc = XaceHook(XACE_DEVICE_ACCESS, client, other,
|
||||
DixSetAttrAccess);
|
||||
rc = XaceHookDeviceAccess(client, other, DixSetAttrAccess);
|
||||
if (rc == Success)
|
||||
_XkbSetIndicatorMap(client, other, stuff->which, from);
|
||||
}
|
||||
|
@ -3676,7 +3671,7 @@ ProcXkbSetNamedIndicator(ClientPtr client)
|
|||
if ((other != dev) && !IsMaster(other) &&
|
||||
GetMaster(other, MASTER_KEYBOARD) == dev && (other->kbdfeed ||
|
||||
other->leds) &&
|
||||
(XaceHook(XACE_DEVICE_ACCESS, client, other, DixSetAttrAccess)
|
||||
(XaceHookDeviceAccess(client, other, DixSetAttrAccess)
|
||||
== Success)) {
|
||||
rc = _XkbCreateIndicatorMap(other, stuff->indicator,
|
||||
stuff->ledClass, stuff->ledID, &map,
|
||||
|
@ -3700,7 +3695,7 @@ ProcXkbSetNamedIndicator(ClientPtr client)
|
|||
if ((other != dev) && !IsMaster(other) &&
|
||||
GetMaster(other, MASTER_KEYBOARD) == dev && (other->kbdfeed ||
|
||||
other->leds) &&
|
||||
(XaceHook(XACE_DEVICE_ACCESS, client, other, DixSetAttrAccess)
|
||||
(XaceHookDeviceAccess(client, other, DixSetAttrAccess)
|
||||
== Success)) {
|
||||
_XkbSetNamedIndicator(client, other, stuff);
|
||||
}
|
||||
|
@ -4539,8 +4534,7 @@ ProcXkbSetNames(ClientPtr client)
|
|||
if ((other != dev) && other->key && !IsMaster(other) &&
|
||||
GetMaster(other, MASTER_KEYBOARD) == dev) {
|
||||
|
||||
rc = XaceHook(XACE_DEVICE_ACCESS, client, other,
|
||||
DixManageAccess);
|
||||
rc = XaceHookDeviceAccess(client, other, DixManageAccess);
|
||||
if (rc == Success) {
|
||||
rc = _XkbSetNamesCheck(client, other, stuff, tmp);
|
||||
if (rc != Success)
|
||||
|
@ -4563,8 +4557,7 @@ ProcXkbSetNames(ClientPtr client)
|
|||
if ((other != dev) && other->key && !IsMaster(other) &&
|
||||
GetMaster(other, MASTER_KEYBOARD) == dev) {
|
||||
|
||||
rc = XaceHook(XACE_DEVICE_ACCESS, client, other,
|
||||
DixManageAccess);
|
||||
rc = XaceHookDeviceAccess(client, other, DixManageAccess);
|
||||
if (rc == Success)
|
||||
_XkbSetNames(client, other, stuff);
|
||||
}
|
||||
|
@ -5692,8 +5685,7 @@ ProcXkbSetGeometry(ClientPtr client)
|
|||
for (other = inputInfo.devices; other; other = other->next) {
|
||||
if ((other != dev) && other->key && !IsMaster(other) &&
|
||||
GetMaster(other, MASTER_KEYBOARD) == dev) {
|
||||
rc = XaceHook(XACE_DEVICE_ACCESS, client, other,
|
||||
DixManageAccess);
|
||||
rc = XaceHookDeviceAccess(client, other, DixManageAccess);
|
||||
if (rc == Success)
|
||||
_XkbSetGeometry(client, other, stuff);
|
||||
}
|
||||
|
@ -6918,8 +6910,7 @@ ProcXkbSetDeviceInfo(ClientPtr client)
|
|||
GetMaster(other, MASTER_KEYBOARD) == dev) &&
|
||||
((stuff->deviceSpec == XkbUseCoreKbd && other->key) ||
|
||||
(stuff->deviceSpec == XkbUseCorePtr && other->button))) {
|
||||
rc = XaceHook(XACE_DEVICE_ACCESS, client, other,
|
||||
DixManageAccess);
|
||||
rc = XaceHookDeviceAccess(client, other, DixManageAccess);
|
||||
if (rc == Success) {
|
||||
rc = _XkbSetDeviceInfoCheck(client, other, stuff);
|
||||
if (rc != Success)
|
||||
|
@ -6943,8 +6934,7 @@ ProcXkbSetDeviceInfo(ClientPtr client)
|
|||
GetMaster(other, MASTER_KEYBOARD) == dev) &&
|
||||
((stuff->deviceSpec == XkbUseCoreKbd && other->key) ||
|
||||
(stuff->deviceSpec == XkbUseCorePtr && other->button))) {
|
||||
rc = XaceHook(XACE_DEVICE_ACCESS, client, other,
|
||||
DixManageAccess);
|
||||
rc = XaceHookDeviceAccess(client, other, DixManageAccess);
|
||||
if (rc == Success) {
|
||||
rc = _XkbSetDeviceInfo(client, other, stuff);
|
||||
if (rc != Success)
|
||||
|
|
Loading…
Reference in New Issue