From 29dfc1a9fe450343cf27e11830cc91929624e0b5 Mon Sep 17 00:00:00 2001 From: matthieu Date: Mon, 18 May 2009 20:53:43 +0000 Subject: [PATCH] update to xf86-input-vmmouse 12.6.4 --- driver/xf86-input-vmmouse/configure | 26 ++++----- driver/xf86-input-vmmouse/configure.ac | 8 +-- driver/xf86-input-vmmouse/man/vmmouse.man | 2 +- .../xf86-input-vmmouse/shared/vmmouse_defs.h | 6 +++ .../xf86-input-vmmouse/shared/vmmouse_proto.h | 9 ++++ driver/xf86-input-vmmouse/src/vmmouse.c | 53 +++++++++++++------ .../xf86-input-vmmouse/tools/vmmouse_detect.c | 6 +++ 7 files changed, 76 insertions(+), 34 deletions(-) diff --git a/driver/xf86-input-vmmouse/configure b/driver/xf86-input-vmmouse/configure index baf758ada..16b1e1327 100644 --- a/driver/xf86-input-vmmouse/configure +++ b/driver/xf86-input-vmmouse/configure @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.62 for xf86-input-vmmouse 12.6.3. +# Generated by GNU Autoconf 2.62 for xf86-input-vmmouse 12.6.4. # # Report bugs to . # @@ -750,8 +750,8 @@ SHELL=${CONFIG_SHELL-/bin/sh} # Identity of this package. PACKAGE_NAME='xf86-input-vmmouse' PACKAGE_TARNAME='xf86-input-vmmouse' -PACKAGE_VERSION='12.6.3' -PACKAGE_STRING='xf86-input-vmmouse 12.6.3' +PACKAGE_VERSION='12.6.4' +PACKAGE_STRING='xf86-input-vmmouse 12.6.4' PACKAGE_BUGREPORT='https://bugs.freedesktop.org/enter_bug.cgi?product=xorg' ac_unique_file="Makefile.am" @@ -1507,7 +1507,7 @@ if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures xf86-input-vmmouse 12.6.3 to adapt to many kinds of systems. +\`configure' configures xf86-input-vmmouse 12.6.4 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1578,7 +1578,7 @@ fi if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of xf86-input-vmmouse 12.6.3:";; + short | recursive ) echo "Configuration of xf86-input-vmmouse 12.6.4:";; esac cat <<\_ACEOF @@ -1701,7 +1701,7 @@ fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -xf86-input-vmmouse configure 12.6.3 +xf86-input-vmmouse configure 12.6.4 generated by GNU Autoconf 2.62 Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, @@ -1715,7 +1715,7 @@ cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by xf86-input-vmmouse $as_me 12.6.3, which was +It was created by xf86-input-vmmouse $as_me 12.6.4, which was generated by GNU Autoconf 2.62. Invocation command line was $ $0 $@ @@ -2366,7 +2366,7 @@ fi # Define the identity of the package. PACKAGE='xf86-input-vmmouse' - VERSION='12.6.3' + VERSION='12.6.4' cat >>confdefs.h <<_ACEOF @@ -20759,7 +20759,7 @@ inputdir=${moduledir}/input -# Check whether --with-hal_bin_dir was given. +# Check whether --with-hal-bin-dir was given. if test "${with_hal_bin_dir+set}" = set; then withval=$with_hal_bin_dir; halbindir="$withval" else @@ -20770,7 +20770,7 @@ HAL_BIN_DIR=${halbindir} -# Check whether --with-hal_callouts_dir was given. +# Check whether --with-hal-callouts-dir was given. if test "${with_hal_callouts_dir+set}" = set; then withval=$with_hal_callouts_dir; halcalloutsdir="$withval" else @@ -20781,7 +20781,7 @@ HAL_CALLOUTS_DIR=${halcalloutsdir} -# Check whether --with-hal_fdi_dir was given. +# Check whether --with-hal-fdi-dir was given. if test "${with_hal_fdi_dir+set}" = set; then withval=$with_hal_fdi_dir; halfdidir="$withval" else @@ -21935,7 +21935,7 @@ exec 6>&1 # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by xf86-input-vmmouse $as_me 12.6.3, which was +This file was extended by xf86-input-vmmouse $as_me 12.6.4, which was generated by GNU Autoconf 2.62. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -21988,7 +21988,7 @@ Report bugs to ." _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_version="\\ -xf86-input-vmmouse config.status 12.6.3 +xf86-input-vmmouse config.status 12.6.4 configured by $0, generated by GNU Autoconf 2.62, with options \\"`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\" diff --git a/driver/xf86-input-vmmouse/configure.ac b/driver/xf86-input-vmmouse/configure.ac index 5c5f639a3..ab39f6cc5 100644 --- a/driver/xf86-input-vmmouse/configure.ac +++ b/driver/xf86-input-vmmouse/configure.ac @@ -22,7 +22,7 @@ AC_PREREQ(2.57) AC_INIT([xf86-input-vmmouse], - 12.6.3, + 12.6.4, [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg], xf86-input-vmmouse) @@ -70,7 +70,7 @@ AC_ARG_WITH(xorg-module-dir, inputdir=${moduledir}/input AC_SUBST(inputdir) -AC_ARG_WITH(hal_bin_dir, +AC_ARG_WITH(hal-bin-dir, AC_HELP_STRING([--with-hal-bin-dir=DIR], [Directory where HAL binaries where installed [[default=$bindir]]]), [halbindir="$withval"], @@ -78,7 +78,7 @@ AC_ARG_WITH(hal_bin_dir, HAL_BIN_DIR=${halbindir} AC_SUBST(HAL_BIN_DIR) -AC_ARG_WITH(hal_callouts_dir, +AC_ARG_WITH(hal-callouts-dir, AC_HELP_STRING([--with-hal-callouts-dir=DIR], [Directory where HAL expects its callout scripts to be located [[default=$libdir/hal]]]), @@ -87,7 +87,7 @@ AC_ARG_WITH(hal_callouts_dir, HAL_CALLOUTS_DIR=${halcalloutsdir} AC_SUBST(HAL_CALLOUTS_DIR) -AC_ARG_WITH(hal_fdi_dir, +AC_ARG_WITH(hal-fdi-dir, AC_HELP_STRING([--with-hal-fdi-dir=DIR], [Directory where HAL expects its fdi files to be located [[default=$datadir/hal/fdi/policy/20thirdparty]]]), diff --git a/driver/xf86-input-vmmouse/man/vmmouse.man b/driver/xf86-input-vmmouse/man/vmmouse.man index c74f07409..6ca1eb5b2 100644 --- a/driver/xf86-input-vmmouse/man/vmmouse.man +++ b/driver/xf86-input-vmmouse/man/vmmouse.man @@ -41,7 +41,7 @@ See the .B mouse(__drivermansuffix__) man page for details on these options. .SH "SEE ALSO" -__xservername__(1), __xconfigfile__(__filemansuffix__), xorgconfig(1), Xserver(1), X(__miscmansuffix__), +__xservername__(1), __xconfigfile__(__filemansuffix__), Xserver(1), X(__miscmansuffix__), mouse(__drivermansuffix__) .SH AUTHORS Copyright (c) 1999-2007 VMware, Inc. diff --git a/driver/xf86-input-vmmouse/shared/vmmouse_defs.h b/driver/xf86-input-vmmouse/shared/vmmouse_defs.h index 8dc769e61..d256faf72 100644 --- a/driver/xf86-input-vmmouse/shared/vmmouse_defs.h +++ b/driver/xf86-input-vmmouse/shared/vmmouse_defs.h @@ -56,6 +56,12 @@ */ #define VMMOUSE_ERROR 0xffff0000 +/* + * VMMouse Input packet flags + */ +#define VMMOUSE_MOVE_RELATIVE 1 +#define VMMOUSE_MOVE_ABSOLUTE 0 + /* * VMMouse Input button flags */ diff --git a/driver/xf86-input-vmmouse/shared/vmmouse_proto.h b/driver/xf86-input-vmmouse/shared/vmmouse_proto.h index a2eb1e428..9d7cb22bf 100644 --- a/driver/xf86-input-vmmouse/shared/vmmouse_proto.h +++ b/driver/xf86-input-vmmouse/shared/vmmouse_proto.h @@ -49,6 +49,15 @@ #include "xf86_libc.h" #endif +/* Map Solaris/Sun compiler #defines to gcc equivalents */ +#if !defined __i386__ && defined __i386 +# define __i386__ +#endif + +#if !defined __x86_64__ && defined __amd64 +# define __x86_64__ +#endif + #if !defined __i386__ && !defined __x86_64__ #error The vmmouse protocol is only supported on x86 architectures. #endif diff --git a/driver/xf86-input-vmmouse/src/vmmouse.c b/driver/xf86-input-vmmouse/src/vmmouse.c index a712bd591..deec8c808 100644 --- a/driver/xf86-input-vmmouse/src/vmmouse.c +++ b/driver/xf86-input-vmmouse/src/vmmouse.c @@ -95,7 +95,7 @@ */ #define VMMOUSE_MAJOR_VERSION 12 #define VMMOUSE_MINOR_VERSION 6 -#define VMMOUSE_PATCHLEVEL 2 +#define VMMOUSE_PATCHLEVEL 4 #define VMMOUSE_DRIVER_VERSION \ (VMMOUSE_MAJOR_VERSION * 65536 + VMMOUSE_MINOR_VERSION * 256 + VMMOUSE_PATCHLEVEL) #define VMMOUSE_DRIVER_VERSION_STRING \ @@ -138,9 +138,11 @@ static void MouseCtrl(DeviceIntPtr device, PtrCtrl *ctrl); * Definitions *****************************************************************************/ typedef struct { - int screenNum; - Bool vmmouseAvailable; - Bool relative; + int screenNum; + Bool vmmouseAvailable; + VMMOUSE_INPUT_DATA vmmousePrevInput; + Bool isCurrRelative; + Bool absoluteRequested; } VMMousePrivRec, *VMMousePrivPtr; static const char *reqSymbols[] = { @@ -311,7 +313,7 @@ VMMousePreInit(InputDriverPtr drv, IDevPtr dev, int flags) return NULL; } - mPriv->relative = TRUE; + mPriv->absoluteRequested = FALSE; /* * try to enable vmmouse here @@ -479,6 +481,7 @@ VMMouseDoPostEvent(InputInfoPtr pInfo, int buttons, int dx, int dy) VMMousePrivPtr mPriv; int truebuttons; int id, change; + Bool mouseMoved = FALSE; pMse = pInfo->private; mPriv = (VMMousePrivPtr)pMse->mousePriv; @@ -492,7 +495,14 @@ VMMouseDoPostEvent(InputInfoPtr pInfo, int buttons, int dx, int dy) buttons = reverseBits(reverseMap, buttons); - if (dx || dy) { + if (mPriv->isCurrRelative) { + mouseMoved = dx || dy; + } else { + mouseMoved = (dx != mPriv->vmmousePrevInput.X) || + (dy != mPriv->vmmousePrevInput.Y) || + (mPriv->vmmousePrevInput.Flags & VMMOUSE_MOVE_RELATIVE); + } + if (mouseMoved) { #ifdef CALL_CONVERSION_PROC /* @@ -501,7 +511,7 @@ VMMouseDoPostEvent(InputInfoPtr pInfo, int buttons, int dx, int dy) */ VMMouseConvertProc(pInfo, 0, 2, dx, dy, 0, 0, 0, 0, &dx, &dy); #endif - xf86PostMotionEvent(pInfo->dev, !mPriv->relative, 0, 2, dx, dy); + xf86PostMotionEvent(pInfo->dev, !mPriv->isCurrRelative, 0, 2, dx, dy); } if (truebuttons != pMse->lastButtons) { @@ -549,7 +559,7 @@ VMMousePostEvent(InputInfoPtr pInfo, int buttons, int dx, int dy, int dz, int dw break; case MSE_MAPTOX: if (dz != 0) { - if(mPriv->relative) + if(mPriv->isCurrRelative) dx = dz; else dx += dz; @@ -558,7 +568,7 @@ VMMousePostEvent(InputInfoPtr pInfo, int buttons, int dx, int dy, int dz, int dw break; case MSE_MAPTOY: if (dz != 0) { - if(mPriv->relative) + if(mPriv->isCurrRelative) dy = dz; else dy += dz; @@ -593,7 +603,7 @@ VMMousePostEvent(InputInfoPtr pInfo, int buttons, int dx, int dy, int dz, int dw */ if (zbutton) { buttons &= ~zbutton; - if(mPriv->relative) + if(mPriv->isCurrRelative) VMMouseDoPostEvent(pInfo, buttons, 0, 0); else VMMouseDoPostEvent(pInfo, buttons, dx, dy); @@ -621,7 +631,6 @@ static void FlushButtons(MouseDevPtr pMse) { pMse->lastButtons = 0; - pMse->lastMappedButtons = 0; } @@ -865,8 +874,8 @@ VMMouseDeviceControl(DeviceIntPtr device, int mode) VMMousePrivPtr mPriv = (VMMousePrivPtr)pMse->mousePriv; if( mPriv->vmmouseAvailable ) { VMMouseClient_Disable(); - mPriv->vmmouseAvailable = FALSE; - mPriv->relative = TRUE; + mPriv->vmmouseAvailable = FALSE; + mPriv->absoluteRequested = FALSE; } xf86RemoveEnabledDevice(pInfo); @@ -916,9 +925,14 @@ VMMouseReadInput(InputInfoPtr pInfo) pMse = pInfo->private; mPriv = pMse->mousePriv; - if (mPriv->relative) { + if (!mPriv->absoluteRequested) { + /* + * We can request for absolute mode, but it depends on + * host whether it will send us absolute or relative + * position. + */ VMMouseClient_RequestAbsolute(); - mPriv->relative = FALSE; + mPriv->absoluteRequested = TRUE; xf86Msg(X_INFO, "VMWARE(0): vmmouse enable absolute mode\n"); } @@ -973,12 +987,14 @@ VMMouseReadInput(InputInfoPtr pInfo) static void GetVMMouseMotionEvent(InputInfoPtr pInfo){ MouseDevPtr pMse; + VMMousePrivPtr mPriv; int buttons, dx, dy, dz, dw; VMMOUSE_INPUT_DATA vmmouseInput; int ps2Buttons = 0; int numPackets; pMse = pInfo->private; + mPriv = (VMMousePrivPtr)pMse->mousePriv; while((numPackets = VMMouseClient_GetInput(&vmmouseInput))){ if (numPackets == VMMOUSE_ERROR) { VMMouseClient_Disable(); @@ -1003,8 +1019,13 @@ GetVMMouseMotionEvent(InputInfoPtr pInfo){ dy = vmmouseInput.Y; dz = (char)vmmouseInput.Z; dw = 0; + /* + * Get the per package relative or absolute information. + */ + mPriv->isCurrRelative = vmmouseInput.Flags & VMMOUSE_MOVE_RELATIVE; /* post an event */ pMse->PostEvent(pInfo, buttons, dx, dy, dz, dw); + mPriv->vmmousePrevInput = vmmouseInput; } } @@ -1106,7 +1127,7 @@ VMMouseConvertProc(InputInfoPtr pInfo, int first, int num, int v0, int v1, int v if (first != 0 || num != 2) return FALSE; - if(mPriv->relative) { + if(mPriv->isCurrRelative) { *x = v0; *y = v1; } else { diff --git a/driver/xf86-input-vmmouse/tools/vmmouse_detect.c b/driver/xf86-input-vmmouse/tools/vmmouse_detect.c index 0dd48273c..ac238b4a1 100644 --- a/driver/xf86-input-vmmouse/tools/vmmouse_detect.c +++ b/driver/xf86-input-vmmouse/tools/vmmouse_detect.c @@ -30,10 +30,16 @@ #include #include "vmmouse_client.h" +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + void segvCB(int sig) { +#if defined HAVE_XORG_SERVER_1_1_0 exit(1); +#endif }