xkb: factor out state update into a function

No functional changes

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Reviewed-by: Daniel Stone <daniel@fooishbar.org>
This commit is contained in:
Peter Hutterer 2014-02-26 16:16:10 +10:00
parent dda2468e57
commit 656841798c

View File

@ -1143,13 +1143,43 @@ _XkbEnsureStateChange(XkbSrvInfoPtr xkbi)
return genStateNotify;
}
static void
_XkbApplyState(DeviceIntPtr dev, Bool genStateNotify, int evtype, int key)
{
XkbSrvInfoPtr xkbi = dev->key->xkbInfo;
int changed;
XkbComputeDerivedState(xkbi);
changed = XkbStateChangedFlags(&xkbi->prev_state, &xkbi->state);
if (genStateNotify) {
if (changed) {
xkbStateNotify sn;
sn.keycode = key;
sn.eventType = evtype;
sn.requestMajor = sn.requestMinor = 0;
sn.changed = changed;
XkbSendStateNotify(dev, &sn);
}
xkbi->flags &= ~_XkbStateNotifyInProgress;
}
changed = XkbIndicatorsToUpdate(dev, changed, FALSE);
if (changed) {
XkbEventCauseRec cause;
XkbSetCauseKey(&cause, key, evtype);
XkbUpdateIndicators(dev, changed, FALSE, NULL, &cause);
}
}
void
XkbHandleActions(DeviceIntPtr dev, DeviceIntPtr kbd, DeviceEvent *event)
{
int key, bit, i;
XkbSrvInfoPtr xkbi;
KeyClassPtr keyc;
int changed, sendEvent;
int sendEvent;
Bool genStateNotify;
XkbAction act;
XkbFilterPtr filter;
@ -1296,28 +1326,7 @@ XkbHandleActions(DeviceIntPtr dev, DeviceIntPtr kbd, DeviceEvent *event)
FixKeyState(event, dev);
}
XkbComputeDerivedState(xkbi);
changed = XkbStateChangedFlags(&xkbi->prev_state, &xkbi->state);
if (genStateNotify) {
if (changed) {
xkbStateNotify sn;
sn.keycode = key;
sn.eventType = event->type;
sn.requestMajor = sn.requestMinor = 0;
sn.changed = changed;
XkbSendStateNotify(dev, &sn);
}
xkbi->flags &= ~_XkbStateNotifyInProgress;
}
changed = XkbIndicatorsToUpdate(dev, changed, FALSE);
if (changed) {
XkbEventCauseRec cause;
XkbSetCauseKey(&cause, key, event->type);
XkbUpdateIndicators(dev, changed, FALSE, NULL, &cause);
}
return;
_XkbApplyState(dev, genStateNotify, event->type, key);
}
int