summaryrefslogtreecommitdiff
path: root/src/vmware.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/vmware.c')
-rw-r--r--src/vmware.c128
1 files changed, 1 insertions, 127 deletions
diff --git a/src/vmware.c b/src/vmware.c
index 70c6730..3f5e486 100644
--- a/src/vmware.c
+++ b/src/vmware.c
@@ -40,6 +40,7 @@ char rcsId_vmware[] =
#include "vm_device_version.h"
#include "svga_modes.h"
#include "vmware_bootstrap.h"
+#include "vmware_common.h"
#ifndef HAVE_XORG_SERVER_1_5_0
#include <xf86_ansic.h>
@@ -284,133 +285,6 @@ RewriteTagString(const char *istr, char *ostr, int osize)
}
#endif
-static int
-VMWAREParseTopologyElement(ScrnInfoPtr pScrn,
- unsigned int output,
- const char *elementName,
- const char *element,
- const char *expectedTerminators,
- Bool needTerminator,
- unsigned int *outValue)
-{
- char buf[10] = {0, };
- size_t i = 0;
- int retVal = -1;
- const char *str = element;
-
- for (i = 0; str[i] >= '0' && str[i] <= '9'; i++);
- if (i == 0) {
- xf86DrvMsg(pScrn->scrnIndex, X_INFO, "Output %u: unable to parse %s.\n",
- output, elementName);
- goto exit;
- }
-
- strncpy(buf, str, i);
- *outValue = atoi(buf);
-
- if (*outValue > (unsigned short)-1) {
- xf86DrvMsg(pScrn->scrnIndex, X_INFO, "Output %u: %s must be less than %hu.\n",
- output, elementName, (unsigned short)-1);
- goto exit;
- }
-
- str += i;
-
- if (needTerminator || str[0] != '\0') {
- Bool unexpected = TRUE;
-
- for (i = 0; i < strlen(expectedTerminators); i++) {
- if (str[0] == expectedTerminators[i]) {
- unexpected = FALSE;
- }
- }
-
- if (unexpected) {
- xf86DrvMsg(pScrn->scrnIndex, X_INFO,
- "Output %u: unexpected character '%c' after %s.\n",
- output, str[0], elementName);
- goto exit;
- } else {
- str++;
- }
- }
-
- retVal = str - element;
-
- exit:
- return retVal;
-}
-
-static xXineramaScreenInfo *
-VMWAREParseTopologyString(ScrnInfoPtr pScrn,
- const char *topology,
- unsigned int *retNumOutputs,
- const char info[])
-{
- xXineramaScreenInfo *extents = NULL;
- unsigned int numOutputs = 0;
- const char *str = topology;
-
- xf86DrvMsg(pScrn->scrnIndex, X_INFO, "Parsing %s topology: Starting...\n",
- info);
-
- do {
- unsigned int x, y, width, height;
- int i;
-
- i = VMWAREParseTopologyElement(pScrn, numOutputs, "width", str, "xX", TRUE, &width);
- if (i == -1) {
- goto error;
- }
- str += i;
-
- i = VMWAREParseTopologyElement(pScrn, numOutputs, "height", str, "+", TRUE, &height);
- if (i == -1) {
- goto error;
- }
- str += i;
-
- i= VMWAREParseTopologyElement(pScrn, numOutputs, "X offset", str, "+", TRUE, &x);
- if (i == -1) {
- goto error;
- }
- str += i;
-
- i = VMWAREParseTopologyElement(pScrn, numOutputs, "Y offset", str, ";", FALSE, &y);
- if (i == -1) {
- goto error;
- }
- str += i;
-
- xf86DrvMsg(pScrn->scrnIndex, X_INFO, "Output %u: %ux%u+%u+%u\n",
- numOutputs, width, height, x, y);
-
- numOutputs++;
- extents = realloc(extents, numOutputs * sizeof (xXineramaScreenInfo));
- extents[numOutputs - 1].x_org = x;
- extents[numOutputs - 1].y_org = y;
- extents[numOutputs - 1].width = width;
- extents[numOutputs - 1].height = height;
- } while (*str != 0);
-
- xf86DrvMsg(pScrn->scrnIndex, X_INFO, "Parsing %s topology: Succeeded.\n",
- info);
- goto exit;
-
- error:
- xf86DrvMsg(pScrn->scrnIndex, X_INFO, "Parsing %s topology: Failed.\n",
- info);
-
- free(extents);
- extents = NULL;
- numOutputs = 0;
-
- exit:
- *retNumOutputs = numOutputs;
- return extents;
-}
-
-
static Bool
VMWAREPreInit(ScrnInfoPtr pScrn, int flags)
{