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/hw/kdrive/linux/ms.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/hw/kdrive/linux/ms.c')
-rw-r--r-- | xorg-server/hw/kdrive/linux/ms.c | 134 |
1 files changed, 65 insertions, 69 deletions
diff --git a/xorg-server/hw/kdrive/linux/ms.c b/xorg-server/hw/kdrive/linux/ms.c index 176e12550..e82350ac5 100644 --- a/xorg-server/hw/kdrive/linux/ms.c +++ b/xorg-server/hw/kdrive/linux/ms.c @@ -34,67 +34,63 @@ THE SOFTWARE. #include "kdrive.h" static int -MsReadBytes (int fd, char *buf, int len, int min) +MsReadBytes(int fd, char *buf, int len, int min) { - int n, tot; - fd_set set; - struct timeval tv; + int n, tot; + fd_set set; + struct timeval tv; tot = 0; - while (len) - { - n = read (fd, buf, len); - if (n > 0) - { - tot += n; - buf += n; - len -= n; - } - if (tot % min == 0) - break; - FD_ZERO (&set); - FD_SET (fd, &set); - tv.tv_sec = 0; - tv.tv_usec = 100 * 1000; - n = select (fd + 1, &set, 0, 0, &tv); - if (n <= 0) - break; + while (len) { + n = read(fd, buf, len); + if (n > 0) { + tot += n; + buf += n; + len -= n; + } + if (tot % min == 0) + break; + FD_ZERO(&set); + FD_SET(fd, &set); + tv.tv_sec = 0; + tv.tv_usec = 100 * 1000; + n = select(fd + 1, &set, 0, 0, &tv); + if (n <= 0) + break; } return tot; } static void -MsRead (int port, void *closure) +MsRead(int port, void *closure) { - unsigned char buf[3 * 200]; - unsigned char *b; - int n; - int dx, dy; - unsigned long flags; - - while ((n = MsReadBytes (port, (char *) buf, sizeof (buf), 3)) > 0) - { - b = buf; - while (n >= 3) - { - flags = KD_MOUSE_DELTA; - - if (b[0] & 0x20) - flags |= KD_BUTTON_1; - if (b[0] & 0x10) - flags |= KD_BUTTON_3; - - dx = (char)(((b[0] & 0x03) << 6) | (b[1] & 0x3F)); - dy = (char)(((b[0] & 0x0C) << 4) | (b[2] & 0x3F)); + unsigned char buf[3 * 200]; + unsigned char *b; + int n; + int dx, dy; + unsigned long flags; + + while ((n = MsReadBytes(port, (char *) buf, sizeof(buf), 3)) > 0) { + b = buf; + while (n >= 3) { + flags = KD_MOUSE_DELTA; + + if (b[0] & 0x20) + flags |= KD_BUTTON_1; + if (b[0] & 0x10) + flags |= KD_BUTTON_3; + + dx = (char) (((b[0] & 0x03) << 6) | (b[1] & 0x3F)); + dy = (char) (((b[0] & 0x0C) << 4) | (b[2] & 0x3F)); n -= 3; b += 3; - KdEnqueuePointerEvent (closure, flags, dx, dy, 0); - } + KdEnqueuePointerEvent(closure, flags, dx, dy, 0); + } } } static Status -MsInit (KdPointerInfo *pi) +MsInit(KdPointerInfo * pi) { if (!pi) return BadImplementation; @@ -108,51 +104,51 @@ MsInit (KdPointerInfo *pi) } static Status -MsEnable (KdPointerInfo *pi) +MsEnable(KdPointerInfo * pi) { int port; struct termios t; int ret; - port = open (pi->path, O_RDWR | O_NONBLOCK); - if(port < 0) { - ErrorF("Couldn't open %s (%d)\n", pi->path, (int)errno); + port = open(pi->path, O_RDWR | O_NONBLOCK); + if (port < 0) { + ErrorF("Couldn't open %s (%d)\n", pi->path, (int) errno); return 0; - } else if (port == 0) { - ErrorF("Opening %s returned 0! Please complain to Keith.\n", - pi->path); - goto bail; + } + else if (port == 0) { + ErrorF("Opening %s returned 0! Please complain to Keith.\n", pi->path); + goto bail; } - if(!isatty(port)) { + if (!isatty(port)) { ErrorF("%s is not a tty\n", pi->path); goto bail; } ret = tcgetattr(port, &t); - if(ret < 0) { + if (ret < 0) { ErrorF("Couldn't tcgetattr(%s): %d\n", pi->path, errno); goto bail; } - t.c_iflag &= ~ (IGNBRK | BRKINT | PARMRK | ISTRIP | INLCR | + t.c_iflag &= ~(IGNBRK | BRKINT | PARMRK | ISTRIP | INLCR | IGNCR | ICRNL | IXON | IXOFF); - t.c_oflag &= ~ OPOST; - t.c_lflag &= ~ (ECHO | ECHONL | ICANON | ISIG | IEXTEN); - t.c_cflag &= ~ (CSIZE | PARENB); + t.c_oflag &= ~OPOST; + t.c_lflag &= ~(ECHO | ECHONL | ICANON | ISIG | IEXTEN); + t.c_cflag &= ~(CSIZE | PARENB); t.c_cflag |= CS8 | CLOCAL | CSTOPB; - cfsetispeed (&t, B1200); - cfsetospeed (&t, B1200); + cfsetispeed(&t, B1200); + cfsetospeed(&t, B1200); t.c_cc[VMIN] = 1; t.c_cc[VTIME] = 0; ret = tcsetattr(port, TCSANOW, &t); - if(ret < 0) { + if (ret < 0) { ErrorF("Couldn't tcsetattr(%s): %d\n", pi->path, errno); goto bail; } - if (KdRegisterFd (port, MsRead, pi)) - return TRUE; - pi->driverPrivate = (void *)(intptr_t)port; + if (KdRegisterFd(port, MsRead, pi)) + return TRUE; + pi->driverPrivate = (void *) (intptr_t) port; return Success; @@ -162,13 +158,13 @@ MsEnable (KdPointerInfo *pi) } static void -MsDisable (KdPointerInfo *pi) +MsDisable(KdPointerInfo * pi) { - KdUnregisterFd (pi, (int)(intptr_t)pi->driverPrivate, TRUE); + KdUnregisterFd(pi, (int) (intptr_t) pi->driverPrivate, TRUE); } static void -MsFini (KdPointerInfo *pi) +MsFini(KdPointerInfo * pi) { } |