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

xserver-xorg-video-vmware: Changes to 'upstream-experimental'



 Makefile.am             |    2 
 configure.ac            |   22 ++++
 src/Makefile.am         |    4 
 src/bits2pixels.c       |    1 
 src/bits2pixels.h       |    2 
 src/guest_os.h          |    2 
 src/includeCheck.h      |    1 
 src/svga_limits.h       |    2 
 src/vm_basic_types.h    |    2 
 src/vm_device_version.h |    2 
 src/vmware.c            |   93 +++++++++++++------
 src/vmware.h            |    2 
 src/vmwarectrl.c        |   10 +-
 src/vmwarecurs.c        |    1 
 src/vmwaremodule.c      |   56 +++++++++--
 src/vmwarevideo.c       |   41 +++++++-
 src/vmwarexinerama.c    |    7 +
 vmwarectrl/AUTHORS      |    1 
 vmwarectrl/COPYING      |   26 -----
 vmwarectrl/ChangeLog    |    8 -
 vmwarectrl/INSTALL      |  229 ------------------------------------------------
 vmwarectrl/Makefile.am  |   12 +-
 vmwarectrl/NEWS         |    4 
 vmwarectrl/README       |    6 -
 vmwarectrl/autogen.sh   |   12 --
 vmwarectrl/configure.ac |   12 --
 26 files changed, 188 insertions(+), 372 deletions(-)

New commits:
commit 8f8f71f0075d9d5cbbfca93425462ba03c5b8046
Author: Thomas Hellstrom <thellstrom@vmware.com>
Date:   Tue Nov 9 14:31:30 2010 +0100

    Bump package version to 11.0.3 for release
    
    Signed-off-by: Thomas Hellstrom <thellstrom@vmware.com>

diff --git a/configure.ac b/configure.ac
index 9ccdf25..e3dcf30 100644
--- a/configure.ac
+++ b/configure.ac
@@ -23,7 +23,7 @@
 # Initialize Autoconf
 AC_PREREQ([2.60])
 AC_INIT([xf86-video-vmware],
-        [11.0.2],
+        [11.0.3],
         [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg],
         [xf86-video-vmware])
 AC_CONFIG_SRCDIR([Makefile.am])

commit 30ac6eaf64aa4831025555b72b65843686a35094
Author: Jesse Adkins <jesserayadkins@gmail.com>
Date:   Tue Sep 28 13:29:52 2010 -0700

    Purge cvs tags.
    
    Signed-off-by: Jesse Adkins <jesserayadkins@gmail.com>
    Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>

diff --git a/src/bits2pixels.c b/src/bits2pixels.c
index 2a1cc14..e3801c5 100644
--- a/src/bits2pixels.c
+++ b/src/bits2pixels.c
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/vmware/bits2pixels.c,v 1.1 2001/04/05 19:29:43 dawes Exp $ */
 /* **********************************************************
  * Copyright (C) 1999-2001 VMware, Inc.
  * All Rights Reserved
diff --git a/src/bits2pixels.h b/src/bits2pixels.h
index 585f6fc..7eb4631 100644
--- a/src/bits2pixels.h
+++ b/src/bits2pixels.h
@@ -1,8 +1,6 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/vmware/bits2pixels.h,v 1.2 2002/12/11 17:07:58 dawes Exp $ */
 /* **********************************************************
  * Copyright (C) 1999-2001 VMware, Inc.
  * All Rights Reserved
- * Id: bits2pixels.h,v 1.4 2001/01/26 23:32:15 yoel Exp $
  * **********************************************************/
 
 /*
diff --git a/src/guest_os.h b/src/guest_os.h
index dedebe0..4beaf7c 100644
--- a/src/guest_os.h
+++ b/src/guest_os.h
@@ -1,8 +1,6 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/vmware/guest_os.h,v 1.1 2001/04/05 19:29:44 dawes Exp $ */
 /* *********************************************************
  * Copyright (C) 1999-2001 VMware, Inc.
  * All Rights Reserved
- * Id: guest_os.h,v 1.5 2001/01/26 23:32:15 yoel Exp $
  * **********************************************************/
 
 #ifndef _GUEST_OS_H_
diff --git a/src/includeCheck.h b/src/includeCheck.h
index 8df4666..88ac8ef 100644
--- a/src/includeCheck.h
+++ b/src/includeCheck.h
@@ -1,3 +1,2 @@
 /* This space intentionally left blank. */
-/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/vmware/includeCheck.h,v 1.3 2002/10/16 22:12:53 alanh Exp $ */
 
diff --git a/src/svga_limits.h b/src/svga_limits.h
index 209dd8f..3b35ccc 100644
--- a/src/svga_limits.h
+++ b/src/svga_limits.h
@@ -1,8 +1,6 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/vmware/svga_limits.h,v 1.1 2001/04/05 19:29:44 dawes Exp $ */
 /* **********************************************************
  * Copyright (C) 1998-2001 VMware, Inc.
  * All Rights Reserved
- * $Id$
  * **********************************************************/
 
 /*
diff --git a/src/vm_basic_types.h b/src/vm_basic_types.h
index 673522f..37272ee 100644
--- a/src/vm_basic_types.h
+++ b/src/vm_basic_types.h
@@ -1,8 +1,6 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/vmware/vm_basic_types.h,v 1.5 2002/01/07 20:38:29 dawes Exp $ */
 /* **********************************************************
  * Copyright (C) 1998-2001 VMware, Inc.
  * All Rights Reserved
- * Id: vm_basic_types.h,v 1.9 2001/02/14 22:22:53 bennett Exp $
  * **********************************************************/
 
 /*
diff --git a/src/vm_device_version.h b/src/vm_device_version.h
index 8f6dd3b..92a5cac 100644
--- a/src/vm_device_version.h
+++ b/src/vm_device_version.h
@@ -1,8 +1,6 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/vmware/vm_device_version.h,v 1.1 2001/04/05 19:29:44 dawes Exp $ */
 /* **********************************************************
  * Copyright (C) 1998-2001 VMware, Inc.
  * All Rights Reserved
- * Id: vm_device_version.h,v 1.2 2001/01/26 21:53:27 yoel Exp $
  * **********************************************************/
 
 
diff --git a/src/vmware.c b/src/vmware.c
index 8560b0e..73e86fe 100644
--- a/src/vmware.c
+++ b/src/vmware.c
@@ -6,7 +6,6 @@
 char rcsId_vmware[] =
     "Id: vmware.c,v 1.11 2001/02/23 02:10:39 yoel Exp $";
 #endif
-/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/vmware/vmware.c,v 1.18 2003/09/24 02:43:31 dawes Exp $ */
 
 #ifdef HAVE_CONFIG_H
 #include "config.h"
diff --git a/src/vmware.h b/src/vmware.h
index a3920ab..9216dcd 100644
--- a/src/vmware.h
+++ b/src/vmware.h
@@ -1,9 +1,7 @@
 /* **********************************************************
  * Copyright (C) 1998-2001 VMware, Inc.
  * All Rights Reserved
- * Id: vmware.h,v 1.6 2001/01/30 18:13:47 bennett Exp $
  * **********************************************************/
-/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/vmware/vmware.h,v 1.11 2003/04/13 18:09:27 dawes Exp $ */
 
 #ifndef VMWARE_H
 #define VMWARE_H
diff --git a/src/vmwarecurs.c b/src/vmwarecurs.c
index 38c5988..2e2effb 100644
--- a/src/vmwarecurs.c
+++ b/src/vmwarecurs.c
@@ -6,7 +6,6 @@
 char rcsId_vmwarecurs[] =
     "Id: vmwarecurs.c,v 1.5 2001/01/30 23:33:02 bennett Exp $";
 #endif
-/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/vmware/vmwarecurs.c,v 1.10 2003/02/04 01:39:53 dawes Exp $ */
 
 #ifdef HAVE_CONFIG_H
 #include "config.h"

commit 083a663bbb186bfb854eda3b9f33d7fc24252ec5
Author: Thomas Hellstrom <thellstrom@vmware.com>
Date:   Thu Sep 16 10:08:12 2010 +0200

    Make the modinfo string contain an optional subpatch number
    
    The idea is that the build system assigns this number if needed.
    As an example it might be the commit number since the last version tag.
    
    Signed-off-by: Thomas Hellstrom <thellstrom@vmware.com>

diff --git a/src/vmware.c b/src/vmware.c
index ed31b02..8560b0e 100644
--- a/src/vmware.c
+++ b/src/vmware.c
@@ -101,12 +101,21 @@ static const char VMWAREBuildStr[] = "VMware Guest X Server "
 
 /*
  * Standard four digit version string expected by VMware Tools installer.
- * As the driver's version is only  {major, minor, patchlevel}, simply append an
- * extra zero for the fourth digit.
+ * As the driver's version is only  {major, minor, patchlevel},
+ * The fourth digit may describe the commit number relative to the
+ * last version tag as output from `git describe`
  */
+
 #ifdef __GNUC__
-const char vmwlegacy_drv_modinfo[] __attribute__((section(".modinfo"),unused)) =
-    "version=" VMWARE_DRIVER_VERSION_STRING ".0";
+#ifdef VMW_SUBPATCH
+const char vmwlegacy_drv_modinfo[]
+__attribute__((section(".modinfo"),unused)) =
+  "version=" VMWARE_DRIVER_VERSION_STRING "." VMW_STRING(VMW_SUBPATCH);
+#else
+const char vmwlegacy_drv_modinfo[]
+__attribute__((section(".modinfo"),unused)) =
+  "version=" VMWARE_DRIVER_VERSION_STRING ".0";
+#endif /*VMW_SUBPATCH*/
 #endif
 
 static SymTabRec VMWAREChipsets[] = {
diff --git a/src/vmwaremodule.c b/src/vmwaremodule.c
index 392062f..2754879 100644
--- a/src/vmwaremodule.c
+++ b/src/vmwaremodule.c
@@ -62,12 +62,19 @@
 
 /*
  * Standard four digit version string expected by VMware Tools installer.
- * As the driver's version is only  {major, minor, patchlevel}, simply append an
- * extra zero for the fourth digit.
+ * As the driver's version is only  {major, minor, patchlevel},
+ * the fourth digit may describe the commit number relative to the
+ * last version tag as output from `git describe`
  */
+
 #ifdef __GNUC__
+#ifdef VMW_SUBPATCH
+const char vmware_drv_modinfo[] __attribute__((section(".modinfo"),unused)) =
+  "version=" VMWARE_DRIVER_VERSION_STRING "." VMW_STRING(VMW_SUBPATCH);
+#else
 const char vmware_drv_modinfo[] __attribute__((section(".modinfo"),unused)) =
-    "version=" VMWARE_DRIVER_VERSION_STRING ".0";
+  "version=" VMWARE_DRIVER_VERSION_STRING ".0";
+#endif /*VMW_SUBPATCH*/
 #endif
 
 static XF86ModuleVersionInfo vmware_version;

commit 5a2206c328caaed95daf91aff9220d3a51b492bd
Author: Thomas Hellstrom <thellstrom@vmware.com>
Date:   Thu Sep 16 09:58:07 2010 +0200

    Make sure we build on 1.4.99.
    
    Signed-off-by: Thomas Hellstrom <thellstrom@vmware.com>

diff --git a/configure.ac b/configure.ac
index 0ea3472..9ccdf25 100644
--- a/configure.ac
+++ b/configure.ac
@@ -89,7 +89,7 @@ PKG_CHECK_EXISTS([xorg-server >= 1.2.0],
                  [AC_DEFINE([HAVE_XORG_SERVER_1_2_0], 1,
                  [Has version 1.2.0 or greater of the Xserver])])
 
-PKG_CHECK_EXISTS([xorg-server >= 1.5.0],
+PKG_CHECK_EXISTS([xorg-server >= 1.4.99],
                  [AC_DEFINE([HAVE_XORG_SERVER_1_5_0], 1,
                  [Has version 1.5.0 or greater of the Xserver])])
 

commit da0f931b90833c7f706ace24b0c9dff2672f1e97
Author: Thomas Hellstrom <thellstrom@vmware.com>
Date:   Wed Sep 8 09:57:35 2010 +0200

    vmwlegacy: Fix a segfault in vmwareCursorCloseScreen.
    
    The segfault occured because the named function was using resources that
    were already taken down, because VMWARECloseScreen was called very late
    in the CloseScreen callchain.
    
    Make sure we wrap the CloseScreen pointers late in ScreenInit to avoid this.
    
    Signed-off-by: Thomas Hellstrom <thellstrom@vmware.com>

diff --git a/src/vmware.c b/src/vmware.c
index a4e4d08..ed31b02 100644
--- a/src/vmware.c
+++ b/src/vmware.c
@@ -1748,12 +1748,9 @@ VMWAREScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv)
     fbPictureInit (pScreen, 0, 0);
 
     /*
-     * Save the old screen vector, then wrap CloseScreen and
-     * set SaveScreen.
+     * Save the old screen vector.
      */
     pVMWARE->ScrnFuncs = *pScreen;
-    pScreen->CloseScreen = VMWARECloseScreen;
-    pScreen->SaveScreen = VMWARESaveScreen;
 
     /*
      * Set initial black & white colourmap indices.
@@ -1864,6 +1861,17 @@ VMWAREScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv)
         }
     }
 
+    /**
+     * Wrap CloseScreen and SaveScreen. Do this late since we
+     * want to be first in the callchain, to avoid using resources
+     * already taken down in CloseScreen.
+     */
+
+    pVMWARE->ScrnFuncs.CloseScreen = pScreen->CloseScreen;
+    pVMWARE->ScrnFuncs.SaveScreen = pScreen->SaveScreen;
+
+    pScreen->CloseScreen = VMWARECloseScreen;
+    pScreen->SaveScreen = VMWARESaveScreen;
 
     /* Done */
     return TRUE;

commit 03dca39afa06da04472d56ec4888f010186c6a13
Author: Thomas Hellstrom <thellstrom@vmware.com>
Date:   Tue Sep 7 21:55:28 2010 +0200

    vmwlegacy: A number of Xv fixes
    
    Properly init and uninit the port private clipboxes on setup and end.
    Clear the port private clipboxes on video stop, to force re-painting
    of the colorkey when the stream is resumed.
    Make sure the colorkey is painted *before* the overlay is flushed. Some
    host implementations seem picky about this.
    
    Signed-off-by: Thomas Hellstrom <thellstrom@vmware.com>

diff --git a/src/vmwarevideo.c b/src/vmwarevideo.c
index 7f78887..4ce0d5d 100644
--- a/src/vmwarevideo.c
+++ b/src/vmwarevideo.c
@@ -510,6 +510,7 @@ vmwareVideoEnd(ScreenPtr pScreen)
     pVid = (VMWAREVideoPtr) &pVMWARE->videoStreams[VMWARE_VID_NUM_PORTS];
     for (i = 0; i < VMWARE_VID_NUM_PORTS; ++i) {
         vmwareVideoEndStream(pScrn, &pVid[i]);
+	REGION_UNINIT(pScreen, &pVid[i].clipBoxes);
     }
 
     free(pVMWARE->videoStreams);
@@ -577,6 +578,7 @@ vmwareVideoSetup(ScrnInfoPtr pScrn)
         pPriv[i].flags = SVGA_VIDEO_FLAG_COLORKEY;
         pPriv[i].colorKey = VMWARE_VIDEO_COLORKEY;
         pPriv[i].isAutoPaintColorkey = TRUE;
+	REGION_NULL(pScreen, &pPriv[i].clipBoxes);
         adaptor->pPortPrivates[i].ptr = &pPriv[i];
     }
     pVMWARE->videoStreams = du;
@@ -671,7 +673,17 @@ vmwareVideoInitStream(ScrnInfoPtr pScrn, VMWAREVideoPtr pVid,
     REGION_COPY(pScrn->pScreen, &pVid->clipBoxes, clipBoxes);
 
     if (pVid->isAutoPaintColorkey) {
+	BoxPtr boxes = REGION_RECTS(&pVid->clipBoxes);
+	int nBoxes = REGION_NUM_RECTS(&pVid->clipBoxes);
+
         xf86XVFillKeyHelper(pScrn->pScreen, pVid->colorKey, clipBoxes);
+
+	/**
+	 * Force update to paint the colorkey before the overlay flush.
+	 */
+
+	while(nBoxes--)
+	    vmwareSendSVGACmdUpdate(pVMWARE, boxes++);
     }
 
     VmwareLog(("Got offscreen region, offset %d, size %d "
@@ -841,7 +853,18 @@ vmwareVideoPlay(ScrnInfoPtr pScrn, VMWAREVideoPtr pVid,
     if (!vmwareIsRegionEqual(&pVid->clipBoxes, clipBoxes)) {
         REGION_COPY(pScrn->pScreen, &pVid->clipBoxes, clipBoxes);
         if (pVid->isAutoPaintColorkey) {
+	    BoxPtr boxes = REGION_RECTS(&pVid->clipBoxes);
+	    int nBoxes = REGION_NUM_RECTS(&pVid->clipBoxes);
+
             xf86XVFillKeyHelper(pScrn->pScreen, pVid->colorKey, clipBoxes);
+
+	    /**
+	     * Force update to paint the colorkey before the overlay flush.
+	     */
+
+	    while(nBoxes--)
+		vmwareSendSVGACmdUpdate(pVMWARE, boxes++);
+
         }
     }
 
@@ -1093,6 +1116,9 @@ vmwareStopVideo(ScrnInfoPtr pScrn, pointer data, Bool Cleanup)
     if (!vmwareVideoEnabled(pVMWARE)) {
         return;
     }
+
+    REGION_EMPTY(pScrn->pScreen, &pVid->clipBoxes);
+
     if (!Cleanup) {
         VmwareLog(("vmwareStopVideo: Cleanup is FALSE.\n"));
         return;

commit dfb062e024dfd20789ee8d43c7f94640faa5ea9f
Author: Thomas Hellstrom <thellstrom@vmware.com>
Date:   Tue Sep 7 12:17:46 2010 +0200

    vmware/vmwlegacy: Silence compilation errors and -warnings.
    
    Silence warnings and errors on various server versions due to incorrect
    usage of libc functions.
    
    Signed-off-by: Thomas Hellstrom <thellstrom@vmware.com>

diff --git a/configure.ac b/configure.ac
index 7249ca1..0ea3472 100644
--- a/configure.ac
+++ b/configure.ac
@@ -89,6 +89,10 @@ PKG_CHECK_EXISTS([xorg-server >= 1.2.0],
                  [AC_DEFINE([HAVE_XORG_SERVER_1_2_0], 1,
                  [Has version 1.2.0 or greater of the Xserver])])
 
+PKG_CHECK_EXISTS([xorg-server >= 1.5.0],
+                 [AC_DEFINE([HAVE_XORG_SERVER_1_5_0], 1,
+                 [Has version 1.5.0 or greater of the Xserver])])
+
 PKG_CHECK_EXISTS([xorg-server >= 1.7.0],
                  [AC_DEFINE([HAVE_XORG_SERVER_1_7_0], 1,
                  [Has version 1.7.0 or greater of the Xserver])])
diff --git a/src/vmware.c b/src/vmware.c
index 599ac07..a4e4d08 100644
--- a/src/vmware.c
+++ b/src/vmware.c
@@ -41,6 +41,11 @@ char rcsId_vmware[] =
 #include "vm_device_version.h"
 #include "svga_modes.h"
 
+#ifndef HAVE_XORG_SERVER_1_5_0
+#include <xf86_ansic.h>
+#include <xf86_libc.h>
+#endif
+
 #ifdef HaveDriverFuncs
 #define VMWARE_DRIVER_FUNC HaveDriverFuncs
 #else
@@ -247,7 +252,7 @@ static void
 VMWAREFreeRec(ScrnInfoPtr pScrn)
 {
     if (pScrn->driverPrivate) {
-        xfree(pScrn->driverPrivate);
+        free(pScrn->driverPrivate);
         pScrn->driverPrivate = NULL;
     }
 }
@@ -560,7 +565,7 @@ VMWAREParseTopologyString(ScrnInfoPtr pScrn,
                  numOutputs, width, height, x, y);
 
       numOutputs++;
-      extents = xrealloc(extents, numOutputs * sizeof (xXineramaScreenInfo));
+      extents = realloc(extents, numOutputs * sizeof (xXineramaScreenInfo));
       extents[numOutputs - 1].x_org = x;
       extents[numOutputs - 1].y_org = y;
       extents[numOutputs - 1].width = width;
@@ -573,7 +578,7 @@ VMWAREParseTopologyString(ScrnInfoPtr pScrn,
  error:
    xf86DrvMsg(pScrn->scrnIndex, X_INFO, "Parsing static Xinerama topology: Failed.\n");
 
-   xfree(extents);
+   free(extents);
    extents = NULL;
    numOutputs = 0;
 
@@ -877,7 +882,7 @@ VMWAREPreInit(ScrnInfoPtr pScrn, int flags)
 #endif
 
     xf86CollectOptions(pScrn, NULL);
-    if (!(options = xalloc(sizeof(VMWAREOptions))))
+    if (!(options = malloc(sizeof(VMWAREOptions))))
         return FALSE;
     memcpy(options, VMWAREOptions, sizeof(VMWAREOptions));
     xf86ProcessOptions(pScrn->scrnIndex, pScrn->options, options);
@@ -909,7 +914,7 @@ VMWAREPreInit(ScrnInfoPtr pScrn, int flags)
     pScrn->videoRam = pVMWARE->videoRam / 1024;
     pScrn->memPhysBase = pVMWARE->memPhysBase;
 
-    xfree(options);
+    free(options);
 
     {
         Gamma zeros = { 0.0, 0.0, 0.0 };
@@ -922,7 +927,7 @@ VMWAREPreInit(ScrnInfoPtr pScrn, int flags)
         /* print error message */
         VMWAREFreeRec(pScrn);
         if (i > 0) {
-            xfree(pciList);
+            free(pciList);
         }
         return FALSE;
     }
@@ -1218,7 +1223,7 @@ vmwareNextXineramaState(VMWAREPtr pVMWARE)
      */
     if (pVMWARE->xinerama && !pVMWARE->xineramaStatic) {
        if (pVMWARE->xineramaNextState) {
-          xfree(pVMWARE->xineramaState);
+          free(pVMWARE->xineramaState);
           pVMWARE->xineramaState = pVMWARE->xineramaNextState;
           pVMWARE->xineramaNumOutputs = pVMWARE->xineramaNextNumOutputs;
 
@@ -1233,14 +1238,14 @@ vmwareNextXineramaState(VMWAREPtr pVMWARE)
            * follow a VMwareCtrlDoSetTopology call.
            */
           VMWAREXineramaPtr basicState =
-             (VMWAREXineramaPtr)xcalloc(1, sizeof (VMWAREXineramaRec));
+             (VMWAREXineramaPtr)calloc(1, sizeof (VMWAREXineramaRec));
           if (basicState) {
              basicState->x_org = 0;
              basicState->y_org = 0;
              basicState->width = vmwareReg->svga_reg_width;
              basicState->height = vmwareReg->svga_reg_height;
 
-             xfree(pVMWARE->xineramaState);
+             free(pVMWARE->xineramaState);
              pVMWARE->xineramaState = basicState;
              pVMWARE->xineramaNumOutputs = 1;
           }
@@ -1488,10 +1493,10 @@ VMWAREAddDisplayMode(ScrnInfoPtr pScrn,
 {
    DisplayModeRec *mode;
 
-   mode = xalloc(sizeof(DisplayModeRec));
+   mode = malloc(sizeof(DisplayModeRec));
    memset(mode, 0, sizeof *mode);
 
-   mode->name = xalloc(strlen(name) + 1);
+   mode->name = malloc(strlen(name) + 1);
    strcpy(mode->name, name);
    mode->status = MODE_OK;
    mode->type = M_T_DEFAULT;
@@ -1614,7 +1619,7 @@ VMWAREScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv)
 
 
     xf86CollectOptions(pScrn, NULL);
-    if (!(options = xalloc(sizeof(VMWAREOptions))))
+    if (!(options = malloc(sizeof(VMWAREOptions))))
         return FALSE;
     memcpy(options, VMWAREOptions, sizeof(VMWAREOptions));
     xf86ProcessOptions(pScrn->scrnIndex, pScrn->options, options);
@@ -1639,11 +1644,11 @@ VMWAREScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv)
 
          pVMWARE->xineramaStatic = pVMWARE->xineramaState != NULL;
 
-         xfree(topology);
+         free(topology);
        }
     }
 
-    xfree(options);
+    free(options);
 
     /* Initialise VMWARE_CTRL extension. */
     VMwareCtrl_ExtInit(pScrn);
@@ -1993,7 +1998,7 @@ VMWAREProbe(DriverPtr drv, int flags)
         numUsed = xf86MatchPciInstances(VMWARE_NAME, PCI_VENDOR_VMWARE,
                                         VMWAREChipsets, VMWAREPciChipsets, devSections,
                                         numDevSections, drv, &usedChips);
-        xfree(devSections);
+        free(devSections);
         if (numUsed <= 0)
             return FALSE;
         if (flags & PROBE_DETECT)
@@ -2023,7 +2028,7 @@ VMWAREProbe(DriverPtr drv, int flags)
                     foundScreen = TRUE;
                 }
             }
-        xfree(usedChips);
+        free(usedChips);
     }
     return foundScreen;
 }
diff --git a/src/vmwarectrl.c b/src/vmwarectrl.c
index d0aace5..acaa856 100644
--- a/src/vmwarectrl.c
+++ b/src/vmwarectrl.c
@@ -45,6 +45,10 @@
 #include "vmware.h"
 #include "vmwarectrlproto.h"
 
+#ifndef HAVE_XORG_SERVER_1_5_0
+#include <xf86_ansic.h>
+#include <xf86_libc.h>
+#endif
 
 /*
  *----------------------------------------------------------------------------
@@ -122,7 +126,7 @@ VMwareCtrlDoSetRes(ScrnInfoPtr pScrn,
       VmwareLog(("DoSetRes: %d %d\n", x, y));
 
       if (resetXinerama) {
-         xfree(pVMWARE->xineramaNextState);
+         free(pVMWARE->xineramaNextState);
          pVMWARE->xineramaNextState = NULL;
          pVMWARE->xineramaNextNumOutputs = 0;
       }
@@ -276,7 +280,7 @@ VMwareCtrlDoSetTopology(ScrnInfoPtr pScrn,
 
       VmwareLog(("DoSetTopology: %d %d\n", maxX, maxY));
 
-      xineramaState = (VMWAREXineramaPtr)xcalloc(number, sizeof(VMWAREXineramaRec));
+      xineramaState = (VMWAREXineramaPtr)calloc(number, sizeof(VMWAREXineramaRec));
       if (xineramaState) {
          memcpy(xineramaState, extents, number * sizeof (VMWAREXineramaRec));
 
@@ -289,7 +293,7 @@ VMwareCtrlDoSetTopology(ScrnInfoPtr pScrn,
           * will be no mode change. In this case, push it out
           * immediately.
           */
-         xfree(pVMWARE->xineramaNextState);
+         free(pVMWARE->xineramaNextState);
          pVMWARE->xineramaNextState = xineramaState;
          pVMWARE->xineramaNextNumOutputs = number;
 
diff --git a/src/vmwaremodule.c b/src/vmwaremodule.c
index caa7d68..392062f 100644
--- a/src/vmwaremodule.c
+++ b/src/vmwaremodule.c
@@ -34,6 +34,11 @@
 #include <xf86drm.h>
 #endif
 
+#ifndef HAVE_XORG_SERVER_1_5_0
+#include <xf86_ansic.h>
+#include <xf86_libc.h>
+#endif
+
 /*
  * Defines and exported module info.
  */
@@ -188,7 +193,7 @@ vmware_chain_module(pointer opts)
 	gdev->driver = driver_name;
     }
 
-    xfree(gdevs);
+    free(gdevs);
 
     if (!matched) {
 	if (xf86LoadOneModule(driver_name, opts) == NULL) {
diff --git a/src/vmwarevideo.c b/src/vmwarevideo.c
index 8522383..7f78887 100644
--- a/src/vmwarevideo.c
+++ b/src/vmwarevideo.c
@@ -46,6 +46,11 @@
 
 #include <X11/extensions/Xv.h>
 
+#ifndef HAVE_XORG_SERVER_1_5_0
+#include <xf86_ansic.h>
+#include <xf86_libc.h>
+#endif
+
 #define MAKE_ATOM(a) MakeAtom(a, sizeof(a) - 1, TRUE)
 
 /*
@@ -334,7 +339,7 @@ vmwareOffscreenAllocate(VMWAREPtr pVMWARE, uint32 size)
         return NULL;
     }
 
-    memptr = xalloc(sizeof(VMWAREOffscreenRec));
+    memptr = malloc(sizeof(VMWAREOffscreenRec));
     if (!memptr) {
         return NULL;
     }
@@ -443,7 +448,7 @@ vmwareVideoInit(ScreenPtr pScreen)
         numAdaptors = 1;
         overlayAdaptors = &newAdaptor;
     } else {
-         newAdaptors = xalloc((numAdaptors + 1) *
+         newAdaptors = malloc((numAdaptors + 1) *
                               sizeof(XF86VideoAdaptorPtr*));
          if (!newAdaptors) {
             xf86XVFreeVideoAdaptorRec(newAdaptor);
@@ -463,7 +468,7 @@ vmwareVideoInit(ScreenPtr pScreen)
     }
 
     if (newAdaptors) {
-        xfree(newAdaptors);
+        free(newAdaptors);
     }
 
     xf86DrvMsg(pScrn->scrnIndex, X_INFO,
@@ -545,7 +550,7 @@ vmwareVideoSetup(ScrnInfoPtr pScrn)
         VmwareLog(("Not enough memory\n"));
         return NULL;
     }
-    du = xcalloc(1, VMWARE_VID_NUM_PORTS *
+    du = calloc(1, VMWARE_VID_NUM_PORTS *
         (sizeof(DevUnion) + sizeof(VMWAREVideoRec)));
 
     if (!du) {
@@ -704,7 +709,7 @@ vmwareVideoInitAttributes(ScrnInfoPtr pScrn, VMWAREVideoPtr pVid,
 
     TRACEPOINT
 
-    fmtData = xcalloc(1, sizeof(VMWAREVideoFmtData));
+    fmtData = calloc(1, sizeof(VMWAREVideoFmtData));
     if (!fmtData) {
         return -1;
     }
diff --git a/src/vmwarexinerama.c b/src/vmwarexinerama.c
index 8b82eea..3476f43 100644
--- a/src/vmwarexinerama.c
+++ b/src/vmwarexinerama.c
@@ -43,6 +43,11 @@
 
 #include "vmware.h"
 
+#ifndef HAVE_XORG_SERVER_1_5_0
+#include <xf86_ansic.h>
+#include <xf86_libc.h>
+#endif
+
 
 /*
  *----------------------------------------------------------------------------
@@ -629,7 +634,7 @@ VMwareXineramaResetProc(ExtensionEntry* extEntry)
    VMWAREPtr pVMWARE = VMWAREPTR(pScrn);
 
    if (pVMWARE->xineramaState) {
-      xfree(pVMWARE->xineramaState);
+      free(pVMWARE->xineramaState);
       pVMWARE->xineramaState = NULL;
       pVMWARE->xineramaNumOutputs = 0;
       pVMWARE->xinerama = FALSE;

commit 12e4577c020c6905d09459d833fd1c5313f1647b
Author: Thomas Hellstrom <thellstrom@vmware.com>
Date:   Fri Sep 3 11:19:01 2010 +0200

    vmwlegacy: Always scale screen dimensions to the initial DPI on modeswitch.
    
    When we switch mode we usually alter the size in a constant DPI environment
    rather than keeping the size constant and alter the DPI.
    
    Signed-off-by: Thomas Hellstrom <thellstrom@vmware.com>

diff --git a/src/vmware.c b/src/vmware.c
index 1327d35..599ac07 100644
--- a/src/vmware.c
+++ b/src/vmware.c
@@ -74,6 +74,8 @@ char rcsId_vmware[] =
 #error "PCI_VENDOR_VMWARE is wrong, update it from vm_device_version.h"
 #endif
 
+#define VMWARE_INCHTOMM 25.4
+
 /*
  * This is the only way I know to turn a #define of an integer constant into
  * a constant string.
@@ -1557,7 +1559,6 @@ vmwareIsRegionEqual(const RegionPtr reg1,
     return TRUE;
 }
 
-
 #if VMWARE_DRIVER_FUNC
 static Bool
 VMWareDriverFunc(ScrnInfoPtr pScrn,
@@ -1585,8 +1586,10 @@ VMWareDriverFunc(ScrnInfoPtr pScrn,
        * keep the DPI constant.
        */
       if (modemm && modemm->mode) {
-         modemm->mmWidth *= modemm->mode->HDisplay / (double)(modemm->virtX);
-         modemm->mmHeight *= modemm->mode->VDisplay / (double)(modemm->virtY);
+	  modemm->mmWidth *= (modemm->mode->HDisplay * VMWARE_INCHTOMM +
+			      pScrn->xDpi / 2)  / pScrn->xDpi;
+	  modemm->mmHeight *= (modemm->mode->VDisplay * VMWARE_INCHTOMM +
+			       pScrn->yDpi / 2) / pScrn->yDpi;
       }
       return TRUE;
    default:
@@ -1863,8 +1866,17 @@ VMWAREScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv)
 
 static Bool
 VMWARESwitchMode(int scrnIndex, DisplayModePtr mode, int flags)
+
 {
-    return VMWAREModeInit(xf86Screens[scrnIndex], mode, TRUE);
+    ScrnInfoPtr pScrn = xf86Screens[scrnIndex];
+    ScreenPtr pScreen = pScrn->pScreen;
+
+    pScreen->mmWidth = (pScreen->width * VMWARE_INCHTOMM +
+			pScrn->xDpi / 2) / pScrn->xDpi;
+    pScreen->mmHeight = (pScreen->height * VMWARE_INCHTOMM +
+			 pScrn->yDpi / 2) / pScrn->yDpi;
+
+    return VMWAREModeInit(pScrn, mode, TRUE);
 }
 
 static Bool

commit 81a0a1a37e703296d109022bb76a1291e84064fd
Author: Thomas Hellstrom <thellstrom@vmware.com>
Date:   Wed Sep 1 07:58:18 2010 +0200

    vmware: Handle chain-loader failures gracefully.
    
    If the vmwlegacy driver wasn't present when expected, that would
    leave the X server in a confused state. Thus report loading errors properly
    back to the X server.
    
    Signed-off-by: Thomas Hellstrom <thellstrom@vmware.com>

diff --git a/src/vmwaremodule.c b/src/vmwaremodule.c
index b6c3adf..caa7d68 100644
--- a/src/vmwaremodule.c
+++ b/src/vmwaremodule.c
@@ -152,7 +152,7 @@ err:
     return FALSE;
 }
 
-static void
+static Bool
 vmware_chain_module(pointer opts)
 {
     int vmwlegacy_devices;
@@ -163,6 +163,7 @@ vmware_chain_module(pointer opts)
     GDevPtr *gdevs;
     GDevPtr gdev;
     int i;
+    pointer ret;
 
     vmware_devices = xf86MatchDevice(VMWARE_DRIVER_NAME, &gdevs);
     vmwgfx_devices = xf86MatchDevice(VMWGFX_DRIVER_NAME, NULL);
@@ -189,8 +190,16 @@ vmware_chain_module(pointer opts)
 
     xfree(gdevs);
 
-    if (!matched)
-	xf86LoadOneModule(driver_name, opts);
+    if (!matched) {
+	if (xf86LoadOneModule(driver_name, opts) == NULL) {
+	    xf86DrvMsg(-1, X_ERROR, "%s: Unexpected failure while "
+		       "loading the \"%s\" driver. Giving up.\n",
+		       VMWARE_DRIVER_NAME, driver_name);
+	    return FALSE;
+	}
+    }
+
+    return TRUE;
 }
 
 
@@ -221,9 +230,13 @@ vmware_setup(pointer module, pointer opts, int *errmaj, int *errmin)
 	setupDone = 1;
 
 	/* Chain load the real driver */
-	vmware_chain_module(opts);
-
-	return (pointer) 1;
+	if (vmware_chain_module(opts))
+	    return (pointer) 1;
+	else {
+	    if (errmaj)
+		*errmaj = LDR_NOSUBENT;
+	    return NULL;
+	}
     } else {
 	if (errmaj)
 	    *errmaj = LDR_ONCEONLY;

commit 2a72ea7a1b1519451350e0741d145f513124a208
Author: Gaetan Nadon <memsize@videotron.ca>
Date:   Wed Aug 18 10:57:02 2010 -0400

    vmwarectrl: rework standalone package as a subdir of driver
    
    vmwarectrl is a unit test client tool for developers.
    By default, it is not built unless --enable-vmwarectrl-client is used.
    
    Acked-by: Thomas Hellstrom <thellstrom@vmware.com>
    Signed-off-by: Gaetan Nadon <memsize@videotron.ca>

diff --git a/Makefile.am b/Makefile.am
index 00c154d..093e9f5 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -18,7 +18,7 @@
 #  IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
 #  CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 
-SUBDIRS = src man
+SUBDIRS = src man vmwarectrl
 MAINTAINERCLEANFILES = ChangeLog INSTALL
 .PHONY: ChangeLog INSTALL
 
diff --git a/configure.ac b/configure.ac
index 52335e7..7249ca1 100644
--- a/configure.ac
+++ b/configure.ac
@@ -56,6 +56,13 @@ AC_ARG_WITH(xorg-module-dir,
             [moduledir="$withval"],
             [moduledir="$libdir/xorg/modules"])
 
+# Define a configure option to build the vmwarectrl client tool
+AC_ARG_ENABLE(vmwarectrl-client,
+              AS_HELP_STRING([--enable-vmwarectrl-client],
+                             [Enable vmwarectrl client (default: disabled)]),
+                             [VMWARECTRL=$enableval], [VMWARECTRL=no])
+AM_CONDITIONAL(BUILD_VMWARECTRL, [test "x$VMWARECTRL" = xyes])
+
 # Store the list of server defined optional extensions in REQUIRED_MODULES
 XORG_DRIVER_CHECK_EXT(RANDR, randrproto)
 XORG_DRIVER_CHECK_EXT(RENDER, renderproto)
@@ -86,6 +93,9 @@ PKG_CHECK_EXISTS([xorg-server >= 1.7.0],
                  [AC_DEFINE([HAVE_XORG_SERVER_1_7_0], 1,
                  [Has version 1.7.0 or greater of the Xserver])])
 
+# Obtain compiler/linker options for the vmwarectrl client tool
+PKG_CHECK_MODULES(X11, x11 xext)
+
 # Checks for libraries.
 
 save_CFLAGS="$CFLAGS"
@@ -109,6 +119,7 @@ AC_SUBST([DRIVER_NAME])
 AC_CONFIG_FILES([
                 Makefile
                 src/Makefile
+                vmwarectrl/Makefile
                 man/Makefile
 ])
 AC_OUTPUT
diff --git a/vmwarectrl/AUTHORS b/vmwarectrl/AUTHORS
deleted file mode 100644
index 80d256f..0000000
--- a/vmwarectrl/AUTHORS
+++ /dev/null
@@ -1 +0,0 @@
-Philip Langdale <plangdale@vmware.com>
diff --git a/vmwarectrl/COPYING b/vmwarectrl/COPYING
deleted file mode 100644
index 6635b04..0000000
--- a/vmwarectrl/COPYING
+++ /dev/null
@@ -1,26 +0,0 @@
-/*
- * Copyright 2006 by VMware, Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
- * THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR
- * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
- * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
- * OTHER DEALINGS IN THE SOFTWARE.
- *
- * Except as contained in this notice, the name of the copyright holder(s)
- * and author(s) shall not be used in advertising or otherwise to promote
- * the sale, use or other dealings in this Software without prior written
- * authorization from the copyright holder(s) and author(s).
- */
diff --git a/vmwarectrl/ChangeLog b/vmwarectrl/ChangeLog
deleted file mode 100644
index 81a3e5b..0000000
--- a/vmwarectrl/ChangeLog
+++ /dev/null
@@ -1,8 +0,0 @@
-2006-10-11  Philip Langdale  <plangdale@vmware.com>
-
-	* 0.2 Release.
-	Adds support for VMWARE_CTRL 0.2
-
-2006-02-07  Philip Langdale  <plangdale@vmware.com>
-
-	* Initial 0.1 Release.
diff --git a/vmwarectrl/INSTALL b/vmwarectrl/INSTALL
deleted file mode 100644
index 54caf7c..0000000
--- a/vmwarectrl/INSTALL
+++ /dev/null
@@ -1,229 +0,0 @@
-Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002 Free Software
-Foundation, Inc.
-
-   This file is free documentation; the Free Software Foundation gives
-unlimited permission to copy, distribute and modify it.
-
-Basic Installation
-==================
-
-   These are generic installation instructions.


Reply to: