diff options
author | Egbert Eich <eich@suse.de> | 2004-03-14 08:34:49 +0000 |
---|---|---|
committer | Egbert Eich <eich@suse.de> | 2004-03-14 08:34:49 +0000 |
commit | dae90c3af98edd5e95289abd930b3872c996c503 (patch) | |
tree | 73da96153db70cfccc9f27428a0eae235574e011 /hw/vfb | |
parent | 4e996f9d76f51e9b1e33bef610bb9c2a746c8b9c (diff) |
Importing vendor version xf86-4_4_99_1 on Sun Mar 14 00:26:39 PST 2004xf86-4_4_99_1
Diffstat (limited to 'hw/vfb')
-rw-r--r-- | hw/vfb/InitInput.c | 2 | ||||
-rw-r--r-- | hw/vfb/InitOutput.c | 67 | ||||
-rw-r--r-- | hw/vfb/Xvfb.man.pre | 32 |
3 files changed, 81 insertions, 20 deletions
diff --git a/hw/vfb/InitInput.c b/hw/vfb/InitInput.c index fdece85d7..345526d19 100644 --- a/hw/vfb/InitInput.c +++ b/hw/vfb/InitInput.c @@ -26,7 +26,7 @@ other dealings in this Software without prior written authorization from The Open Group. */ -/* $XFree86: xc/programs/Xserver/hw/vfb/InitInput.c,v 3.9 2001/12/14 19:59:45 dawes Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/vfb/InitInput.c,v 3.10 2003/11/16 03:16:59 dawes Exp $ */ #include "X11/X.h" #define NEED_EVENTS diff --git a/hw/vfb/InitOutput.c b/hw/vfb/InitOutput.c index 59283bdf3..1e751a51d 100644 --- a/hw/vfb/InitOutput.c +++ b/hw/vfb/InitOutput.c @@ -26,7 +26,17 @@ other dealings in this Software without prior written authorization from The Open Group. */ -/* $XFree86: xc/programs/Xserver/hw/vfb/InitOutput.c,v 3.25 2003/11/15 04:01:56 dawes Exp $ */ + +/* + * The screen origin code is: + * + * Copyright (c) 2004 by The XFree86 Project, Inc + * Rights as per the XFree86 1.1 licence + * (http://www.xfree86.org/legal/licenses.html). + * + */ + +/* $XFree86: xc/programs/Xserver/hw/vfb/InitOutput.c,v 3.27 2004/03/05 03:20:48 dawes Exp $ */ #if defined(WIN32) #include <X11/Xwinsock.h> @@ -80,7 +90,9 @@ typedef struct int width; int paddedBytesWidth; int paddedWidth; + int xOrigin; int height; + int yOrigin; int depth; int bitsPerPixel; int sizeInBytes; @@ -254,7 +266,7 @@ OsVendorFatalError() void ddxUseMsg() { - ErrorF("-screen scrn WxHxD set screen's width, height, depth\n"); + ErrorF("-screen n WxHxD[@x,y] set screen's width, height, depth, origin\n"); ErrorF("-pixdepths list-of-int support given pixmap depths\n"); #ifdef RENDER ErrorF("+/-render turn on/of RENDER extension support" @@ -288,6 +300,7 @@ ddxProcessArgument(int argc, char *argv[], int i) if (strcmp (argv[i], "-screen") == 0) /* -screen n WxHxD */ { int screenNum; + char *s; if (i + 2 >= argc) UseMsg(); screenNum = atoi(argv[i+1]); if (screenNum < 0 || screenNum >= MAXSCREENS) @@ -295,14 +308,31 @@ ddxProcessArgument(int argc, char *argv[], int i) ErrorF("Invalid screen number %d\n", screenNum); UseMsg(); } - if (3 != sscanf(argv[i+2], "%dx%dx%d", + s = strtok(argv[i+2], "@"); + if (3 != sscanf(s, "%dx%dx%d", &vfbScreens[screenNum].width, &vfbScreens[screenNum].height, &vfbScreens[screenNum].depth)) { - ErrorF("Invalid screen configuration %s\n", argv[i+2]); + ErrorF("Invalid screen configuration %s\n", s); UseMsg(); } + s = strtok(NULL, "@"); + if (s) + { + if (2 != sscanf(s, "%d,%d", + &vfbScreens[screenNum].xOrigin, + &vfbScreens[screenNum].yOrigin)) + { + ErrorF("Invalid screen position %s\n", s); + UseMsg(); + } + } + else + { + vfbScreens[screenNum].xOrigin = -1; + vfbScreens[screenNum].yOrigin = -1; + } if (screenNum >= vfbNumScreens) vfbNumScreens = screenNum + 1; @@ -1033,6 +1063,35 @@ InitOutput(ScreenInfo *screenInfo, int argc, char **argv) } } + /* + * Setup the Xinerama Layout. If the screen origins are not specified + * explicitly, assume that screen n is to the right of screen n - 1. + * It is safe to set this up even when Xinerama is not used. + */ + + for (i = 0; i < vfbNumScreens; i++) + { + if (vfbScreens[i].xOrigin < 0 || vfbScreens[i].yOrigin < 0) + { + if (i == 0) + { + dixScreenOrigins[i].x = 0; + dixScreenOrigins[i].y = 0; + } + else + { + dixScreenOrigins[i].x = dixScreenOrigins[i - 1].x + + vfbScreens[i - 1].width; + dixScreenOrigins[i].y = dixScreenOrigins[i - 1].y; + } + } + else + { + dixScreenOrigins[i].x = vfbScreens[i].xOrigin; + dixScreenOrigins[i].y = vfbScreens[i].yOrigin; + } + } + } /* end InitOutput */ /* this is just to get the server to link on AIX */ diff --git a/hw/vfb/Xvfb.man.pre b/hw/vfb/Xvfb.man.pre index 64b6ea48d..5e7168a1c 100644 --- a/hw/vfb/Xvfb.man.pre +++ b/hw/vfb/Xvfb.man.pre @@ -23,7 +23,7 @@ .\" other dealings in this Software without prior written authorization .\" from The Open Group. .\" -.\" $XFree86: xc/programs/Xserver/hw/vfb/Xvfb.man,v 1.9 2001/12/14 19:59:45 dawes Exp $ +.\" $XFree86: xc/programs/Xserver/hw/vfb/Xvfb.man,v 1.11 2004/03/05 03:20:48 dawes Exp $ .\" .TH XVFB 1 __xorgversion__ .SH NAME @@ -58,30 +58,32 @@ To build \fIXvfb\fP, put the following in your host.def and remake. In addition to the normal server options described in the \fIXserver(1)\fP manual page, \fIXvfb\fP accepts the following command line switches: .TP 4 -.B "\-screen \fIscreennum\fP \fIWxHxD\fP" +.B "\-screen \fIscreennum\fP \fIW\fPx\fIH\fPx\fID\fP\fR[\fP@\fIx\fP,\fIy\fP\fR]\fP" This option creates screen \fIscreennum\fP and sets its width, height, -and depth to W, H, and D respectively. By default, only screen 0 exists -and has the dimensions 1280x1024x8. +and depth to W, H, and D respectively, and optionally the screen origin +(for Xinerama purposes) to (x,y). By default, only screen 0 exists and +has the dimensions 1280x1024x8. If a screen origin is not specified +when using Xinerama, the default is for screen +.I N +to be positioned to the right of screen +.IR N\-1 . .TP 4 .B "\-pixdepths \fIlist-of-depths\fP" This option specifies a list of pixmap depths that the server should support in addition to the depths implied by the supported screens. -\fIlist-of-depths\fP is a space-separated list of integers that can -have values from 1 to 32. +\fIlist-of-depths\fP is a space-separated list of integers that can have +values from 1 to 32. .TP 4 .B "\-fbdir \fIframebuffer-directory\fP" This option specifies the directory in which the memory mapped files -containing the framebuffer memory should be created. -See FILES. -This option only exists on machines that have the mmap and msync system -calls. +containing the framebuffer memory should be created. See FILES. This +option only exists on machines that have the mmap and msync system calls. .TP 4 .B "\-shmem" -This option specifies that the framebuffer should be put in shared memory. -The shared memory ID for each screen will be printed by the server. -The shared memory is in xwd format. -This option only exists on machines that support the System V shared memory -interface. +This option specifies that the framebuffer should be put in shared +memory. The shared memory ID for each screen will be printed by the +server. The shared memory is in xwd format. This option only exists +on machines that support the System V shared memory interface. .PP If neither \fB\-shmem\fP nor \fB\-fbdir\fP is specified, the framebuffer memory will be allocated with malloc(). |