diff options
author | marha <marha@users.sourceforge.net> | 2012-10-08 08:09:46 +0200 |
---|---|---|
committer | marha <marha@users.sourceforge.net> | 2012-10-08 08:09:46 +0200 |
commit | de8397bc3d010bba24ec0c4d2e6249a769a86fc7 (patch) | |
tree | a65adde1a897bd07e6009b14a23ec87f14793cf9 /xorg-server/dix | |
parent | 0130346adbce7e6b2422429887fc46c76806d845 (diff) | |
download | vcxsrv-de8397bc3d010bba24ec0c4d2e6249a769a86fc7.tar.gz vcxsrv-de8397bc3d010bba24ec0c4d2e6249a769a86fc7.tar.bz2 vcxsrv-de8397bc3d010bba24ec0c4d2e6249a769a86fc7.zip |
pixman libxcb mesa xserver xkeyboard-config git update 8 oct 2012
xserver: 09f1e5b15b769e1122f0a8d7cae0820038992312
libxcb: 4ffe54f69049e6792a35a287fd9ff83abbd4fd8d
mesa: 86de501f14f11f1e993c8703c0d69bdf1f6c7835
xkeyboard-config: 0a21bb5a28018902a6252fccb620d7dff7e67175
pixman: 3d81d89c292058522cce91338028d9b4c4a23c24
Diffstat (limited to 'xorg-server/dix')
-rw-r--r-- | xorg-server/dix/dispatch.c | 19 | ||||
-rw-r--r-- | xorg-server/dix/events.c | 9 |
2 files changed, 18 insertions, 10 deletions
diff --git a/xorg-server/dix/dispatch.c b/xorg-server/dix/dispatch.c index 0ce10c2f7..2df1a6ea5 100644 --- a/xorg-server/dix/dispatch.c +++ b/xorg-server/dix/dispatch.c @@ -3499,14 +3499,16 @@ ProcInitialConnection(ClientPtr client) REQUEST(xReq); xConnClientPrefix *prefix; int whichbyte = 1; + char order; - prefix = (xConnClientPrefix *) ((char *) stuff + sz_xReq); - if ((prefix->byteOrder != 'l') && (prefix->byteOrder != 'B')) - return client->noClientException = -1; - if (((*(char *) &whichbyte) && (prefix->byteOrder == 'B')) || - (!(*(char *) &whichbyte) && (prefix->byteOrder == 'l'))) { - client->swapped = TRUE; - SwapConnClientPrefix(prefix); + prefix = (xConnClientPrefix *) ((char *)stuff + sz_xReq); + order = prefix->byteOrder; + if (order != 'l' && order != 'B' && order != 'r' && order != 'R') + return client->noClientException = -1; + if (((*(char *) &whichbyte) && (order == 'B' || order == 'R')) || + (!(*(char *) &whichbyte) && (order == 'l' || order == 'r'))) { + client->swapped = TRUE; + SwapConnClientPrefix(prefix); } stuff->reqType = 2; stuff->length += bytes_to_int32(prefix->nbytesAuthProto) + @@ -3514,6 +3516,9 @@ ProcInitialConnection(ClientPtr client) if (client->swapped) { swaps(&stuff->length); } + if (order == 'r' || order == 'R') { + client->local = FALSE; + } ResetCurrentRequest(client); return Success; } diff --git a/xorg-server/dix/events.c b/xorg-server/dix/events.c index 3b40446bc..c0e330b85 100644 --- a/xorg-server/dix/events.c +++ b/xorg-server/dix/events.c @@ -1555,11 +1555,13 @@ ActivateKeyboardGrab(DeviceIntPtr keybd, GrabPtr grab, TimeStamp time, WindowPtr oldWin; /* slave devices need to float for the duration of the grab. */ - if (grab->grabtype == XI2 && + if (grab->grabtype == XI2 && keybd->enabled && !(passive & ImplicitGrabMask) && !IsMaster(keybd)) DetachFromMaster(keybd); - if (grabinfo->grab) + if (!keybd->enabled) + oldWin = NULL; + else if (grabinfo->grab) oldWin = grabinfo->grab->window; else if (keybd->focus) oldWin = keybd->focus->win; @@ -1569,7 +1571,8 @@ ActivateKeyboardGrab(DeviceIntPtr keybd, GrabPtr grab, TimeStamp time, oldWin = keybd->focus->win; if (keybd->valuator) keybd->valuator->motionHintWindow = NullWindow; - DoFocusEvents(keybd, oldWin, grab->window, NotifyGrab); + if (oldWin) + DoFocusEvents(keybd, oldWin, grab->window, NotifyGrab); if (syncEvents.playingEvents) grabinfo->grabTime = syncEvents.time; else |