xkb: simplify core device loop in GetKeyboardByName
This commit is contained in:
parent
4b6e2f12f7
commit
ab56f0c5b5
54
xkb/xkb.c
54
xkb/xkb.c
|
@ -570,7 +570,7 @@ ProcXkbLatchLockState(ClientPtr client)
|
||||||
status = XkbLatchModifiers(tmpd, stuff->affectModLatches,
|
status = XkbLatchModifiers(tmpd, stuff->affectModLatches,
|
||||||
stuff->modLatches);
|
stuff->modLatches);
|
||||||
if (status == Success && stuff->latchGroup)
|
if (status == Success && stuff->latchGroup)
|
||||||
status = XkbLatchGroup(tmp, stuff->groupLatch);
|
status = XkbLatchGroup(tmpd, stuff->groupLatch);
|
||||||
|
|
||||||
if (status != Success)
|
if (status != Success)
|
||||||
return status;
|
return status;
|
||||||
|
@ -5111,6 +5111,8 @@ ProcXkbGetKbdByName(ClientPtr client)
|
||||||
unsigned fwant,fneed,reported;
|
unsigned fwant,fneed,reported;
|
||||||
int status;
|
int status;
|
||||||
Bool geom_changed;
|
Bool geom_changed;
|
||||||
|
XkbSrvLedInfoPtr old_sli;
|
||||||
|
XkbSrvLedInfoPtr sli;
|
||||||
|
|
||||||
REQUEST(xkbGetKbdByNameReq);
|
REQUEST(xkbGetKbdByNameReq);
|
||||||
REQUEST_AT_LEAST_SIZE(xkbGetKbdByNameReq);
|
REQUEST_AT_LEAST_SIZE(xkbGetKbdByNameReq);
|
||||||
|
@ -5379,45 +5381,27 @@ ProcXkbGetKbdByName(ClientPtr client)
|
||||||
}
|
}
|
||||||
xkb->ctrls->num_groups= nTG;
|
xkb->ctrls->num_groups= nTG;
|
||||||
|
|
||||||
memcpy(dev->key->modifierMap,xkb->map->modmap,xkb->max_key_code+1);
|
for (tmpd = inputInfo.devices; tmpd; tmpd = tmpd->next) {
|
||||||
XkbUpdateCoreDescription(dev,True);
|
if ((dev == inputInfo.keyboard && tmpd->key && tmpd->coreEvents) ||
|
||||||
|
tmpd == inputInfo.keyboard) {
|
||||||
|
|
||||||
if (dev->kbdfeed && dev->kbdfeed->xkb_sli) {
|
memcpy(tmpd->key->modifierMap, xkb->map->modmap,
|
||||||
XkbSrvLedInfoPtr old_sli;
|
xkb->max_key_code + 1);
|
||||||
XkbSrvLedInfoPtr sli;
|
if (dev != inputInfo.keyboard)
|
||||||
old_sli = dev->kbdfeed->xkb_sli;
|
|
||||||
dev->kbdfeed->xkb_sli = NULL;
|
|
||||||
sli = XkbAllocSrvLedInfo(dev,dev->kbdfeed,NULL,0);
|
|
||||||
if (sli) {
|
|
||||||
sli->explicitState = old_sli->explicitState;
|
|
||||||
sli->effectiveState = old_sli->effectiveState;
|
|
||||||
}
|
|
||||||
dev->kbdfeed->xkb_sli = sli;
|
|
||||||
XkbFreeSrvLedInfo(old_sli);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (dev == inputInfo.keyboard) {
|
|
||||||
for (tmpd = inputInfo.devices; tmpd; tmpd = tmpd->next) {
|
|
||||||
if (tmpd->key && tmpd->coreEvents) {
|
|
||||||
memcpy(tmpd->key->modifierMap, xkb->map->modmap,
|
|
||||||
xkb->max_key_code + 1);
|
|
||||||
XkbCopyKeymap(dev->key->xkbInfo->desc,
|
XkbCopyKeymap(dev->key->xkbInfo->desc,
|
||||||
tmpd->key->xkbInfo->desc, True);
|
tmpd->key->xkbInfo->desc, True);
|
||||||
XkbUpdateCoreDescription(tmpd, True);
|
XkbUpdateCoreDescription(tmpd, True);
|
||||||
|
|
||||||
if (tmpd->kbdfeed && tmpd->kbdfeed->xkb_sli) {
|
if (tmpd->kbdfeed && tmpd->kbdfeed->xkb_sli) {
|
||||||
XkbSrvLedInfoPtr old_sli;
|
old_sli = tmpd->kbdfeed->xkb_sli;
|
||||||
XkbSrvLedInfoPtr sli;
|
tmpd->kbdfeed->xkb_sli = NULL;
|
||||||
old_sli = tmpd->kbdfeed->xkb_sli;
|
sli = XkbAllocSrvLedInfo(tmpd, tmpd->kbdfeed, NULL, 0);
|
||||||
tmpd->kbdfeed->xkb_sli = NULL;
|
if (sli) {
|
||||||
sli = XkbAllocSrvLedInfo(tmpd, tmpd->kbdfeed, NULL, 0);
|
sli->explicitState = old_sli->explicitState;
|
||||||
if (sli) {
|
sli->effectiveState = old_sli->effectiveState;
|
||||||
sli->explicitState = old_sli->explicitState;
|
|
||||||
sli->effectiveState = old_sli->effectiveState;
|
|
||||||
}
|
|
||||||
tmpd->kbdfeed->xkb_sli = sli;
|
|
||||||
XkbFreeSrvLedInfo(old_sli);
|
|
||||||
}
|
}
|
||||||
|
tmpd->kbdfeed->xkb_sli = sli;
|
||||||
|
XkbFreeSrvLedInfo(old_sli);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue