No functional changes, but this way we're guaranteed to be able to re-use the original event.
Signed-off-by: Peter Hutterer <[email protected]> --- include/xkbsrv.h | 2 +- xkb/xkbEvents.c | 61 ++++++++++++++++++++++++++++---------------------------- 2 files changed, 32 insertions(+), 31 deletions(-) diff --git a/include/xkbsrv.h b/include/xkbsrv.h index 73a7b19..0299327 100644 --- a/include/xkbsrv.h +++ b/include/xkbsrv.h @@ -574,7 +574,7 @@ extern _X_EXPORT unsigned int XkbStateChangedFlags(XkbStatePtr /* old */ , ); extern _X_EXPORT void XkbSendStateNotify(DeviceIntPtr /* kbd */ , - xkbStateNotify * /* pSN */ + const xkbStateNotify * /* pSN */ ); extern _X_EXPORT void XkbSendMapNotify(DeviceIntPtr /* kbd */ , diff --git a/xkb/xkbEvents.c b/xkb/xkbEvents.c index 210d8eb..d905770 100644 --- a/xkb/xkbEvents.c +++ b/xkb/xkbEvents.c @@ -200,8 +200,9 @@ XkbSendNewKeyboardNotify(DeviceIntPtr kbd, xkbNewKeyboardNotify * pNKN) /***====================================================================***/ void -XkbSendStateNotify(DeviceIntPtr kbd, xkbStateNotify * pSN) +XkbSendStateNotify(DeviceIntPtr kbd, const xkbStateNotify * pSN) { + xkbStateNotify sn = *pSN; XkbSrvInfoPtr xkbi; XkbStatePtr state; XkbInterestPtr interest; @@ -214,43 +215,43 @@ XkbSendStateNotify(DeviceIntPtr kbd, xkbStateNotify * pSN) xkbi = kbd->key->xkbInfo; state = &xkbi->state; - pSN->type = XkbEventCode + XkbEventBase; - pSN->xkbType = XkbStateNotify; - pSN->deviceID = kbd->id; - pSN->time = time = GetTimeInMillis(); - pSN->mods = state->mods; - pSN->baseMods = state->base_mods; - pSN->latchedMods = state->latched_mods; - pSN->lockedMods = state->locked_mods; - pSN->group = state->group; - pSN->baseGroup = state->base_group; - pSN->latchedGroup = state->latched_group; - pSN->lockedGroup = state->locked_group; - pSN->compatState = state->compat_state; - pSN->grabMods = state->grab_mods; - pSN->compatGrabMods = state->compat_grab_mods; - pSN->lookupMods = state->lookup_mods; - pSN->compatLookupMods = state->compat_lookup_mods; - pSN->ptrBtnState = state->ptr_buttons; - changed = pSN->changed; - bState = pSN->ptrBtnState; + sn.type = XkbEventCode + XkbEventBase; + sn.xkbType = XkbStateNotify; + sn.deviceID = kbd->id; + sn.time = time = GetTimeInMillis(); + sn.mods = state->mods; + sn.baseMods = state->base_mods; + sn.latchedMods = state->latched_mods; + sn.lockedMods = state->locked_mods; + sn.group = state->group; + sn.baseGroup = state->base_group; + sn.latchedGroup = state->latched_group; + sn.lockedGroup = state->locked_group; + sn.compatState = state->compat_state; + sn.grabMods = state->grab_mods; + sn.compatGrabMods = state->compat_grab_mods; + sn.lookupMods = state->lookup_mods; + sn.compatLookupMods = state->compat_lookup_mods; + sn.ptrBtnState = state->ptr_buttons; + changed = sn.changed; + bState = sn.ptrBtnState; while (interest) { if ((!interest->client->clientGone) && (interest->client->requestVector != InitialVector) && (interest->client->xkbClientFlags & _XkbClientInitialized) && (interest->stateNotifyMask & changed)) { - pSN->sequenceNumber = interest->client->sequence; - pSN->time = time; - pSN->changed = changed; - pSN->ptrBtnState = bState; + sn.sequenceNumber = interest->client->sequence; + sn.time = time; + sn.changed = changed; + sn.ptrBtnState = bState; if (interest->client->swapped) { - swaps(&pSN->sequenceNumber); - swapl(&pSN->time); - swaps(&pSN->changed); - swaps(&pSN->ptrBtnState); + swaps(&sn.sequenceNumber); + swapl(&sn.time); + swaps(&sn.changed); + swaps(&sn.ptrBtnState); } - WriteToClient(interest->client, sizeof(xEvent), pSN); + WriteToClient(interest->client, sizeof(xEvent), &sn); } interest = interest->next; } -- 1.8.4.2 _______________________________________________ [email protected]: X.Org development Archives: http://lists.x.org/archives/xorg-devel Info: http://lists.x.org/mailman/listinfo/xorg-devel
