diff options
author | marha <marha@users.sourceforge.net> | 2012-03-26 14:23:28 +0200 |
---|---|---|
committer | marha <marha@users.sourceforge.net> | 2012-03-26 14:23:28 +0200 |
commit | 76bcc36ed305418a3ddc5752d287ede894243e1b (patch) | |
tree | bacb320c825768471ce56f058f17ce863d592376 /xorg-server/xkb/xkbSwap.c | |
parent | 7d894e32566b710952c44cbc71939ad1d9e2fa8d (diff) | |
parent | 0f834b91a4768673833ab4917e87d86c237bb1a6 (diff) | |
download | vcxsrv-76bcc36ed305418a3ddc5752d287ede894243e1b.tar.gz vcxsrv-76bcc36ed305418a3ddc5752d287ede894243e1b.tar.bz2 vcxsrv-76bcc36ed305418a3ddc5752d287ede894243e1b.zip |
Merge remote-tracking branch 'origin/released'
Conflicts:
pixman/pixman/pixman-mmx.c
xorg-server/Xext/shm.c
xorg-server/Xext/syncsrv.h
xorg-server/Xext/xvmain.c
xorg-server/Xi/exevents.c
xorg-server/Xi/opendev.c
xorg-server/composite/compalloc.c
xorg-server/composite/compoverlay.c
xorg-server/dix/colormap.c
xorg-server/dix/devices.c
xorg-server/dix/dispatch.c
xorg-server/dix/dixfonts.c
xorg-server/dix/eventconvert.c
xorg-server/dix/events.c
xorg-server/dix/gc.c
xorg-server/dix/getevents.c
xorg-server/dix/main.c
xorg-server/dix/privates.c
xorg-server/dix/registry.c
xorg-server/dix/resource.c
xorg-server/exa/exa_accel.c
xorg-server/exa/exa_migration_classic.c
xorg-server/exa/exa_unaccel.c
xorg-server/fb/fb.h
xorg-server/fb/fbcopy.c
xorg-server/fb/fbpixmap.c
xorg-server/glx/dispatch.h
xorg-server/glx/glapi.h
xorg-server/glx/glapi_gentable.c
xorg-server/glx/glapitable.h
xorg-server/glx/glprocs.h
xorg-server/glx/glxcmds.c
xorg-server/glx/glxcmdsswap.c
xorg-server/glx/glxdricommon.c
xorg-server/glx/glxdriswrast.c
xorg-server/glx/glxext.c
xorg-server/glx/indirect_dispatch.c
xorg-server/glx/indirect_dispatch.h
xorg-server/glx/indirect_dispatch_swap.c
xorg-server/glx/indirect_size.h
xorg-server/glx/indirect_size_get.h
xorg-server/glx/indirect_table.c
xorg-server/glx/indirect_util.c
xorg-server/glx/rensize.c
xorg-server/glx/single2swap.c
xorg-server/glx/singlepix.c
xorg-server/glx/singlepixswap.c
xorg-server/glx/singlesize.c
xorg-server/hw/dmx/dmxinit.c
xorg-server/hw/kdrive/ephyr/ephyr.c
xorg-server/hw/kdrive/ephyr/hostx.c
xorg-server/hw/kdrive/ephyr/hostx.h
xorg-server/hw/kdrive/src/kinput.c
xorg-server/hw/xfree86/common/compiler.h
xorg-server/hw/xwin/InitInput.c
xorg-server/hw/xwin/InitOutput.c
xorg-server/hw/xwin/ddraw.h
xorg-server/hw/xwin/glx/glwrap.c
xorg-server/hw/xwin/glx/indirect.c
xorg-server/hw/xwin/glx/wgl_ext_api.h
xorg-server/hw/xwin/glx/winpriv.c
xorg-server/hw/xwin/win.h
xorg-server/hw/xwin/winallpriv.c
xorg-server/hw/xwin/winauth.c
xorg-server/hw/xwin/winclipboard.h
xorg-server/hw/xwin/winclipboardinit.c
xorg-server/hw/xwin/winclipboardthread.c
xorg-server/hw/xwin/winclipboardunicode.c
xorg-server/hw/xwin/winclipboardwndproc.c
xorg-server/hw/xwin/winclipboardwrappers.c
xorg-server/hw/xwin/winclipboardxevents.c
xorg-server/hw/xwin/wincmap.c
xorg-server/hw/xwin/winconfig.c
xorg-server/hw/xwin/wincreatewnd.c
xorg-server/hw/xwin/wincursor.c
xorg-server/hw/xwin/windialogs.c
xorg-server/hw/xwin/winengine.c
xorg-server/hw/xwin/winerror.c
xorg-server/hw/xwin/wingc.c
xorg-server/hw/xwin/wingetsp.c
xorg-server/hw/xwin/winkeybd.c
xorg-server/hw/xwin/winkeybd.h
xorg-server/hw/xwin/winlayouts.h
xorg-server/hw/xwin/winmisc.c
xorg-server/hw/xwin/winmonitors.c
xorg-server/hw/xwin/winmouse.c
xorg-server/hw/xwin/winmsg.c
xorg-server/hw/xwin/winmsg.h
xorg-server/hw/xwin/winmultiwindowclass.c
xorg-server/hw/xwin/winmultiwindowicons.c
xorg-server/hw/xwin/winmultiwindowshape.c
xorg-server/hw/xwin/winmultiwindowwindow.c
xorg-server/hw/xwin/winmultiwindowwm.c
xorg-server/hw/xwin/winmultiwindowwndproc.c
xorg-server/hw/xwin/winnativegdi.c
xorg-server/hw/xwin/winpfbdd.c
xorg-server/hw/xwin/winpixmap.c
xorg-server/hw/xwin/winpolyline.c
xorg-server/hw/xwin/winprefs.c
xorg-server/hw/xwin/winprocarg.c
xorg-server/hw/xwin/winregistry.c
xorg-server/hw/xwin/winscrinit.c
xorg-server/hw/xwin/winsetsp.c
xorg-server/hw/xwin/winshaddd.c
xorg-server/hw/xwin/winshadddnl.c
xorg-server/hw/xwin/winshadgdi.c
xorg-server/hw/xwin/wintrayicon.c
xorg-server/hw/xwin/winwin32rootless.c
xorg-server/hw/xwin/winwin32rootlesswindow.c
xorg-server/hw/xwin/winwin32rootlesswndproc.c
xorg-server/hw/xwin/winwindow.c
xorg-server/hw/xwin/winwindow.h
xorg-server/hw/xwin/winwindowswm.c
xorg-server/hw/xwin/winwndproc.c
xorg-server/include/callback.h
xorg-server/include/dixstruct.h
xorg-server/include/misc.h
xorg-server/include/os.h
xorg-server/include/scrnintstr.h
xorg-server/mi/micmap.c
xorg-server/mi/miinitext.c
xorg-server/mi/mioverlay.c
xorg-server/mi/misprite.c
xorg-server/mi/mivaltree.c
xorg-server/mi/miwindow.c
xorg-server/miext/damage/damage.c
xorg-server/miext/rootless/rootlessGC.c
xorg-server/miext/rootless/rootlessWindow.c
xorg-server/os/WaitFor.c
xorg-server/os/access.c
xorg-server/os/connection.c
xorg-server/os/io.c
xorg-server/os/log.c
xorg-server/os/osinit.c
xorg-server/os/utils.c
xorg-server/os/xdmcp.c
xorg-server/os/xprintf.c
xorg-server/os/xstrans.c
xorg-server/render/mipict.c
xorg-server/xkb/xkbActions.c
xorg-server/xkb/xkbInit.c
xorg-server/xkeyboard-config/compat/default.in
Diffstat (limited to 'xorg-server/xkb/xkbSwap.c')
-rw-r--r-- | xorg-server/xkb/xkbSwap.c | 188 |
1 files changed, 93 insertions, 95 deletions
diff --git a/xorg-server/xkb/xkbSwap.c b/xorg-server/xkb/xkbSwap.c index fcae918a9..076da340b 100644 --- a/xorg-server/xkb/xkbSwap.c +++ b/xorg-server/xkb/xkbSwap.c @@ -38,9 +38,9 @@ THE USE OR PERFORMANCE OF THIS SOFTWARE. #include "extnsionst.h" #include "xkb.h" - /* - * REQUEST SWAPPING - */ + /* + * REQUEST SWAPPING + */ static int SProcXkbUseExtension(ClientPtr client) { @@ -66,66 +66,67 @@ SProcXkbSelectEvents(ClientPtr client) swaps(&stuff->selectAll); swaps(&stuff->affectMap); swaps(&stuff->map); - if ((stuff->affectWhich&(~XkbMapNotifyMask))!=0) { - union { - BOOL *b; - CARD8 *c8; - CARD16 *c16; - CARD32 *c32; - } from; - register unsigned bit,ndx,maskLeft,dataLeft,size; - - from.c8= (CARD8 *)&stuff[1]; - dataLeft= (stuff->length*4)-SIZEOF(xkbSelectEventsReq); - maskLeft= (stuff->affectWhich&(~XkbMapNotifyMask)); - for (ndx=0,bit=1; (maskLeft!=0); ndx++, bit<<=1) { - if (((bit&maskLeft)==0)||(ndx==XkbMapNotify)) - continue; - maskLeft&= ~bit; - if ((stuff->selectAll&bit)||(stuff->clear&bit)) - continue; - switch (ndx) { - case XkbNewKeyboardNotify: - case XkbStateNotify: - case XkbNamesNotify: - case XkbAccessXNotify: - case XkbExtensionDeviceNotify: - size= 2; - break; - case XkbControlsNotify: - case XkbIndicatorStateNotify: - case XkbIndicatorMapNotify: - size= 4; - break; - case XkbBellNotify: - case XkbActionMessage: - case XkbCompatMapNotify: - size= 1; - break; - default: - client->errorValue = _XkbErrCode2(0x1,bit); - return BadValue; - } - if (dataLeft<(size*2)) - return BadLength; - if (size==2) { - swaps(&from.c16[0]); - swaps(&from.c16[1]); - } - else if (size==4) { - swapl(&from.c32[0]); - swapl(&from.c32[1]); - } - else { - size= 2; - } - from.c8+= (size*2); - dataLeft-= (size*2); - } - if (dataLeft>2) { - ErrorF("[xkb] Extra data (%d bytes) after SelectEvents\n",dataLeft); - return BadLength; - } + if ((stuff->affectWhich & (~XkbMapNotifyMask)) != 0) { + union { + BOOL *b; + CARD8 *c8; + CARD16 *c16; + CARD32 *c32; + } from; + register unsigned bit, ndx, maskLeft, dataLeft, size; + + from.c8 = (CARD8 *) &stuff[1]; + dataLeft = (stuff->length * 4) - SIZEOF(xkbSelectEventsReq); + maskLeft = (stuff->affectWhich & (~XkbMapNotifyMask)); + for (ndx = 0, bit = 1; (maskLeft != 0); ndx++, bit <<= 1) { + if (((bit & maskLeft) == 0) || (ndx == XkbMapNotify)) + continue; + maskLeft &= ~bit; + if ((stuff->selectAll & bit) || (stuff->clear & bit)) + continue; + switch (ndx) { + case XkbNewKeyboardNotify: + case XkbStateNotify: + case XkbNamesNotify: + case XkbAccessXNotify: + case XkbExtensionDeviceNotify: + size = 2; + break; + case XkbControlsNotify: + case XkbIndicatorStateNotify: + case XkbIndicatorMapNotify: + size = 4; + break; + case XkbBellNotify: + case XkbActionMessage: + case XkbCompatMapNotify: + size = 1; + break; + default: + client->errorValue = _XkbErrCode2(0x1, bit); + return BadValue; + } + if (dataLeft < (size * 2)) + return BadLength; + if (size == 2) { + swaps(&from.c16[0]); + swaps(&from.c16[1]); + } + else if (size == 4) { + swapl(&from.c32[0]); + swapl(&from.c32[1]); + } + else { + size = 2; + } + from.c8 += (size * 2); + dataLeft -= (size * 2); + } + if (dataLeft > 2) { + ErrorF("[xkb] Extra data (%d bytes) after SelectEvents\n", + dataLeft); + return BadLength; + } } return ProcXkbSelectEvents(client); } @@ -244,7 +245,6 @@ SProcXkbSetMap(ClientPtr client) return ProcXkbSetMap(client); } - static int SProcXkbGetCompatMap(ClientPtr client) { @@ -336,7 +336,6 @@ SProcXkbSetNamedIndicator(ClientPtr client) return ProcXkbSetNamedIndicator(client); } - static int SProcXkbGetNames(ClientPtr client) { @@ -478,64 +477,63 @@ SProcXkbSetDebuggingFlags(ClientPtr client) } int -SProcXkbDispatch (ClientPtr client) +SProcXkbDispatch(ClientPtr client) { REQUEST(xReq); - switch (stuff->data) - { + switch (stuff->data) { case X_kbUseExtension: - return SProcXkbUseExtension(client); + return SProcXkbUseExtension(client); case X_kbSelectEvents: - return SProcXkbSelectEvents(client); + return SProcXkbSelectEvents(client); case X_kbBell: - return SProcXkbBell(client); + return SProcXkbBell(client); case X_kbGetState: - return SProcXkbGetState(client); + return SProcXkbGetState(client); case X_kbLatchLockState: - return SProcXkbLatchLockState(client); + return SProcXkbLatchLockState(client); case X_kbGetControls: - return SProcXkbGetControls(client); + return SProcXkbGetControls(client); case X_kbSetControls: - return SProcXkbSetControls(client); + return SProcXkbSetControls(client); case X_kbGetMap: - return SProcXkbGetMap(client); + return SProcXkbGetMap(client); case X_kbSetMap: - return SProcXkbSetMap(client); + return SProcXkbSetMap(client); case X_kbGetCompatMap: - return SProcXkbGetCompatMap(client); + return SProcXkbGetCompatMap(client); case X_kbSetCompatMap: - return SProcXkbSetCompatMap(client); + return SProcXkbSetCompatMap(client); case X_kbGetIndicatorState: - return SProcXkbGetIndicatorState(client); + return SProcXkbGetIndicatorState(client); case X_kbGetIndicatorMap: - return SProcXkbGetIndicatorMap(client); + return SProcXkbGetIndicatorMap(client); case X_kbSetIndicatorMap: - return SProcXkbSetIndicatorMap(client); + return SProcXkbSetIndicatorMap(client); case X_kbGetNamedIndicator: - return SProcXkbGetNamedIndicator(client); + return SProcXkbGetNamedIndicator(client); case X_kbSetNamedIndicator: - return SProcXkbSetNamedIndicator(client); + return SProcXkbSetNamedIndicator(client); case X_kbGetNames: - return SProcXkbGetNames(client); + return SProcXkbGetNames(client); case X_kbSetNames: - return SProcXkbSetNames(client); + return SProcXkbSetNames(client); case X_kbGetGeometry: - return SProcXkbGetGeometry(client); + return SProcXkbGetGeometry(client); case X_kbSetGeometry: - return SProcXkbSetGeometry(client); + return SProcXkbSetGeometry(client); case X_kbPerClientFlags: - return SProcXkbPerClientFlags(client); + return SProcXkbPerClientFlags(client); case X_kbListComponents: - return SProcXkbListComponents(client); + return SProcXkbListComponents(client); case X_kbGetKbdByName: - return SProcXkbGetKbdByName(client); + return SProcXkbGetKbdByName(client); case X_kbGetDeviceInfo: - return SProcXkbGetDeviceInfo(client); + return SProcXkbGetDeviceInfo(client); case X_kbSetDeviceInfo: - return SProcXkbSetDeviceInfo(client); + return SProcXkbSetDeviceInfo(client); case X_kbSetDebuggingFlags: - return SProcXkbSetDebuggingFlags(client); + return SProcXkbSetDebuggingFlags(client); default: - return BadRequest; + return BadRequest; } } |