[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

xserver-xorg-input-vmmouse: Changes to 'upstream-unstable'



 configure.ac           |    8 +++----
 man/vmmouse.man        |    2 -
 shared/vmmouse_defs.h  |    6 +++++
 shared/vmmouse_proto.h |    9 ++++++++
 src/vmmouse.c          |   53 ++++++++++++++++++++++++++++++++++---------------
 tools/vmmouse_detect.c |    6 +++++
 6 files changed, 63 insertions(+), 21 deletions(-)

New commits:
commit d61609868697825717d2f6a63b2a6177cb13873b
Author: Shelley Gong <shelleygong@vmware.com>
Date:   Mon May 11 10:08:56 2009 -0700

    1) Fix bug where motion notify events were being sent with every button event.
    
    2) Classify relative vs. absolute packets individually rather than from a
       global flag.
    
    3) Compile with older distros.
    
    4) Bump for 12.6.4 Release.
    
    Signed-off-by: Philip Langdale <philipl@fido2.homeip.net>

diff --git a/configure.ac b/configure.ac
index 118ae84..ab39f6c 100644
--- a/configure.ac
+++ b/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)
 
diff --git a/shared/vmmouse_defs.h b/shared/vmmouse_defs.h
index 8dc769e..d256faf 100644
--- a/shared/vmmouse_defs.h
+++ b/shared/vmmouse_defs.h
@@ -57,6 +57,12 @@
 #define VMMOUSE_ERROR		        0xffff0000
 
 /*
+ * VMMouse Input packet flags
+ */
+#define VMMOUSE_MOVE_RELATIVE	        1
+#define VMMOUSE_MOVE_ABSOLUTE	        0
+
+/*
  * VMMouse Input button flags
  */
 #define VMMOUSE_LEFT_BUTTON	        0x20
diff --git a/src/vmmouse.c b/src/vmmouse.c
index a712bd5..deec8c8 100644
--- a/src/vmmouse.c
+++ b/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/tools/vmmouse_detect.c b/tools/vmmouse_detect.c
index 0dd4827..ac238b4 100644
--- a/tools/vmmouse_detect.c
+++ b/tools/vmmouse_detect.c
@@ -30,10 +30,16 @@
 #include <signal.h>
 #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
 }
 
 

commit d5ae42ec3849672438823b08ad06a69289ae99c5
Author: Alan Coopersmith <alan.coopersmith@sun.com>
Date:   Thu May 7 15:53:32 2009 -0700

    Map Solaris/Sun compiler #defines to gcc equivalents
    
    Signed-off-by: Alan Coopersmith <alan.coopersmith@sun.com>

diff --git a/shared/vmmouse_proto.h b/shared/vmmouse_proto.h
index a2eb1e4..9d7cb22 100644
--- a/shared/vmmouse_proto.h
+++ b/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

commit 9719534fa3a184b848ef9e9c3a755703b8708fd2
Author: Alan Coopersmith <alan.coopersmith@sun.com>
Date:   Thu Jan 15 07:29:44 2009 -0800

    Make --with-hal* configure options match their help output

diff --git a/configure.ac b/configure.ac
index 5c5f639..118ae84 100644
--- a/configure.ac
+++ b/configure.ac
@@ -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]]]),

commit 5e43144376bfa4491f60dc4da34f8bde9da2f900
Author: Alan Coopersmith <alan.coopersmith@sun.com>
Date:   Fri Jan 9 16:23:49 2009 -0800

    Remove xorgconfig & xorgcfg from See Also list in man page

diff --git a/man/vmmouse.man b/man/vmmouse.man
index c74f074..6ca1eb5 100644
--- a/man/vmmouse.man
+++ b/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.


Reply to: