diff options
author | Egbert Eich <eich@suse.de> | 2004-01-29 08:08:57 +0000 |
---|---|---|
committer | Egbert Eich <eich@suse.de> | 2004-01-29 08:08:57 +0000 |
commit | 3c64b65d805915e5c5628663113c54c3e9c3013b (patch) | |
tree | dff84b1be15ae6a4658af2168ca50278bf044b5a | |
parent | 2ec70aa70133190ad31a83114fdb9a218e6aa8e6 (diff) |
Importing vendor version xf86-012804-2330 on Thu Jan 29 00:06:33 PST 2004xf86-012804-2330
39 files changed, 765 insertions, 256 deletions
diff --git a/Xprint/pcl/PclSFonts.c b/Xprint/pcl/PclSFonts.c index d1ad8dc29..3c7cf05af 100644 --- a/Xprint/pcl/PclSFonts.c +++ b/Xprint/pcl/PclSFonts.c @@ -45,7 +45,7 @@ not be used in advertising or otherwise to promote the sale, use or other dealings in this Software without prior written authorization from said copyright holders. */ -/* $XFree86: xc/programs/Xserver/Xprint/pcl/PclSFonts.c,v 1.7 2003/10/29 22:11:00 tsi Exp $ */ +/* $XFree86: xc/programs/Xserver/Xprint/pcl/PclSFonts.c,v 1.8 2003/12/22 17:48:05 tsi Exp $ */ #include <stdio.h> @@ -58,7 +58,6 @@ static short tmp2; #define ESC 0x1b #define SYMBOL_SET 277 -#define MAX_CINDEX 255 static unsigned int PclDownloadChar(FILE *,PclCharDataPtr,unsigned short,unsigned char); static unsigned int PclDownloadHeader(FILE *, PclFontDescPtr, unsigned short); @@ -117,8 +116,6 @@ PclDownloadSoftFont16( } pfh->index[row][col].fid = pfh->cur_fid; pfh->index[row][col].cindex = pfh->cur_cindex++; - if ( pfh->cur_cindex > MAX_CINDEX ) - pfh->cur_cindex = 0; PclDownloadChar(fp, pcd, pfh->index[row][col].fid, pfh->index[row][col].cindex); } diff --git a/dix/events.c b/dix/events.c index 2131b5fd4..2853e1013 100644 --- a/dix/events.c +++ b/dix/events.c @@ -1,4 +1,4 @@ -/* $XFree86: xc/programs/Xserver/dix/events.c,v 3.50 2003/11/17 22:20:34 dawes Exp $ */ +/* $XFree86: xc/programs/Xserver/dix/events.c,v 3.52 2004/01/23 07:23:34 herrb Exp $ */ /************************************************************ Copyright 1987, 1998 The Open Group @@ -944,7 +944,8 @@ EnqueueEvent(xE, device, count) #ifdef XKB /* Fix for key repeating bug. */ - if (xE->u.u.type == KeyRelease) + if (device->key != NULL && device->key->xkbInfo != NULL && + xE->u.u.type == KeyRelease) AccessXCancelRepeatKey(device->key->xkbInfo, xE->u.u.detail); #endif @@ -1647,8 +1648,11 @@ DeliverEventsToWindow(pWin, pEvents, count, filter, grab, mskidx) #ifdef XINPUT else { - if (((type == DeviceMotionNotify) || (type == DeviceButtonPress)) && - deliveries) + if (((type == DeviceMotionNotify) +#ifdef XKB + || (type == DeviceButtonPress) +#endif + ) && deliveries) CheckDeviceGrabAndHintWindow (pWin, type, (deviceKeyButtonPointer*) pEvents, grab, client, deliveryMask); @@ -2367,10 +2371,10 @@ CheckPassiveGrabsOnWindow( xkbi= gdev->key->xkbInfo; #endif tempGrab.modifierDevice = grab->modifierDevice; - if (device == grab->modifierDevice && - (xE->u.u.type == KeyPress -#ifdef XINPUT - || xE->u.u.type == DeviceKeyPress + if ((device == grab->modifierDevice) && + ((xE->u.u.type == KeyPress) +#if defined(XINPUT) && defined(XKB) + || (xE->u.u.type == DeviceKeyPress) #endif )) tempGrab.modifiersDetail.exact = @@ -2455,11 +2459,11 @@ CheckDeviceGrabs(device, xE, checkFirst, count) register WindowPtr pWin = NULL; register FocusClassPtr focus = device->focus; - if ((xE->u.u.type == ButtonPress -#ifdef XINPUT - || xE->u.u.type == DeviceButtonPress + if (((xE->u.u.type == ButtonPress) +#if defined(XINPUT) && defined(XKB) + || (xE->u.u.type == DeviceButtonPress) #endif - ) && device->button->buttonsDown != 1) + ) && (device->button->buttonsDown != 1)) return FALSE; i = checkFirst; diff --git a/doc/Xserver.man.pre b/doc/Xserver.man.pre index 972280ba0..4a24ac9a2 100644 --- a/doc/Xserver.man.pre +++ b/doc/Xserver.man.pre @@ -22,7 +22,7 @@ .\" not be used in advertising or otherwise to promote the sale, use or .\" other dealings in this Software without prior written authorization .\" from The Open Group. -.\" $XFree86: xc/programs/Xserver/Xserver.man,v 3.29 2003/09/08 14:25:26 eich Exp $ +.\" $XFree86: xc/programs/Xserver/Xserver.man,v 3.32 2004/01/12 21:43:19 herrb Exp $ .\" shorthand for double quote that works everywhere. .ds q \N'34' .TH XSERVER 1 __xorgversion__ @@ -37,16 +37,17 @@ is the generic name for the X Window System display server. It is frequently a link or a copy of the appropriate server binary for driving the most frequently used server on a given machine. .SH "STARTING THE SERVER" -The X server is usually started from the X Display Manager program \fIxdm\fP(1). +The X server is usually started from the X Display Manager program +\fIxdm\fP(1) or a similar display manager program. This utility is run from the system boot files and takes care of keeping the server running, prompting for usernames and passwords, and starting up the user sessions. .PP Installations that run more than one window system may need to use the -\fIxinit\fP(1) utility instead of \fIxdm\fP. However, \fIxinit\fP is +\fIxinit\fP(1) utility instead of a display manager. However, \fIxinit\fP is to be considered a tool for building startup scripts and is not intended for use by end users. Site administrators are \fBstrongly\fP -urged to use \fIxdm\fP, or build other interfaces for novice users. +urged to use a display manager, or build other interfaces for novice users. .PP The X server may also be started directly by the user, though this method is usually reserved for testing and is not recommended for @@ -95,8 +96,8 @@ Audit lines are sent as standard error output. .TP 8 .B \-auth \fIauthorization-file\fP specifies a file which contains a collection of authorization records used -to authenticate access. See also the \fIxdm\fP and \fIXsecurity\fP manual -pages. +to authenticate access. See also the \fIxdm\fP(1) and +\fIXsecurity\fP(__miscmansuffix__) manual pages. .TP 8 .B bc disables certain kinds of error checking, for bug compatibility with @@ -139,15 +140,23 @@ different from the user's real uid. .B \-core causes the server to generate a core dump on fatal errors. .TP 8 +.B \-deferglyphs \fIwhichfonts\fP +specifies the types of fonts for which the server should attempt to use +deferred glyph loading. \fIwhichfonts\fP can be all (all fonts), +none (no fonts), or 16 (16 bit fonts only). +.TP 8 .B \-dpi \fIresolution\fP sets the resolution for all screens, in dots per inch. To be used when the server cannot determine the screen size(s) from the hardware. .TP 8 -.B \-deferglyphs \fIwhichfonts\fP -specifies the types of fonts for which the server should attempt to use -deferred glyph loading. \fIwhichfonts\fP can be all (all fonts), -none (no fonts), or 16 (16 bit fonts only). +.B dpms +enables DPMS (display power management services), where supported. The +default state is platform and configuration specific. +.TP 8 +.B \-dpms +disables DPMS (display power management services). The default state +is platform and configuration specific. .TP 8 .B \-f \fIvolume\fP sets feep (bell) volume (allowable range: 0-100). @@ -161,6 +170,8 @@ sets the default font. .B \-fp \fIfontPath\fP sets the search path for fonts. This path is a comma separated list of directories which the X server searches for font databases. +See the FONTS section of this manual page for more information and the default +list. .TP 8 .B \-help prints a usage message. @@ -168,6 +179,11 @@ prints a usage message. .B \-I causes all remaining command line arguments to be ignored. .TP 8 +.B \-maxbigreqsize \fIsize\fP +sets the maxmium big request to +.I size +MB. +.TP 8 .B \-nolisten \fItrans-type\fP disables a transport type. For example, TCP/IP connections can be disabled with @@ -187,7 +203,11 @@ sets screen-saver pattern cycle time in minutes. .B \-pn permits the server to continue running if it fails to establish all of its well-known sockets (connection points for clients), but -establishes at least one. +establishes at least one. This option is set by default. +.TP 8 +.B \-nopn +causes the server to exit if it fails to establish all of its well-known +sockets (connection points for clients). .TP 8 .B \-r turns off auto-repeat. @@ -243,7 +263,7 @@ This is a no-op for most implementations. .TP 8 .B [+-]xinerama enables(+) or disables(-) the XINERAMA extension. The default state is -disabled. +platform and configuration specific. .SH SERVER DEPENDENT OPTIONS Some X servers accept the following options: .TP 8 @@ -288,6 +308,14 @@ use a gray map of 13 color cells for the X render extension. .I color use a color cube of at most 4*4*4 colors (that is 64 color cells). .RE +.TP 8 +.B \-dumbSched +disables smart scheduling on platforms that support the smart scheduler. +.TP +.B \-schedInterval \fIinterval\fP +sets the smart scheduler's scheduling interval to +.I interval +milliseconds. .SH XDMCP OPTIONS X servers that support XDMCP have the following options. See the \fIX Display Manager Control Protocol\fP specification for more @@ -300,6 +328,7 @@ enables XDMCP and sends Query packets to the specified .B \-broadcast enable XDMCP and broadcasts BroadcastQuery packets to the network. The first responding display manager will be chosen for the session. +.TP 8 .B \-multicast [\fIaddress\fP [\fIhop count\fP]] Enable XDMCP and multicast BroadcastQuery packets to the network. The first responding display manager is chosen for the session. If an @@ -316,8 +345,8 @@ enables XDMCP and send IndirectQuery packets to the specified .TP 8 .B \-port \fIport-number\fP uses the specified \fIport-number\fP for XDMCP packets, instead of the -default. This option must be specified before any \-query, \-broadcast or -\-indirect options. +default. This option must be specified before any \-query, \-broadcast, +\-multicast, or \-indirect options. .TP 8 .B \-from \fIlocal-address\fP specifies the local address to connect from (useful if the connecting host @@ -344,7 +373,10 @@ Yet another XDMCP specific value, this one allows the display manager to identify each display so that it can locate the shared key. .SH XKEYBOARD OPTIONS X servers that support the XKEYBOARD (a.k.a. \*qXKB\*q) extension accept the -following options: +following options. All layout files specified on the command line must be +located in the XKB base directory or a subdirectory, and specified as the +relative path from the XKB base directory. The default XKB base directory is +.IR __projectroot__/lib/X11/xkb . .TP 8 .B [+-]kb enables(+) or disables(-) the XKEYBOARD extension. @@ -599,13 +631,14 @@ property Woo-Hoo OhBoy = "*son" ad The X server supports client connections via a platform-dependent subset of the following transport types: TCP\/IP, Unix Domain sockets, DECnet, and several varieties of SVR4 local connections. See the DISPLAY -NAMES section of the \fIX(__miscmansuffix__)\fP manual page to learn how to +NAMES section of the \fIX\fP(__miscmansuffix__) manual page to learn how to specify which transport type clients should try to use. .SH GRANTING ACCESS The X server implements a platform-dependent subset of the following authorization protocols: MIT-MAGIC-COOKIE-1, XDM-AUTHORIZATION-1, -SUN-DES-1, and MIT-KERBEROS-5. See the \fIXsecurity\fP(__miscmansuffix__) -manual page for information on the operation of these protocols. +XDM-AUTHORIZATION-2, SUN-DES-1, and MIT-KERBEROS-5. See the +\fIXsecurity\fP(__miscmansuffix__) manual page for information on the +operation of these protocols. .PP Authorization data required by the above protocols is passed to the server in a private file named with the \fB\-auth\fP command line @@ -626,15 +659,17 @@ this list initially consists of the host on which the server is running as well as any machines listed in the file \fI/etc/X\fBn\fI.hosts\fR, where \fBn\fP is the display number of the server. Each line of the file should contain either an Internet hostname (e.g. expo.lcs.mit.edu) or a DECnet -hostname in double colon format (e.g. hydra::). There should be no leading -or trailing spaces on any lines. For example: +hostname in double colon format (e.g. hydra::) or a complete name in the format +\fIfamily\fP:\fIname\fP as described in the \fIxhost\fP(1) manual page. +There should be no leading or trailing spaces on any lines. For example: .sp .in +8 .nf joesworkstation corporate.company.com star:: -bigcpu:: +inet:bigcpu +local: .fi .in -8 .PP @@ -691,11 +726,7 @@ the X server uses when trying to open a font is controlled by the \fIfont path\fP. .LP The default font path is -__projectroot__/lib/X11/fonts/misc/, -__projectroot__/lib/X11/fonts/Speedo/, -__projectroot__/lib/X11/fonts/Type1/, -__projectroot__/lib/X11/fonts/75dpi/, -__projectroot__/lib/X11/fonts/100dpi/" . +__default_font_path__ . .LP The font path can be set with the \fB\-fp\fP option or by \fIxset\fP(1) after the server has started. @@ -707,7 +738,7 @@ Initial access control list for display number \fBn\fP .IR __projectroot__/lib/X11/fonts/misc , __projectroot__/lib/X11/fonts/75dpi , __projectroot__/lib/X11/fonts/100dpi Bitmap font directories .TP 30 -.IR __projectroot__/lib/X11/fonts/Speedo , __projectroot__/lib/X11/fonts/Type1 +.IR __projectroot__/lib/X11/fonts/TTF , __projectroot__/lib/X11/fonts/Speedo , __projectroot__/lib/X11/fonts/Type1 Outline font directories .TP 30 .I __projectroot__/lib/X11/rgb.txt @@ -720,7 +751,7 @@ Unix domain socket for display number \fBn\fP Kerberos 5 replay cache for display number \fBn\fP .TP 30 .I /usr/adm/X\fBn\fPmsgs -Error log file for display number \fBn\fP if run from \fIinit\fP(8) +Error log file for display number \fBn\fP if run from \fIinit\fP(__adminmansuffix__) .TP 30 .I __projectroot__/lib/X11/xdm/xdm-errors Default error log file if the server is run from \fIxdm\fP(1) @@ -732,15 +763,15 @@ Protocols: .I "The X Font Service Protocol," .I "X Display Manager Control Protocol" .PP -Fonts: \fIbdftopcf\fP(1), \fImkfontdir\fP(1), \fIxfs\fP(1), -\fIxlsfonts\fP(1), \fIxfontsel\fP(1), \fIxfd\fP(1), +Fonts: \fIbdftopcf\fP(1), \fImkfontdir\fP(1), \fImkfontscale\fP(1), +\fIxfs\fP(1), \fIxlsfonts\fP(1), \fIxfontsel\fP(1), \fIxfd\fP(1), .I "X Logical Font Description Conventions" .PP Security: \fIXsecurity\fP(__miscmansuffix__), \fIxauth\fP(1), \fIXau\fP(1), -\fIxdm\fP(1), \fIxhost\fP(1), \fIxfwp\fP(1) +\fIxdm\fP(1), \fIxhost\fP(1), \fIxfwp\fP(1), .I "Security Extension Specification" .PP -Starting the server: \fIxdm(1)\fP, \fIxinit\fP(1) +Starting the server: \fIxdm\fP(1), \fIxinit\fP(1) .PP Controlling the server once started: \fIxset\fP(1), \fIxsetroot\fP(1), \fIxhost\fP(1) diff --git a/fb/fbcopy.c b/fb/fbcopy.c index 74d07a1bf..6dd48a786 100644 --- a/fb/fbcopy.c +++ b/fb/fbcopy.c @@ -21,7 +21,7 @@ * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR * PERFORMANCE OF THIS SOFTWARE. */ -/* $XFree86: xc/programs/Xserver/fb/fbcopy.c,v 1.13 2003/11/10 18:21:47 tsi Exp $ */ +/* $XFree86: xc/programs/Xserver/fb/fbcopy.c,v 1.14 2003/12/28 17:22:25 alanh Exp $ */ #include "fb.h" #ifdef IN_MODULE @@ -398,7 +398,10 @@ fbDoCopy (DrawablePtr pSrcDrawable, int dx; int dy; int numRects; - BoxRec box; + int box_x1; + int box_y1; + int box_x2; + int box_y2; Bool fastSrc = FALSE; /* for fast clipping with pixmap source */ Bool fastDst = FALSE; /* for fast clipping with one rect dest */ Bool fastExpose = FALSE; /* for fast exposures with pixmap source */ @@ -466,10 +469,10 @@ fbDoCopy (DrawablePtr pSrcDrawable, xOut += pDstDrawable->x; yOut += pDstDrawable->y; - box.x1 = xIn; - box.y1 = yIn; - box.x2 = xIn + widthSrc; - box.y2 = yIn + heightSrc; + box_x1 = xIn; + box_y1 = yIn; + box_x2 = xIn + widthSrc; + box_y2 = yIn + heightSrc; dx = xIn - xOut; dy = yIn - yOut; @@ -484,32 +487,32 @@ fbDoCopy (DrawablePtr pSrcDrawable, * clip the source; if regions extend beyond the source size, * make sure exposure events get sent */ - if (box.x1 < pSrcDrawable->x) + if (box_x1 < pSrcDrawable->x) { - box.x1 = pSrcDrawable->x; + box_x1 = pSrcDrawable->x; fastExpose = FALSE; } - if (box.y1 < pSrcDrawable->y) + if (box_y1 < pSrcDrawable->y) { - box.y1 = pSrcDrawable->y; + box_y1 = pSrcDrawable->y; fastExpose = FALSE; } - if (box.x2 > pSrcDrawable->x + (int) pSrcDrawable->width) + if (box_x2 > pSrcDrawable->x + (int) pSrcDrawable->width) { - box.x2 = pSrcDrawable->x + (int) pSrcDrawable->width; + box_x2 = pSrcDrawable->x + (int) pSrcDrawable->width; fastExpose = FALSE; } - if (box.y2 > pSrcDrawable->y + (int) pSrcDrawable->height) + if (box_y2 > pSrcDrawable->y + (int) pSrcDrawable->height) { - box.y2 = pSrcDrawable->y + (int) pSrcDrawable->height; + box_y2 = pSrcDrawable->y + (int) pSrcDrawable->height; fastExpose = FALSE; } /* Translate and clip the dst to the destination composite clip */ - box.x1 -= dx; - box.x2 -= dx; - box.y1 -= dy; - box.y2 -= dy; + box_x1 -= dx; + box_x2 -= dx; + box_y1 -= dy; + box_y2 -= dy; /* If the destination composite clip is one rectangle we can do the clip directly. Otherwise we have to create a full @@ -520,21 +523,26 @@ fbDoCopy (DrawablePtr pSrcDrawable, { BoxPtr pBox = REGION_RECTS(cclip); - if (box.x1 < pBox->x1) box.x1 = pBox->x1; - if (box.x2 > pBox->x2) box.x2 = pBox->x2; - if (box.y1 < pBox->y1) box.y1 = pBox->y1; - if (box.y2 > pBox->y2) box.y2 = pBox->y2; + if (box_x1 < pBox->x1) box_x1 = pBox->x1; + if (box_x2 > pBox->x2) box_x2 = pBox->x2; + if (box_y1 < pBox->y1) box_y1 = pBox->y1; + if (box_y2 > pBox->y2) box_y2 = pBox->y2; fastDst = TRUE; } } /* Check to see if the region is empty */ - if (box.x1 >= box.x2 || box.y1 >= box.y2) + if (box_x1 >= box_x2 || box_y1 >= box_y2) { REGION_NULL(pGC->pScreen, &rgnDst); } else { + BoxRec box; + box.x1 = box_x1; + box.y1 = box_y1; + box.x2 = box_x2; + box.y2 = box_y2; REGION_INIT(pGC->pScreen, &rgnDst, &box, 1); } diff --git a/hw/darwin/bundle/Swedish.lproj/MainMenu.nib/objects.nib b/hw/darwin/bundle/Swedish.lproj/MainMenu.nib/objects.nib Binary files differindex 0ace83098..116e0b316 100644 --- a/hw/darwin/bundle/Swedish.lproj/MainMenu.nib/objects.nib +++ b/hw/darwin/bundle/Swedish.lproj/MainMenu.nib/objects.nib diff --git a/hw/darwin/quartz/quartzKeyboard.c b/hw/darwin/quartz/quartzKeyboard.c index 8d580830b..eab86e27e 100644 --- a/hw/darwin/quartz/quartzKeyboard.c +++ b/hw/darwin/quartz/quartzKeyboard.c @@ -32,9 +32,7 @@ promote the sale, use or other dealings in this Software without prior written authorization. */ -/* $XFree86: xc/programs/Xserver/hw/darwin/quartz/quartzKeyboard.c,v 1.1 2003/11/01 08:13:08 torrey Exp $ */ - -#ifdef HAS_KL_API +/* $XFree86: xc/programs/Xserver/hw/darwin/quartz/quartzKeyboard.c,v 1.2 2004/01/19 01:22:47 torrey Exp $ */ #include "quartzCommon.h" @@ -45,6 +43,8 @@ #include "keysym.h" #include "keysym2ucs.h" +#ifdef HAS_KL_API + #define HACK_MISSING 1 #define HACK_KEYPAD 1 diff --git a/hw/xfree86/common/xf86.h b/hw/xfree86/common/xf86.h index e189e81d2..313d43015 100644 --- a/hw/xfree86/common/xf86.h +++ b/hw/xfree86/common/xf86.h @@ -1,4 +1,4 @@ -/* $XFree86: xc/programs/Xserver/hw/xfree86/common/xf86.h,v 3.172 2003/09/24 02:43:16 dawes Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/xfree86/common/xf86.h,v 3.173 2004/01/27 01:31:44 dawes Exp $ */ /* * Copyright (c) 1997-2003 by The XFree86 Project, Inc. @@ -57,7 +57,6 @@ extern int xf86PixmapIndex; extern Bool xf86ResAccessEnter; extern ScrnInfoPtr *xf86Screens; /* List of pointers to ScrnInfoRecs */ extern const unsigned char byte_reversed[256]; -extern PropertyPtr *xf86RegisteredPropertiesTable; extern ScrnInfoPtr xf86CurrentScreen; extern Bool pciSlotClaimed; extern Bool isaSlotClaimed; diff --git a/hw/xfree86/common/xf86Globals.c b/hw/xfree86/common/xf86Globals.c index c6dee3731..a2bb3f504 100644 --- a/hw/xfree86/common/xf86Globals.c +++ b/hw/xfree86/common/xf86Globals.c @@ -1,4 +1,4 @@ -/* $XFree86: xc/programs/Xserver/hw/xfree86/common/xf86Globals.c,v 1.41 2003/08/24 17:36:52 dawes Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/xfree86/common/xf86Globals.c,v 1.42 2004/01/27 01:31:44 dawes Exp $ */ /* * Copyright (c) 1997-2003 by The XFree86 Project, Inc. @@ -236,7 +236,7 @@ Bool xf86VidModeAllowNonLocal = FALSE; Bool xf86MiscModInDevDisabled = FALSE; Bool xf86MiscModInDevAllowNonLocal = FALSE; #endif -PropertyPtr *xf86RegisteredPropertiesTable = NULL; +RootWinPropPtr *xf86RegisteredPropertiesTable = NULL; Bool xf86inSuspend = FALSE; #ifdef DLOPEN_HACK diff --git a/hw/xfree86/common/xf86Helper.c b/hw/xfree86/common/xf86Helper.c index 713e7861a..076a97f16 100644 --- a/hw/xfree86/common/xf86Helper.c +++ b/hw/xfree86/common/xf86Helper.c @@ -1,4 +1,4 @@ -/* $XFree86: xc/programs/Xserver/hw/xfree86/common/xf86Helper.c,v 1.135 2003/10/08 14:58:27 dawes Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/xfree86/common/xf86Helper.c,v 1.136 2004/01/27 01:31:45 dawes Exp $ */ /* * Copyright (c) 1997-2003 by The XFree86 Project, Inc. @@ -2888,11 +2888,12 @@ int xf86RegisterRootWindowProperty(int ScrnIndex, Atom property, Atom type, int format, unsigned long len, pointer value ) { - PropertyPtr pNewProp, pRegProp; + RootWinPropPtr pNewProp = NULL, pRegProp; int i; + Bool existing = FALSE; #ifdef DEBUG - ErrorF("xf86RegisterRootWindowProperty(%d, %d, %d, %d, %d, %p)\n", + ErrorF("xf86RegisterRootWindowProperty(%d, %ld, %ld, %d, %ld, %p)\n", ScrnIndex, property, type, format, len, value); #endif @@ -2900,19 +2901,35 @@ xf86RegisterRootWindowProperty(int ScrnIndex, Atom property, Atom type, return(BadMatch); } - if ( (pNewProp = (PropertyPtr)xalloc(sizeof(PropertyRec)))==NULL ) { - return(BadAlloc); + if (xf86RegisteredPropertiesTable && + xf86RegisteredPropertiesTable[ScrnIndex]) { + for (pNewProp = xf86RegisteredPropertiesTable[ScrnIndex]; + pNewProp; pNewProp = pNewProp->next) { + if (strcmp(pNewProp->name, NameForAtom(property)) == 0) + break; + } + } + + if (!pNewProp) { + if ((pNewProp = (RootWinPropPtr)xalloc(sizeof(RootWinProp))) == NULL) { + return(BadAlloc); + } + /* + * We will put this property at the end of the list so that + * the changes are made in the order they were requested. + */ + pNewProp->next = NULL; + } else { + if (pNewProp->name) + xfree(pNewProp->name); + existing = TRUE; } - pNewProp->propertyName = property; + pNewProp->name = xnfstrdup(NameForAtom(property)); pNewProp->type = type; pNewProp->format = format; pNewProp->size = len; pNewProp->data = value; - /* We will put this property at the end of the list so that - * the changes are made in the order they were requested. - */ - pNewProp->next = NULL; #ifdef DEBUG ErrorF("new property filled\n"); @@ -2923,7 +2940,7 @@ xf86RegisterRootWindowProperty(int ScrnIndex, Atom property, Atom type, ErrorF("creating xf86RegisteredPropertiesTable[] size %d\n", xf86NumScreens); #endif - if ( NULL==(xf86RegisteredPropertiesTable=(PropertyPtr*)xnfcalloc(sizeof(PropertyPtr),xf86NumScreens) )) { + if ( NULL==(xf86RegisteredPropertiesTable=(RootWinPropPtr*)xnfcalloc(sizeof(RootWinProp),xf86NumScreens) )) { return(BadAlloc); } for (i=0; i<xf86NumScreens; i++) { @@ -2933,22 +2950,24 @@ xf86RegisterRootWindowProperty(int ScrnIndex, Atom property, Atom type, #ifdef DEBUG ErrorF("xf86RegisteredPropertiesTable %p\n", - xf86RegisteredPropertiesTable); + (void *)xf86RegisteredPropertiesTable); ErrorF("xf86RegisteredPropertiesTable[%d] %p\n", - ScrnIndex, xf86RegisteredPropertiesTable[ScrnIndex]); + ScrnIndex, (void *)xf86RegisteredPropertiesTable[ScrnIndex]); #endif - if ( xf86RegisteredPropertiesTable[ScrnIndex] == NULL) { - xf86RegisteredPropertiesTable[ScrnIndex] = pNewProp; - } else { - pRegProp = xf86RegisteredPropertiesTable[ScrnIndex]; - while (pRegProp->next != NULL) { + if (!existing) { + if ( xf86RegisteredPropertiesTable[ScrnIndex] == NULL) { + xf86RegisteredPropertiesTable[ScrnIndex] = pNewProp; + } else { + pRegProp = xf86RegisteredPropertiesTable[ScrnIndex]; + while (pRegProp->next != NULL) { #ifdef DEBUG - ErrorF("- next %p\n", pRegProp); + ErrorF("- next %p\n", (void *)pRegProp); #endif - pRegProp = pRegProp->next; + pRegProp = pRegProp->next; + } + pRegProp->next = pNewProp; } - pRegProp->next = pNewProp; } #ifdef DEBUG ErrorF("xf86RegisterRootWindowProperty succeeded\n"); diff --git a/hw/xfree86/common/xf86Init.c b/hw/xfree86/common/xf86Init.c index ce8817096..979b655ee 100644 --- a/hw/xfree86/common/xf86Init.c +++ b/hw/xfree86/common/xf86Init.c @@ -1,4 +1,4 @@ -/* $XFree86: xc/programs/Xserver/hw/xfree86/common/xf86Init.c,v 3.211 2003/11/01 00:47:01 dawes Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/xfree86/common/xf86Init.c,v 3.212 2004/01/27 01:31:45 dawes Exp $ */ /* * Loosely based on code bearing the following copyright: @@ -155,7 +155,7 @@ xf86CreateRootWindow(WindowPtr pWin) int ret = TRUE; int err = Success; ScreenPtr pScreen = pWin->drawable.pScreen; - PropertyPtr pRegProp, pOldRegProp; + RootWinPropPtr pProp; CreateWindowProcPtr CreateWindow = (CreateWindowProcPtr)(pScreen->devPrivates[xf86CreateRootWindowIndex].ptr); @@ -181,25 +181,19 @@ xf86CreateRootWindow(WindowPtr pWin) } /* Now do our stuff */ - if (xf86RegisteredPropertiesTable != NULL) { if (pWin->parent == NULL && xf86RegisteredPropertiesTable != NULL) { - for (pRegProp = xf86RegisteredPropertiesTable[pScreen->myNum]; - pRegProp != NULL && err==Success; - pRegProp = pRegProp->next ) + for (pProp = xf86RegisteredPropertiesTable[pScreen->myNum]; + pProp != NULL && err==Success; + pProp = pProp->next ) { - Atom oldNameAtom = pRegProp->propertyName; - char *nameString; - /* propertyName was created before the screen existed, - * so the atom does not belong to any screen; - * we need to create a new atom with the same name. - */ - nameString = NameForAtom(oldNameAtom); - pRegProp->propertyName = MakeAtom(nameString, strlen(nameString), TRUE); + Atom prop; + + prop = MakeAtom(pProp->name, strlen(pProp->name), TRUE); err = ChangeWindowProperty(pWin, - pRegProp->propertyName, pRegProp->type, - pRegProp->format, PropModeReplace, - pRegProp->size, pRegProp->data, + prop, pProp->type, + pProp->format, PropModeReplace, + pProp->size, pProp->data, FALSE ); } @@ -207,14 +201,6 @@ xf86CreateRootWindow(WindowPtr pWin) /* Look at err */ ret &= (err==Success); - /* free memory */ - pOldRegProp = xf86RegisteredPropertiesTable[pScreen->myNum]; - while (pOldRegProp!=NULL) { - pRegProp = pOldRegProp->next; - xfree(pOldRegProp); - pOldRegProp = pRegProp; - } - xf86RegisteredPropertiesTable[pScreen->myNum] = NULL; } else { xf86Msg(X_ERROR, "xf86CreateRootWindow unexpectedly called with " "non-root window %p (parent %p)\n", @@ -303,7 +289,6 @@ InitOutput(ScreenInfo *pScreenInfo, int argc, char **argv) xf86ScreenIndex = AllocateScreenPrivateIndex(); xf86CreateRootWindowIndex = AllocateScreenPrivateIndex(); xf86PixmapIndex = AllocatePixmapPrivateIndex(); - xf86RegisteredPropertiesTable=NULL; generation = serverGeneration; } @@ -749,6 +734,32 @@ InitOutput(ScreenInfo *pScreenInfo, int argc, char **argv) } formatsDone = TRUE; + if (xf86Info.vtno >= 0 ) { +#define VT_ATOM_NAME "XFree86_VT" + Atom VTAtom=-1; + CARD32 *VT = NULL; + int ret; + + /* This memory needs to stay available until the screen has been + initialized, and we can create the property for real. + */ + if ( (VT = xalloc(sizeof(CARD32)))==NULL ) { + FatalError("Unable to make VT property - out of memory. Exiting...\n"); + } + *VT = xf86Info.vtno; + + VTAtom = MakeAtom(VT_ATOM_NAME, sizeof(VT_ATOM_NAME), TRUE); + + for (i = 0, ret = Success; i < xf86NumScreens && ret == Success; i++) { + ret = xf86RegisterRootWindowProperty(xf86Screens[i]->scrnIndex, + VTAtom, XA_INTEGER, 32, + 1, VT ); + if (ret != Success) + xf86DrvMsg(xf86Screens[i]->scrnIndex, X_WARNING, + "Failed to register VT property\n"); + } + } + /* If a screen uses depth 24, show what the pixmap format is */ for (i = 0; i < xf86NumScreens; i++) { if (xf86Screens[i]->depth == 24) { diff --git a/hw/xfree86/common/xf86Priv.h b/hw/xfree86/common/xf86Priv.h index a46bfc39b..82df2aead 100644 --- a/hw/xfree86/common/xf86Priv.h +++ b/hw/xfree86/common/xf86Priv.h @@ -1,4 +1,4 @@ -/* $XFree86: xc/programs/Xserver/hw/xfree86/common/xf86Priv.h,v 3.82 2003/09/09 03:20:36 dawes Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/xfree86/common/xf86Priv.h,v 3.83 2004/01/27 01:31:45 dawes Exp $ */ /* * Copyright (c) 1997-2002 by The XFree86 Project, Inc. @@ -113,6 +113,8 @@ extern int xf86LogVerbose; /* log file verbosity level */ extern Bool xf86ProbeOnly; extern Bool xf86DoProbe; +extern RootWinPropPtr *xf86RegisteredPropertiesTable; + #ifndef DEFAULT_VERBOSE #define DEFAULT_VERBOSE 0 #endif diff --git a/hw/xfree86/common/xf86Privstr.h b/hw/xfree86/common/xf86Privstr.h index 8b0a0f4ce..93d64fd51 100644 --- a/hw/xfree86/common/xf86Privstr.h +++ b/hw/xfree86/common/xf86Privstr.h @@ -1,4 +1,4 @@ -/* $XFree86: xc/programs/Xserver/hw/xfree86/common/xf86Privstr.h,v 1.40 2003/10/17 20:02:12 alanh Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/xfree86/common/xf86Privstr.h,v 1.41 2004/01/27 01:31:45 dawes Exp $ */ /* * Copyright (c) 1997-2003 by The XFree86 Project, Inc. @@ -198,6 +198,16 @@ typedef struct { } VidModeRec, *VidModePtr; #endif +/* Information for root window properties. */ +typedef struct _RootWinProp { + struct _RootWinProp * next; + char * name; + Atom type; + short format; + long size; + pointer data; +} RootWinProp, *RootWinPropPtr; + /* private resource types */ #define ResNoAvoid ResBios diff --git a/hw/xfree86/doc/README.fonts b/hw/xfree86/doc/README.fonts index 230e29c78..2fe8dfaac 100644 --- a/hw/xfree86/doc/README.fonts +++ b/hw/xfree86/doc/README.fonts @@ -987,23 +987,28 @@ earlier in this document. The `X-TrueType' backend is a backend based on version 1 of the FreeType library. X-TrueType doesn't use the `fontenc' layer for managing font encod- -ings, but instead uses its own database of encodings. Since the functionali- -ties for CJKV support introduced by X-TT have been merged into the new -FreeType backend, the X-TT backend will be removed from XFree86's tree near -the future. Therefore, the use of FreeType backend is preferred over the X- -TT backend. General information on X-TrueType may be found at ." +ings, but instead uses its own database of encodings. + +Since the functionalities for CJKV support introduced by X-TT have been +merged into the new FreeType backend, the X-TT backend will be removed from +XFree86's tree near the future. Therefore, the use of FreeType backend is +preferred over the X-TT backend. + +General information on X-TrueType may be found at the After X-TT Project page +<URL:http://x-tt.sourceforge.jp/>. 4.2.3 Delayed glyph rasterisation -When loading a large character set, the old FreeType delayed glyph rasterisa- -tion until the time at which the glyph was first used. The new FreeType -(libfreetype-xtt2) has an improved `very lazy' metric calculation method to -speed up the process when loading TrueType or OpenType fonts. Although the -X-TT module also has this method, the "vl=y" TTCap option must be set if you -want to use it. This is the default method for FreeType when it loads multi- -byte fonts. Even if you use a unicode font which has tens of thousands of -glyphs, this delay will not be worrisome as long as you use the new FreeType -backend -- its `very lazy' method is super-fast. +When loading a proportional fonts which contain a huge number of glyphs, the +old FreeType delayed glyph rasterisation until the time at which the glyph +was first used. The new FreeType (libfreetype-xtt2) has an improved `very +lazy' metric calculation method to speed up the process when loading TrueType +or OpenType fonts. Although the X-TT module also has this method, the +"vl=y" TTCap option must be set if you want to use it. This is the default +method for FreeType when it loads multi-byte fonts. Even if you use a uni- +code font which has tens of thousands of glyphs, this delay will not be wor- +risome as long as you use the new FreeType backend -- its `very lazy' method +is super-fast. The maximum error of bitmap position using `very lazy' method is 1 pixel, and is the same as that of a character-cell spacing. When the X-TT backend is @@ -1176,7 +1181,7 @@ The IANA RFC documents, available from a number of sites throughout the world, often provide interesting information about character set issues; see for example RFC 373. - Generated from XFree86: xc/programs/Xserver/hw/xfree86/doc/sgml/fonts.sgml,v 1.23 dawes Exp $ + Generated from XFree86: xc/programs/Xserver/hw/xfree86/doc/sgml/fonts.sgml,v 1.24 dawes Exp $ -$XFree86: xc/programs/Xserver/hw/xfree86/doc/README.fonts,v 1.27 2003/11/24 01:57:56 dawes Exp $ +$XFree86: xc/programs/Xserver/hw/xfree86/doc/README.fonts,v 1.28 2003/12/20 19:47:28 dawes Exp $ diff --git a/hw/xfree86/doc/changelogs/CHANGELOG b/hw/xfree86/doc/changelogs/CHANGELOG index 3e6f9d210..347e49274 100644 --- a/hw/xfree86/doc/changelogs/CHANGELOG +++ b/hw/xfree86/doc/changelogs/CHANGELOG @@ -1,4 +1,204 @@ -XFree86 4.3.99.903 (xx December 2003) +XFree86 4.3.99.903 (xx January 2004) + 775. Fix a timing problem in the nsc driver that prevents the display from + working in some cases (Bugzilla #840, Hansruedi Glauser, Alan Hourihane). + 774. Via driver workaround to handle setting WC for the video memory when + initially only part of it has WC set (Bugzilla #1010 Thomas Hellström). + 773. Fix the XAA clipping flags for the via driver, which fixes a line + drawing problem seen with OpenOffice Calc (Bugzilla #1026, + Thomas Hellström). + 772. HKSCS and GB18030 support for luit (Bugzilla #1048, Zarick Lau). + 771. Fix some remaining memory allocation related problems with the via + driver (Bugzilla #998, Thomas Hellström). + 770. Add a UseRpath build switch to allow the use of -rpath to be enabled + or disabled from the host.def file. Implemented for *BSD, Hurd, Linux. + The default settings remains as before (David Dawes). + 769. Add a root window property called XFree86_VT that holds the VT number + that the XFree86 server is running on (Andrew Aitcheson, suggested by + Samuel Thibault). + 768. Fix a problem where root window properties registered with + xf86RegisterRootWindowProperty() are not re-registered after server + regeneration (David Dawes, reported by Samuel Thibault). + 767. Fix xtest failures for the savage driver's zero width lines by + removing the TwoPointLine and using only the Bresenham version + (reported by Nicolas Joly). + 766. Fix refresh rate setting for 845G/856G systems that don't support the + Intel-specific refresh rate BIOS calls (Bugzilla #1106, David Dawes, + reported by Lucian Precup). + 765. Fixes/build updates for BSD/OS 5.1 and 4.3.1 (Bugzilla #1111, Kurt Lidl). + 764. Fix a problem in libXmu's FindChildren() that can cause a crash by + copying memory from outside the bounds of an array (Bugzilla #1109, + John Tillman). + 763. Add missing TimerCallback in trident_video.c to shutdown the video. + This could account for many peoples lockups with video on Trident chips. + Also, add a Wait for vsync when programming video modes to avoid lockups. + (Yukun Chen, Alan Hourihane). + 762. Fix a lockup problem on Trident Blade3D engines by permanently turning + on PCI Retry. Also sync the engine on CloseScreen and LeaveVT. + (Yukun Chen, Alan Hourihane). + 761. Fix getaddrinfo() return value check in SmsGenerateClientID() that was + causing a crash when the current hostname is unresolved, and returning + a NULL id otherwise (Bugzilla #1096, David Dawes). + 760. Support automatic configuration of the X server on OpenBSD with + wsmouse-supported mices. (Matthieu Herrb). + 759. Updates for XKB keyboard maps: + - Add Tibetan/Dzongkha keyboard layout (Bugzilla #1082, Gregory Mokhin). + - Add three new Internet/multimedia keyboard descriptions + (Bugzilla #1088, Radics Laszlo). + 758. Add overlooked SecondaryColor entries to AppleDRI indirect dispatch + table (Torrey T. Lyons). + 757. Allocate pBIOSInfo->UserSetting in the via driver, which fixes a crash + (James Harris). + 756. Fix Linux drm kernel modules to handle the nopage() prototype change in + Linux 2.6.1 (Michel Dänzer, from DRI CVS). + 755. Fix use of dynamic xcursors on OS/2 (Bugzilla #1087, Frank Giessler). + 754. Fix the fbdev driver so that it allows 24-bit pixel size, and disable + the RandR extension when rotation is enabled (Jonathan Thambidurai). + 753. Rendition driver fixes: + - Fix the mode size limits so that the set of modes that the driver + accepts isn't unnecessarily restricted. + - Fix color palette refreshing after VT switching. + - Fix a core dump at server exit with the hardware cursor was enabled. + - Add checking for supported depths. Without this the server could + crash if an unsupported depth was specified. + (Eric Wittry) + 752. Update XKB registry file rules/xfree86.xml (Sergey Oudaltsov). + 751. Fix some rules in en_US.UTF-8 Compose file (Bugzilla #1071, + Matthew Fischer). + 750. Add some content (supported hardware and driver options) to the tdfx(4) + man page (Bugzilla #1068, Nicolas Joly). + 749. Make '-pn' (partial network) the default for all X servers, and document + the '-nopn' option (David Dawes). + 748. Allow rstartd.real to be installed into a location other than LIBDIR + (#6034, Luke Mewburn). + 747. Allow xdm's chooser to be installed into a directory other than LIBDIR + (#6033, Luke Mewburn). + 746. Add XKB description for the Logitech Access keyboard (#6026, + Michael Geddes). + 745. Fix typo in computing xterm's relative font size (Jess Thrysoee). + 744. Fix typo in savage man page (Bugzilla #1065, Nicolas Joly). + 743. Fix for xf86Msg() call with swapped arguments (Bugzilla #1064, + Nicolas Joly). + 742. Set the dependencies correctly for SCO shared libraries, and use gcc + for linking instead of ld (Bugzilla #1045, Kean Johnston). + 741. Some cleanups for the SCO support, and a few changes required for + compilation on UnixWare (Bugzilla #1045, Kean Johnston). + 740. Make the X server lock file code treat the display string in the same + way as the local listener code (i.e., convert it to an integer then back + to a string). This fixes a problem where an non-numeric display + argument could cause a second server to be started on display :0, + replacing the local listener nodes for the original server. + (Bugzilla #1056, David Dawes, reported by Robin Schoonover). + 739. Fix xfs and xdm core dumps in BecomeOrphan(), and rework/simplify + the BecomeDaemon() code (Bugzilla #1060, #1074, David Dawes, + reported by Martin Birgmeier). + 738. Add a "VBERestore" option for the i830 part of the i810 driver, to + allow the VBE restore bug workaround to be disabled. This is needed + for correct text mode restoration on some 830M-based machines + (David Dawes, reported by Martin van Es). + 737. Fix memory leak when list of registered renderers are cleared at the + start of each new server generation (Kevin Martin and Rik Faith). + 736. Fix memory double freeing at XIM destroying in imLcIm.c (Ivan Pascal, + reported: Bugzilla #1015). + 735. Add xkb keymap for Microsoft Mutimedia Keyboard keys (Bugzilla #1052, + Jacques Legare). + 734. Update Compose file for en_US.UTF-8 locale (Bugzilla #1053, + Matthew Fischer) and fix wrong comment signs there (Ivan Pascal). + 733. VIA driver fixes: + - Restructure the via driver's cache allocation to work with both + the VIA and new open DRI module, and remove the now unneeded + version check (Thomas Hellström, Alan Cox, bugzilla #998). + - Remove special case lindvd hack (Alan Cox) + - Add support for Xv when unaccelerated (Thomas Hellström) + (Bugzilla #998, #1020, #1021). + 732. Check for a NULL argument in XSetICFocus() before dereferencing it. + This fixes crashes with some XIM software (see + http://bugzilla.mozilla.gr.jp/show_bug.cgi?id=2961#c19). + 731. Improve the i810 bitblt bug workaround, and re-enable the pixmap cache + at depth 24 (David Dawes). + 730. Workaround for lockup at mode switch with an i810 (David Dawes). + 729. Fix transparent mono 8x8 pattern fills for the i810 (David Dawes). + 728. Disable XKB by default in XDarwin (Torrey T. Lyons). + 727. Fix manpage build warnings on Panther (Matthieu Herrb). + 726. Make sure that the ring buffer is flushed in I810CloseScreen(). This + fixes unpredictable behaviour that sometimes shows up after server + exit/restart or server reset, including memory corruption, spontaneous + reboots, etc, and some odd xtest behaviour (David Dawes). + 725. Xdmcp fixes for IPv6 and mixed IPv6/IPv4 operation. (Mario Klebsch, + Matthieu Herrb). + 724. Update rman by merging XFree86 changes to rman 3.2 (Thomas Dickey). + 723. Create fonts.scale and fonts.dir files in the target directories at + 'make install' time. This fixes several problems where some font + entries get left out (David Dawes). + 722. Add the Bitstream Vera fonts (Bitstream, Inc and The Gnome Project). + 721. Xterm patches #183, #184 (Thomas Dickey). + 720. Build fix for the Chips driver on Linux/arm (#6011, Michel Dänzer and + Othmar Pasteka). + 719. Change v4l "norm" names to the bttv versions (#5993, + Marco Antonio Alvarez). + 718. Fix for symbols/hr map (#5991, Vlatko Kosturjak). + 717. The current VIA DRI driver isn't remotely compatible with the current + code, so make sure it isn't loaded by requiring version 2.0.0 or later + (Alan Cox). + 716. Fix VIA KM400 memory detection (Luc Verhaegen, Bugzilla #813). + 715. Fix a long standing VIA Xv problem with totem/xine and YUV surface + types (Uberto Barbini). + 714. VIA driver updates/fixes: + - Remove HARDWARE_NEEDS_PROGRAMMED_ORIGIN (Bugzilla #1011). + - Allocate the UserSetting structure and use it. Changed the names so + its uses can be tracked through the tree (Bugzilla #1006, #1014). + - Remove dead FIFO handling code. + - Clean up formatting in via_bios.h, via_driver.h. + - via_tuner module (1/2 of Bugzilla #1012, #1013): + + Add via_tuner structures and methods. + + Handle the back end work for boards with Philips SAA71xx + devices on the I2C bus providing one or two TV overlays. + + Handle CXA2104S audio decoder if present. + + Handle FI1236 TV tuners if present. + - Remove bogus DriverVersion, DriverName stuff. + - Xv updates (Bugzilla #1013): + + Remove DDR mode tables and compute supported overlay modes properly. + + Remove various bits of dead code. + + Probe for Tuners in the Xv setup. + + Don't advertise XvImageMask on the tuner overlays - they can't do it. + + Clean up tuner channel computation. + + Make the property setting code use the via_tuner backend. + + Fix formatting of the various YUV copying loops. + (Alan Cox). + 713. Add a missing code for jisx0208.1990-0.enc (Chisato Yamauchi). + 712. Xtt2 update: Restore the behaviour of "bw" TTCap option for Netscape 4.x. + (Chisato Yamauchi). + 711. Fix neomagic driver default mode selection to match the detected + panel size. This allows it to work correctly with automatic + configuration (David Dawes). + 710. Fixes and updates for XKB keyboard maps: + - Fix Armenian phonetic keymap (Bugzilla #1016, Ani). + - Fix rules for Brasilian ABNT2 keyboard (Ricardo Y. Igarashi). + - Add Shift+CapsLock group switcher (Ivan Pascal, see Bugzilla #1025). + - Update rules/xfree86.lst with missing descriptions (Ivan Pascal). + 709. Build fix for Solaris Express (Bugzilla #1032, Alan Coopersmith). + 708. Fix warning in lib/Xt/Alloc.c (Bugzilla #1035, Nicolas Joly). + 707. Fix short overflow problem with box clipping in fb/fbcopy.c + (Bugzilla #978, Stephen McCamant). + 706. Fix logic in xterm's get_pty() for platforms where old-style pty's are + preferred to /dev/ptmx (Bugzilla #997, Kean Johnston, Thomas Dickey). + 705. Fix handling of eightBitInput for UTF-8 locales in xterm (Thomas Dickey). + 704. Merge recent cygwin-related changes from freedesktop.org's config/cf + (Thomas Dickey). + 703. Disable Xv in the via driver when acceleration is disabled (Alan Cox). + 702. Fix bugs caused by empty PCI buses on ZX1-based systems (Marc La France). + 701. Fix optional save/restore of BIOS area data in int10 module + (Marc La France). + 700. Update Swedish localization of XDarwin GUI (Patrik Montgomery). + 699. Fixes to build/run on cygwin (Thomas Dickey). This includes a workaround + for _XtInherit by Ralf Habacker, needed to run applications such as xman. + 698. Warning fixes for gcc 3.3.2 (Marc La France). + 697. Fix file descriptor leaks in xdm (Marc La France). + 696. Fix memory leaks in libFS (Marc La France). + 695. Security fix: change xdm to use mkstemp(), where available, instead of + mktemp() (Marc La France). + 694. Update XKB registry file rules/xfree86.xml (Sergey Oudaltsov). + 693. Fix for FreeType-related crash when attempting to draw a missing glyph + with constant-width fonts (Chisato Yamauchi). XFree86 4.3.99.902 (18 December 2003) 672. Fixes for xterm (Thomas Dickey): @@ -18391,7 +18591,7 @@ XFree86 3.0a (28 April 1994) XFree86 3.0 (26 April 1994) -$XFree86: xc/programs/Xserver/hw/xfree86/CHANGELOG,v 3.3043 2003/12/19 04:52:08 dawes Exp $ +$XFree86: xc/programs/Xserver/hw/xfree86/CHANGELOG,v 3.3118 2004/01/27 17:31:54 dawes Exp $ diff --git a/hw/xfree86/doc/sgml/DESIGN.sgml b/hw/xfree86/doc/sgml/DESIGN.sgml index 365acaf1a..864b5c249 100644 --- a/hw/xfree86/doc/sgml/DESIGN.sgml +++ b/hw/xfree86/doc/sgml/DESIGN.sgml @@ -25,9 +25,9 @@ <article> -<title>XFree86 X server ``New Design'' (DRAFT) +<title>XFree86 server 4.x Design (DRAFT) <author>The XFree86 Project, Inc -<date>Last modified 2003 January 22 +<date>19 December 2003 @@ -36,7 +36,7 @@ <ident> -$XFree86: xc/programs/Xserver/hw/xfree86/doc/sgml/DESIGN.sgml,v 1.53 2003/08/23 14:10:14 dawes Exp $ +$XFree86: xc/programs/Xserver/hw/xfree86/doc/sgml/DESIGN.sgml,v 1.54 2003/12/19 20:38:57 dawes Exp $ </ident> diff --git a/hw/xfree86/int10/helper_exec.c b/hw/xfree86/int10/helper_exec.c index 7528fea0e..181ebb157 100644 --- a/hw/xfree86/int10/helper_exec.c +++ b/hw/xfree86/int10/helper_exec.c @@ -1,4 +1,4 @@ -/* $XFree86: xc/programs/Xserver/hw/xfree86/int10/helper_exec.c,v 1.26 2003/11/06 18:38:12 tsi Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/xfree86/int10/helper_exec.c,v 1.27 2003/12/23 22:32:38 tsi Exp $ */ /* * XFree86 int10 module * execute BIOS int 10h calls in x86 real mode environment @@ -56,7 +56,7 @@ setup_int(xf86Int10InfoPtr pInt) X86_GS = 0; X86_EFLAGS = X86_IF_MASK | X86_IOPL_MASK; #if defined (_PC) - if (pInt->flags & SET_BIOS_SCRATCH) + if (pInt->Flags & SET_BIOS_SCRATCH) SetResetBIOSVars(pInt, TRUE); #endif return xf86BlockSIGIO(); @@ -76,7 +76,7 @@ finish_int(xf86Int10InfoPtr pInt, int sig) pInt->bp = (CARD32) X86_EBP; pInt->flags = (CARD32) X86_FLAGS; #if defined (_PC) - if (pInt->flags & RESTORE_BIOS_SCRATCH) + if (pInt->Flags & RESTORE_BIOS_SCRATCH) SetResetBIOSVars(pInt, FALSE); #endif } diff --git a/hw/xfree86/loader/coffloader.c b/hw/xfree86/loader/coffloader.c index b2fbfcf14..1ba45dd67 100644 --- a/hw/xfree86/loader/coffloader.c +++ b/hw/xfree86/loader/coffloader.c @@ -1,4 +1,4 @@ -/* $XFree86: xc/programs/Xserver/hw/xfree86/loader/coffloader.c,v 1.21 2003/10/15 17:40:15 dawes Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/xfree86/loader/coffloader.c,v 1.22 2003/12/22 17:48:11 tsi Exp $ */ /* * @@ -133,7 +133,9 @@ static COFFCommonPtr COFFAddCOMMON(SYMENT *, int); static LOOKUP *COFFCreateCOMMON(COFFModulePtr); static COFFRelocPtr COFFDelayRelocation(COFFModulePtr, int, RELOC *); static SYMENT *COFFGetSymbol(COFFModulePtr, int); +#if defined(i386) || defined(__powerpc__) static unsigned char *COFFGetSymbolValue(COFFModulePtr, int); +#endif static COFFRelocPtr COFF_RelocateEntry(COFFModulePtr, int, RELOC *); static LOOKUP *COFF_GetSymbols(COFFModulePtr); static void COFFCollectSections(COFFModulePtr); @@ -298,6 +300,7 @@ COFFGetSymbol(COFFModulePtr file, int index) return (SYMENT *) (((unsigned char *)file->symtab) + (index * SYMESZ)); } +#if defined(i386) || defined(__powerpc__) static unsigned char * COFFGetSymbolValue(COFFModulePtr cofffile, int index) { @@ -323,6 +326,7 @@ COFFGetSymbolValue(COFFModulePtr cofffile, int index) xf86loaderfree(symname); return symval; } +#endif #if defined(__powerpc__) /* diff --git a/hw/xfree86/loader/fontsym.c b/hw/xfree86/loader/fontsym.c index d91a2e216..1a1324fdb 100644 --- a/hw/xfree86/loader/fontsym.c +++ b/hw/xfree86/loader/fontsym.c @@ -1,4 +1,4 @@ -/* $XFree86: xc/programs/Xserver/hw/xfree86/loader/fontsym.c,v 1.13 2003/10/15 16:29:04 dawes Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/xfree86/loader/fontsym.c,v 1.14 2003/12/20 20:04:34 dawes Exp $ */ /* * Copyright (c) 1998-2002 by The XFree86 Project, Inc. * @@ -37,8 +37,10 @@ #include "fntfil.h" #include "fontutil.h" #include "fontxlfd.h" +#ifdef FONTCACHE #define _FONTCACHE_SERVER_ #include "fontcache.h" +#endif LOOKUP fontLookupTab[] = { @@ -89,6 +91,7 @@ LOOKUP fontLookupTab[] = { SYMFUNC(identifyEncodingFile) #endif +#ifdef FONTCACHE /* fontcache.c */ SYMFUNC(FontCacheGetSettings) SYMFUNC(FontCacheGetStatistics) @@ -99,6 +102,7 @@ LOOKUP fontLookupTab[] = { SYMFUNC(FontCacheGetEntry) SYMFUNC(FontCacheInsertEntry) SYMFUNC(FontCacheGetBitmap) +#endif {0, 0} }; diff --git a/hw/xfree86/os-support/bsd/alpha_video.c b/hw/xfree86/os-support/bsd/alpha_video.c index aa3313dc3..655ac4a83 100644 --- a/hw/xfree86/os-support/bsd/alpha_video.c +++ b/hw/xfree86/os-support/bsd/alpha_video.c @@ -1,4 +1,4 @@ -/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/bsd/alpha_video.c,v 1.5 2003/04/03 16:50:04 dawes Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/bsd/alpha_video.c,v 1.6 2003/12/30 15:18:30 herrb Exp $ */ /* * Copyright 1992 by Rich Murphey <Rich@Rice.edu> * Copyright 1993 by David Wexelblat <dwex@goblin.org> @@ -121,7 +121,7 @@ static struct alpha_bus_window *abw; static int abw_count = -1; static void -init_abw() +init_abw(void) { if (abw_count < 0) { abw_count = alpha_bus_getwindows(ALPHA_BUS_TYPE_PCI_MEM, &abw); @@ -142,7 +142,7 @@ has_bwx(void) } static unsigned long -dense_base() +dense_base(void) { if (abw_count < 0) init_abw(); @@ -154,7 +154,7 @@ dense_base() } static unsigned long -memory_base() +memory_base(void) { if (abw_count < 0) init_abw(); @@ -284,11 +284,13 @@ xf86OSInitVidMem(VidMemInfoPtr pVidMem) xf86Msg(X_PROBED,"Machine needs sparse mapping\n"); pVidMem->mapMem = mapVidMemSparse; pVidMem->unmapMem = unmapVidMemSparse; +#ifndef __NetBSD__ if (axpSystem == -1) axpSystem = bsdGetAXP(); hae_thresh = xf86AXPParams[axpSystem].hae_thresh; hae_mask = xf86AXPParams[axpSystem].hae_mask; sparse_size = xf86AXPParams[axpSystem].size; +#endif /* __NetBSD__ */ } pVidMem->initialised = TRUE; } @@ -314,7 +316,7 @@ mapVidMem(int ScreenNum, unsigned long Base, unsigned long Size, int flags) MAP_FLAGS, devMemFd, (off_t)Base + BUS_BASE_BWX); if (base == MAP_FAILED) { - FatalError("%s: could not mmap %s [s=%x,a=%x] (%s)\n", + FatalError("%s: could not mmap %s [s=%lx,a=%lx] (%s)\n", "xf86MapVidMem", DEV_MEM, Size, Base, strerror(errno)); } @@ -324,7 +326,7 @@ mapVidMem(int ScreenNum, unsigned long Base, unsigned long Size, int flags) /* else, mmap /dev/vga */ if ((unsigned long)Base < 0xA0000 || (unsigned long)Base >= 0xC0000) { - FatalError("%s: Address 0x%x outside allowable range\n", + FatalError("%s: Address 0x%lx outside allowable range\n", "xf86MapVidMem", Base); } base = mmap(0, Size, @@ -372,7 +374,7 @@ xf86ReadBIOS(unsigned long Base, unsigned long Offset, unsigned char *Buf, if ((long)ptr == -1) { xf86Msg(X_WARNING, - "xf86ReadBIOS: %s mmap[s=%x,a=%x,o=%x] failed (%s)\n", + "xf86ReadBIOS: %s mmap[s=%x,a=%lx,o=%lx] failed (%s)\n", DEV_MEM, Len, Base, Offset, strerror(errno)); return(-1); } @@ -446,7 +448,9 @@ xf86EnableInterrupts() #define vuip volatile unsigned int * +#ifndef __NetBSD__ static unsigned long msb_set = 0; +#endif static pointer memSBase = 0; static pointer memBase = 0; @@ -490,6 +494,7 @@ struct parms { u_int64_t hae; }; +#ifndef __NetBSD__ static int sethae(u_int64_t hae) { @@ -505,6 +510,7 @@ sethae(u_int64_t hae) return -1; #endif } +#endif /* __NetBSD__ */ static pointer mapVidMemSparse(int ScreenNum, unsigned long Base, unsigned long Size, int flags) @@ -552,11 +558,13 @@ static int readSparse8(pointer Base, register unsigned long Offset) { register unsigned long result, shift; +#ifndef __NetBSD__ register unsigned long msb; - +#endif mem_barrier(); Offset += (unsigned long)Base - (unsigned long)memBase; shift = (Offset & 0x3) << 3; +#ifndef __NetBSD__ if (Offset >= (hae_thresh)) { msb = Offset & hae_mask; Offset -= msb; @@ -565,7 +573,7 @@ readSparse8(pointer Base, register unsigned long Offset) msb_set = msb; } } - +#endif result = *(vuip) ((unsigned long)memSBase + (Offset << 5)); result >>= shift; return 0xffUL & result; @@ -575,11 +583,14 @@ static int readSparse16(pointer Base, register unsigned long Offset) { register unsigned long result, shift; +#ifndef __NetBSD__ register unsigned long msb; +#endif mem_barrier(); Offset += (unsigned long)Base - (unsigned long)memBase; shift = (Offset & 0x2) << 3; +#ifndef __NetBSD__ if (Offset >= (hae_thresh)) { msb = Offset & hae_mask; Offset -= msb; @@ -588,6 +599,7 @@ readSparse16(pointer Base, register unsigned long Offset) msb_set = msb; } } +#endif result = *(vuip)((unsigned long)memSBase+(Offset<<5)+(1<<(5-2))); result >>= shift; return 0xffffUL & result; @@ -603,11 +615,14 @@ readSparse32(pointer Base, register unsigned long Offset) static void writeSparse8(int Value, pointer Base, register unsigned long Offset) { +#ifndef __NetBSD__ register unsigned long msb; +#endif register unsigned int b = Value & 0xffU; write_mem_barrier(); Offset += (unsigned long)Base - (unsigned long)memBase; +#ifndef __NetBSD__ if (Offset >= (hae_thresh)) { msb = Offset & hae_mask; Offset -= msb; @@ -616,17 +631,21 @@ writeSparse8(int Value, pointer Base, register unsigned long Offset) msb_set = msb; } } +#endif *(vuip) ((unsigned long)memSBase + (Offset << 5)) = b * 0x01010101; } static void writeSparse16(int Value, pointer Base, register unsigned long Offset) { +#ifndef __NetBSD__ register unsigned long msb; +#endif register unsigned int w = Value & 0xffffU; write_mem_barrier(); Offset += (unsigned long)Base - (unsigned long)memBase; +#ifndef __NetBSD__ if (Offset >= (hae_thresh)) { msb = Offset & hae_mask; Offset -= msb; @@ -635,6 +654,7 @@ writeSparse16(int Value, pointer Base, register unsigned long Offset) msb_set = msb; } } +#endif *(vuip)((unsigned long)memSBase+(Offset<<5)+(1<<(5-2))) = w * 0x00010001; @@ -651,10 +671,13 @@ writeSparse32(int Value, pointer Base, register unsigned long Offset) static void writeSparseNB8(int Value, pointer Base, register unsigned long Offset) { +#ifndef __NetBSD__ register unsigned long msb; +#endif register unsigned int b = Value & 0xffU; Offset += (unsigned long)Base - (unsigned long)memBase; +#ifndef __NetBSD__ if (Offset >= (hae_thresh)) { msb = Offset & hae_mask; Offset -= msb; @@ -663,16 +686,20 @@ writeSparseNB8(int Value, pointer Base, register unsigned long Offset) msb_set = msb; } } +#endif *(vuip) ((unsigned long)memSBase + (Offset << 5)) = b * 0x01010101; } static void writeSparseNB16(int Value, pointer Base, register unsigned long Offset) { +#ifndef __NetBSD__ register unsigned long msb; +#endif register unsigned int w = Value & 0xffffU; Offset += (unsigned long)Base - (unsigned long)memBase; +#ifndef __NetBSD__ if (Offset >= (hae_thresh)) { msb = Offset & hae_mask ; Offset -= msb; @@ -681,6 +708,7 @@ writeSparseNB16(int Value, pointer Base, register unsigned long Offset) msb_set = msb; } } +#endif *(vuip)((unsigned long)memSBase+(Offset<<5)+(1<<(5-2))) = w * 0x00010001; } diff --git a/hw/xfree86/os-support/bsd/bsd_kbd.c b/hw/xfree86/os-support/bsd/bsd_kbd.c index 0d586ef72..3c22eeb4d 100644 --- a/hw/xfree86/os-support/bsd/bsd_kbd.c +++ b/hw/xfree86/os-support/bsd/bsd_kbd.c @@ -1,4 +1,4 @@ -/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/bsd/bsd_kbd.c,v 1.8 2003/11/04 03:16:58 tsi Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/bsd/bsd_kbd.c,v 1.9 2004/01/07 17:05:28 tsi Exp $ */ /* * Copyright (c) 2002 by The XFree86 Project, Inc. @@ -497,7 +497,7 @@ OpenKeyboard(InputInfoPtr pInfo) #endif default: xf86Msg(X_ERROR, "%s: Unsupported wskbd type \"%d\"", - pKbd->wsKbdType, pInfo->name); + pInfo->name, pKbd->wsKbdType); close(pInfo->fd); return FALSE; } diff --git a/hw/xfree86/os-support/bsd/bsd_mouse.c b/hw/xfree86/os-support/bsd/bsd_mouse.c index 943bb9855..ac878a9e1 100644 --- a/hw/xfree86/os-support/bsd/bsd_mouse.c +++ b/hw/xfree86/os-support/bsd/bsd_mouse.c @@ -1,4 +1,4 @@ -/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/bsd/bsd_mouse.c,v 1.26 2003/10/10 20:56:05 herrb Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/bsd/bsd_mouse.c,v 1.27 2004/01/17 15:20:05 herrb Exp $ */ /* * Copyright (c) 1999-2003 by The XFree86 Project, Inc. @@ -80,6 +80,16 @@ static const char *mouseDevs[] = { DEFAULT_PS2_DEV, NULL }; +#elif defined(__OpenBSD__) && defined(WSCONS_SUPPORT) +/* Only wsmouse mices are autoconfigured for now on OpenBSD */ +#define DEFAULT_WSMOUSE_DEV "/dev/wsmouse" +#define DEFAULT_WSMOUSE0_DEV "/dev/wsmouse0" + +static const char *mouseDevs[] = { + DEFAULT_WSMOUSE_DEV, + DEFAULT_WSMOUSE0_DEV, + NULL +}; #endif static int @@ -141,6 +151,8 @@ DefaultProtocol(void) { #if defined(__FreeBSD__) return "Auto"; +#elif defined(__OpenBSD__) && defined(WSCONS_SUPPORT) + return "WSMouse"; #else return NULL; #endif @@ -195,7 +207,7 @@ SetupAuto(InputInfoPtr pInfo, int *protoPara) protoPara[0] = mode.syncmask[0]; protoPara[1] = mode.syncmask[1]; } - xf86MsgVerb(X_INFO, 3, "%s: SetupAuto: protocol is %s\n", + xf86MsgVerb(X_INFO, 3, "%s: SetupAuto: protocol is %s\n", pInfo->name, devproto[i].name); return devproto[i].name; } @@ -325,7 +337,50 @@ FindDevice(InputInfoPtr pInfo, const char *protocol, int flags) } #endif -#if defined(WSCONS_SUPPORT) +#if defined(__OpenBSD__) && defined(WSCONS_SUPPORT) + +/* Only support wsmouse configuration for now */ +static const char * +SetupAuto(InputInfoPtr pInfo, int *protoPara) +{ + + xf86MsgVerb(X_INFO, 3, "%s: SetupAuto: protocol is %s\n", + pInfo->name, "wsmouse"); + return "wsmouse"; +} + +static void +SetMouseRes(InputInfoPtr pInfo, const char *protocol, int rate, int res) +{ + + xf86MsgVerb(X_INFO, 3, "%s: SetMouseRes: protocol %s rate %d res %d\n", + pInfo->name, protocol, rate, res); +} + +static const char * +FindDevice(InputInfoPtr pInfo, const char *protocol, int flags) +{ + int fd = -1; + const char **pdev; + + for (pdev = mouseDevs; *pdev; pdev++) { + SYSCALL(fd = open(*pdev, O_RDWR | O_NONBLOCK)); + if (fd != -1) { + /* Set the Device option. */ + pInfo->conf_idev->commonOptions = + xf86AddNewOption(pInfo->conf_idev->commonOptions, + "Device", *pdev); + xf86Msg(X_INFO, "%s: found Device \"%s\"\n", + pInfo->name, *pdev); + close(fd); + break; + } + } + return *pdev; +} +#endif (__OpenBSD__) + +#ifdef WSCONS_SUPPORT #define NUMEVENTS 64 static void @@ -718,7 +773,11 @@ xf86OSMouseInit(int flags) p->SetBMRes = SetSysMouseRes; p->SetMiscRes = SetSysMouseRes; #endif -#if defined(__FreeBSD__) +#if defined(__OpenBSD__) && defined(WSCONS_SUPPORT) + p->SetupAuto = SetupAuto; + p->SetMiscRes = SetMouseRes; +#endif +#if defined(__FreeBSD__) || defined(__OpenBSD__) p->FindDevice = FindDevice; #endif p->PreInit = bsdMousePreInit; diff --git a/hw/xfree86/os-support/bus/Pci.c b/hw/xfree86/os-support/bus/Pci.c index a0b639143..ab10485ee 100644 --- a/hw/xfree86/os-support/bus/Pci.c +++ b/hw/xfree86/os-support/bus/Pci.c @@ -1,4 +1,4 @@ -/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/bus/Pci.c,v 1.81 2003/09/24 02:43:34 dawes Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/bus/Pci.c,v 1.82 2004/01/16 15:39:04 tsi Exp $ */ /* * Pci.c - New server PCI access functions * @@ -1016,7 +1016,9 @@ xf86scanpci(int flags) if (!(devp->pci_bridge_control & PCI_PCI_BRIDGE_MASTER_ABORT_EN)) break; pciWriteByte(tag, PCI_PCI_BRIDGE_CONTROL_REG, - devp->pci_bridge_control & ~PCI_PCI_BRIDGE_MASTER_ABORT_EN); + devp->pci_bridge_control & + ~(PCI_PCI_BRIDGE_MASTER_ABORT_EN | + PCI_PCI_BRIDGE_SECONDARY_RESET)); break; default: @@ -1079,7 +1081,7 @@ xf86scanpci(int flags) if (!(devp->pci_bridge_control & PCI_PCI_BRIDGE_MASTER_ABORT_EN)) break; pciWriteByte(devp->tag, PCI_PCI_BRIDGE_CONTROL_REG, - devp->pci_bridge_control); + devp->pci_bridge_control & ~PCI_PCI_BRIDGE_SECONDARY_RESET); break; default: diff --git a/hw/xfree86/os-support/bus/zx1PCI.c b/hw/xfree86/os-support/bus/zx1PCI.c index ee92263fa..5d4d6a991 100644 --- a/hw/xfree86/os-support/bus/zx1PCI.c +++ b/hw/xfree86/os-support/bus/zx1PCI.c @@ -1,4 +1,4 @@ -/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/bus/zx1PCI.c,v 1.6 2003/12/11 17:11:39 tsi Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/bus/zx1PCI.c,v 1.8 2004/01/16 15:39:38 tsi Exp $ */ /* * Copyright (C) 2002-2003 The XFree86 Project, Inc. All Rights Reserved. * @@ -97,9 +97,10 @@ #define LBA_PORT5_CNTRL 0x1228U #define LBA_PORT6_CNTRL 0x1230U #define LBA_PORT7_CNTRL 0x1238U -#define LBA_ROPE_RESET 0x01UL -#define LBA_CLEAR_ERROR 0x10UL -#define LBA_HARD_FAIL 0x40UL +#define LBA_RESET_FUNCTION 0x0000000001UL +#define LBA_CLEAR_ERROR 0x0000000010UL +#define LBA_HARD_FAIL 0x0000000040UL +#define LBA_RESET_COMPLETE 0x0100000000UL #define ROPE_PAGE_CONTROL 0x1418U @@ -117,8 +118,11 @@ #define IOA_SUBORDINATE_BUS 0x0059U #define IOA_CONTROL 0x0108U -#define IOA_FORWARD_VGA 0x08UL -#define IOA_HARD_FAIL 0x40UL +#define IOA_RESET_FUNCTION 0x0000000001UL +#define IOA_FORWARD_VGA 0x0000000008UL +#define IOA_CLEAR_ERROR 0x0000000010UL +#define IOA_HARD_FAIL 0x0000000040UL +#define IOA_RESET_COMPLETE 0x0100000000UL #define IOA_LMMIO_BASE 0x0200U #define IOA_LMMIO_MASK 0x0208U @@ -134,12 +138,33 @@ #define IOA_ELMMIO_MASK 0x0258U #define IOA_EIOS_BASE 0x0260U #define IOA_EIOS_MASK 0x0268U - +#define IOA_GLOBAL_MASK 0x0270U #define IOA_SLAVE_CONTROL 0x0278U #define IOA_VGA_PEER_ENABLE 0x2000UL #define IOA_MSI_BASE 0x0280U #define IOA_MSI_MASK 0x0288U +#define IOA_DMA_BASE 0x02B0U +#define IOA_DMA_MASK 0x02B8U + +#define IOA_ERROR_CONFIG 0x0680U +#define IOA_ERROR_PIOWRITE 0x0001UL +#define IOA_ERROR_PIOREAD 0x0002UL +#define IOA_ERROR_DMAWRITE 0x0004UL +#define IOA_ERROR_DMAREAD 0x0008UL +#define IOA_ERROR_CONFIG_MASTER 0x0010UL +#define IOA_ERROR_SMART 0x0020UL +#define IOA_ERROR_FATAL_SERR 0x0040UL +#define IOA_ERROR_ASSERT_SERR 0x0080UL +/* ? 0x0100UL */ +#define IOA_ERROR_LOOPBACK 0x0200UL +#define IOA_ERROR_CONFIG_TARGET 0x0400UL +#define IOA_ERROR_IO_MASTER 0x0800UL +#define IOA_ERROR_IO_TARGET 0x1000UL +#define IOA_ERROR_MEM_MASTER 0x2000UL +#define IOA_ERROR_MEM_TARGET 0x4000UL +#define IOA_ERROR_HF_IO_FATAL 0x8000UL + #define RANGE_ENABLE 0x01UL /* In various base registers */ #define IO_MASK ((1UL << 16) - 1UL) @@ -156,10 +181,15 @@ static CARD8 *pZX1mio = NULL, *pZX1ioa = NULL; -static INT8 zx1_ropemap[8]; /* One for each (potential) rope */ -static CARD64 zx1_lbacntl[8]; /* " " " " " */ +/* Per-rope data */ +static INT8 zx1_ropemap[8]; +static CARD32 zx1_pciids[8]; +static CARD64 zx1_lbacntl[8]; static int zx1_busno[8], zx1_subno[8]; +/* Array of Booleans for non-empty buses */ +static INT8 zx1_busnmpt[MAX_PCI_BUSES]; + static pciBusFuncs_t zx1BusFuncs; static int zx1_fakebus = -1; static Bool zx1_hasvga = FALSE; @@ -292,7 +322,8 @@ ControlZX1Bridge(int bus, CARD16 mask, CARD16 value) * SLAVE_CONTROL register. */ tmp1 = MIO_QUAD(VGA_ROUTE); - tmp2 = IOA_QUAD(ropenum, IOA_CONTROL); + tmp2 = IOA_QUAD(ropenum, IOA_CONTROL) & + ~(IOA_RESET_FUNCTION | IOA_CLEAR_ERROR); if ((tmp1 & VGA_ENABLE) && ((tmp1 & 0x07UL) == ropenum)) { current |= PCI_PCI_BRIDGE_VGA_EN; if ((mask & PCI_PCI_BRIDGE_VGA_EN) && @@ -315,8 +346,9 @@ ControlZX1Bridge(int bus, CARD16 mask, CARD16 value) MIO_QUAD(VGA_ROUTE) = 0UL; tmp3 = IOA_QUAD(tmp1 & 0x07UL, IOA_CONTROL); if (tmp3 & IOA_FORWARD_VGA) - IOA_QUAD(tmp1 & 0x07UL, IOA_CONTROL) = - tmp3 & ~IOA_FORWARD_VGA; + IOA_QUAD(tmp1 & 0x07UL, IOA_CONTROL) = tmp3 & + ~(IOA_RESET_FUNCTION | IOA_FORWARD_VGA | + IOA_CLEAR_ERROR); } if (!(tmp2 & IOA_FORWARD_VGA)) { tmp2 |= IOA_FORWARD_VGA; @@ -329,7 +361,7 @@ ControlZX1Bridge(int bus, CARD16 mask, CARD16 value) /* Move on to master abort failure enablement */ tmp1 = MIO_QUAD((ropenum << 3) + LBA_PORT0_CNTRL) & - ~(LBA_ROPE_RESET | LBA_CLEAR_ERROR); + ~(LBA_RESET_FUNCTION | LBA_CLEAR_ERROR); if ((tmp1 & LBA_HARD_FAIL) || (tmp2 & IOA_HARD_FAIL)) { current |= PCI_PCI_BRIDGE_MASTER_ABORT_EN; if ((mask & PCI_PCI_BRIDGE_MASTER_ABORT_EN) && @@ -520,14 +552,14 @@ xf86PreScanZX1(void) /* Prevent hard-fails */ zx1_lbacntl[i] = MIO_QUAD((i << 3) + LBA_PORT0_CNTRL) & - ~(LBA_ROPE_RESET | LBA_CLEAR_ERROR); + ~(LBA_RESET_FUNCTION | LBA_CLEAR_ERROR); if (zx1_lbacntl[i] & LBA_HARD_FAIL) MIO_QUAD((i << 3) + LBA_PORT0_CNTRL) = zx1_lbacntl[i] & ~LBA_HARD_FAIL; /* Poke for an ioa */ - tmp = IOA_LONG(i, PCI_ID_REG); - switch ((CARD32)tmp) { + zx1_pciids[i] = IOA_LONG(i, PCI_ID_REG); + switch (zx1_pciids[i]) { case DEVID(VENDOR_HP, CHIP_ELROY): case DEVID(VENDOR_HP, CHIP_ZX1_LBA): /* Mercury */ case DEVID(VENDOR_HP, CHIP_ZX1_AGP8): /* QuickSilver */ @@ -539,10 +571,10 @@ xf86PreScanZX1(void) break; default: - if ((CARD16)(tmp + 1U) > (CARD16)1U) + if ((CARD16)(zx1_pciids[i] + 1U) > (CARD16)1U) xf86MsgVerb(X_NOTICE, 0, "HP ZX1: Unexpected vendor/device id 0x%08X" - " on rope %d\n", (CARD32)tmp, i); + " on rope %d\n", zx1_pciids[i], i); /* Nobody home, or not the "right" kind of rope guest */ /* @@ -906,6 +938,9 @@ xf86PostScanZX1(void) if (!pZX1mio) return; + (void)memset(zx1_busnmpt, FALSE, sizeof(zx1_busnmpt)); + pBusInfo = pciBusInfo[0]; + /* * Certain 2.4 & 2.5 Linux kernels add fake PCI devices. Remove them to * prevent any possible interference with our PCI validation. @@ -929,6 +964,8 @@ xf86PostScanZX1(void) *ppPCI++ = pPCI; idx++; + zx1_busnmpt[pPCI->busnum] = TRUE; + if (zx1_hasvga) continue; @@ -953,8 +990,8 @@ xf86PostScanZX1(void) } /* - * Restore hard-fail settings and figure out the actual subordinate bus - * numbers. + * Restore hard-fail settings and figure out the actual secondary and + * subordinate bus numbers. */ for (i = 0; i < 8; i++) { if (zx1_ropemap[i] != i) @@ -968,6 +1005,14 @@ xf86PostScanZX1(void) if (zx1_fakebus <= zx1_subno[i]) zx1_fakebus = zx1_subno[i] + 1; + + while (!zx1_busnmpt[zx1_busno[i]]) { + if (zx1_busno[i]) /* Info for bus zero is in static storage */ + xfree(pciBusInfo[zx1_busno[i]]); + pciBusInfo[zx1_busno[i]++] = NULL; + if (zx1_busno[i] > zx1_subno[i]) + break; + } } if (zx1_fakebus >= pciNumBuses) { @@ -977,13 +1022,13 @@ xf86PostScanZX1(void) } /* Set up our extra bus functions */ - zx1BusFuncs = *(pciBusInfo[0]->funcs); + zx1BusFuncs = *(pBusInfo->funcs); zx1BusFuncs.pciControlBridge = ControlZX1Bridge; zx1BusFuncs.pciGetBridgeResources = GetZX1BridgeResources; /* Set up our own fake bus to act as the root segment */ - zx1FakeBus.configMech = pciBusInfo[0]->configMech; - zx1FakeBus.numDevices = pciBusInfo[0]->numDevices; + zx1FakeBus.configMech = pBusInfo->configMech; + zx1FakeBus.numDevices = pBusInfo->numDevices; zx1FakeBus.primary_bus = zx1_fakebus; pciBusInfo[zx1_fakebus] = &zx1FakeBus; @@ -1018,7 +1063,8 @@ xf86PostScanZX1(void) /* Add a fake PCI-to-PCI bridge to represent each active rope */ for (i = 0; i < 8; i++) { - if ((zx1_ropemap[i] != i) || !(pBusInfo = pciBusInfo[zx1_busno[i]])) + if ((zx1_ropemap[i] != i) || (zx1_busno[i] > zx1_subno[i]) || + !(pBusInfo = pciBusInfo[zx1_busno[i]])) continue; if (++idx >= MAX_PCI_DEVICES) @@ -1028,7 +1074,7 @@ xf86PostScanZX1(void) pPCI->devnum = i | 0x10; /* pPCI->funcnum = 0; */ pPCI->tag = PCI_MAKE_TAG(zx1_fakebus, pPCI->devnum, 0); - pPCI->pci_device_vendor = DEVID(VENDOR_HP, CHIP_ZX1_LBA); + pPCI->pci_device_vendor = zx1_pciids[i]; pPCI->pci_base_class = PCI_CLASS_BRIDGE; pPCI->pci_sub_class = PCI_SUBCLASS_BRIDGE_PCI; pPCI->pci_header_type = 1; @@ -1044,6 +1090,9 @@ xf86PostScanZX1(void) /* Plug in chipset routines */ pBusInfo->funcs = &zx1BusFuncs; + /* Set bridge control register for scanpci utility */ + pPCI->pci_bridge_control = ControlZX1Bridge(zx1_busno[i], 0, 0); + #ifdef OLD_FORMAT xf86MsgVerb(X_INFO, 2, "PCI: BusID 0x%.2x,0x%02x,0x%1x " "ID 0x%04x,0x%04x Rev 0x%02x Class 0x%02x,0x%02x\n", diff --git a/hw/xfree86/utils/ioport/ioport.c b/hw/xfree86/utils/ioport/ioport.c index 4bb20ef1b..b977936d3 100644 --- a/hw/xfree86/utils/ioport/ioport.c +++ b/hw/xfree86/utils/ioport/ioport.c @@ -1,6 +1,6 @@ -/* $XFree86: xc/programs/Xserver/hw/xfree86/etc/ioport.c,v 1.4 2003/01/01 19:16:41 tsi Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/xfree86/etc/ioport.c,v 1.5 2004/01/05 16:42:10 tsi Exp $ */ /* - * Copyright 2002 through 2003 by Marc Aurele La France (TSI @ UQV), tsi@xfree86.org + * Copyright 2002 through 2004 by Marc Aurele La France (TSI @ UQV), tsi@xfree86.org * * Permission to use, copy, modify, distribute, and sell this software and its * documentation for any purpose is hereby granted without fee, provided that diff --git a/hw/xfree86/utils/xorgcfg/config.h b/hw/xfree86/utils/xorgcfg/config.h index ea4363e9c..203687f51 100644 --- a/hw/xfree86/utils/xorgcfg/config.h +++ b/hw/xfree86/utils/xorgcfg/config.h @@ -26,7 +26,7 @@ * * Author: Paulo César Pereira de Andrade <pcpa@conectiva.com.br> * - * $XFree86: xc/programs/Xserver/hw/xfree86/xf86cfg/config.h,v 1.18 2003/12/19 02:05:38 dawes Exp $ + * $XFree86: xc/programs/Xserver/hw/xfree86/xf86cfg/config.h,v 1.20 2003/12/30 18:55:11 tsi Exp $ */ #include <X11/IntrinsicP.h> @@ -37,10 +37,12 @@ #include <stdlib.h> #include <dirent.h> #include <string.h> -#include <unistd.h> -#if defined(sun) && defined(SVR4) +#ifdef sun +#undef index +#undef rindex #include <strings.h> #endif +#include <unistd.h> #include <stdarg.h> diff --git a/hw/xfree86/vbe/vbe.h b/hw/xfree86/vbe/vbe.h index 30756119d..620e3ec1b 100644 --- a/hw/xfree86/vbe/vbe.h +++ b/hw/xfree86/vbe/vbe.h @@ -1,4 +1,4 @@ -/* $XFree86: xc/programs/Xserver/hw/xfree86/vbe/vbe.h,v 1.3 2003/11/14 14:58:45 tsi Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/xfree86/vbe/vbe.h,v 1.4 2004/01/07 04:28:06 dawes Exp $ */ /* * XFree86 vbe module @@ -60,7 +60,7 @@ typedef struct vbeControllerInfoBlock { CARD8 OemData[256]; } vbeControllerInfoRec, *vbeControllerInfoPtr; -#ifdef __GNUC__ +#if defined(__GNUC__) || defined(SCO) || defined(__USLC__) #pragma pack() /* All GCC versions recognise this syntax */ #else #pragma pack(0) diff --git a/hw/xfree86/xaa/xaaPict.c b/hw/xfree86/xaa/xaaPict.c index fecbbcfa0..ce72d742c 100644 --- a/hw/xfree86/xaa/xaaPict.c +++ b/hw/xfree86/xaa/xaaPict.c @@ -1,5 +1,5 @@ /* - * $XFree86: xc/programs/Xserver/hw/xfree86/xaa/xaaPict.c,v 1.18 2003/04/23 18:35:34 eich Exp $ + * $XFree86: xc/programs/Xserver/hw/xfree86/xaa/xaaPict.c,v 1.19 2004/01/26 18:54:55 mvojkovi Exp $ * * Copyright © 2000 Keith Packard, member of The XFree86 Project, Inc. * @@ -219,6 +219,9 @@ XAADoComposite ( ySrc += pSrc->pDrawable->y; if(pMask) { + if(pMask->componentAlpha) + return FALSE; + /* for now we only do it if there is a 1x1 (solid) source */ if((pSrc->pDrawable->width == 1) && (pSrc->pDrawable->height == 1)) { diff --git a/hw/xwin/winmultiwindowshape.c b/hw/xwin/winmultiwindowshape.c index 5c623d14e..2d6a6f2cc 100755 --- a/hw/xwin/winmultiwindowshape.c +++ b/hw/xwin/winmultiwindowshape.c @@ -28,7 +28,7 @@ * Authors: Kensuke Matsuzaki * Harold L Hunt II */ -/* $XFree86: xc/programs/Xserver/hw/xwin/winmultiwindowshape.c,v 1.2 2003/11/10 18:22:44 tsi Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/xwin/winmultiwindowshape.c,v 1.3 2003/12/22 01:34:20 dickey Exp $ */ #ifdef SHAPE @@ -117,9 +117,9 @@ winReshapeMultiWindow (WindowPtr pWin) if (!wBoundingShape (pWin)) return; - REGION_NULL(pScreen, &rrNewShape); - REGION_COPY(pScreen, &rrNewShape, wBoundingShape(pWin)); - REGION_TRANSLATE(pScreen, + REGION_NULL(pWin->drawable.pScreen, &rrNewShape); + REGION_COPY(pWin->drawable.pScreen, &rrNewShape, wBoundingShape(pWin)); + REGION_TRANSLATE(pWin->drawable.pScreen, &rrNewShape, pWin->borderWidth, pWin->borderWidth); @@ -138,7 +138,7 @@ winReshapeMultiWindow (WindowPtr pWin) if (!GetClientRect (pWinPriv->hWnd, &rcClient)) { ErrorF ("winReshape - GetClientRect failed, bailing: %d\n", - GetLastError ()); + (int) GetLastError ()); return; } @@ -150,7 +150,7 @@ winReshapeMultiWindow (WindowPtr pWin) if (!GetWindowRect (pWinPriv->hWnd, &rcWindow)) { ErrorF ("winReshape - GetWindowRect failed, bailing: %d\n", - GetLastError ()); + (int) GetLastError ()); return; } @@ -165,7 +165,7 @@ winReshapeMultiWindow (WindowPtr pWin) { ErrorF ("winReshape - Initial CreateRectRgn (%d, %d, %d, %d) " "failed: %d\n", - 0, 0, rcWindow.right, iOffsetY, GetLastError ()); + 0, 0, (int) rcWindow.right, iOffsetY, (int) GetLastError ()); } /* Loop through all rectangles in the X region */ @@ -185,7 +185,7 @@ winReshapeMultiWindow (WindowPtr pWin) pRects->y1 + iOffsetY - 1, pRects->x2 + iOffsetX - 1, pRects->y2 + iOffsetY - 1, - GetLastError (), + (int) GetLastError (), pRects->x1, pRects->x2, iOffsetX, pRects->y1, pRects->y2, iOffsetY); } @@ -194,7 +194,7 @@ winReshapeMultiWindow (WindowPtr pWin) if (CombineRgn (hRgn, hRgn, hRgnRect, RGN_OR) == ERROR) { ErrorF ("winReshape - CombineRgn () failed: %d\n", - GetLastError ()); + (int) GetLastError ()); } /* Delete the temporary Windows region */ @@ -205,7 +205,7 @@ winReshapeMultiWindow (WindowPtr pWin) pWinPriv->hRgn = hRgn; } - REGION_UNINIT(pScreen, &rrNewShape); + REGION_UNINIT(pWin->drawable.pScreen, &rrNewShape); return; } diff --git a/hw/xwin/winwindow.c b/hw/xwin/winwindow.c index 6515c8596..76dfc5d89 100644 --- a/hw/xwin/winwindow.c +++ b/hw/xwin/winwindow.c @@ -28,7 +28,7 @@ * Authors: Harold L Hunt II * Kensuke Matsuzaki */ -/* $XFree86: xc/programs/Xserver/hw/xwin/winwindow.c,v 1.9 2003/11/10 18:22:44 tsi Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/xwin/winwindow.c,v 1.10 2003/12/22 01:34:20 dickey Exp $ */ #include "win.h" @@ -98,7 +98,7 @@ winCopyWindowNativeGDI (WindowPtr pWin, int dx, dy; int i, nbox; WindowPtr pwinRoot; - BoxPtr pBoxDst, pBoxSrc; + BoxPtr pBoxDst; ScreenPtr pScreen = pWin->drawable.pScreen; winScreenPriv(pScreen); @@ -465,9 +465,7 @@ void winReshapePRootless (WindowPtr pWin) { int nRects; -#if 0 ScreenPtr pScreen = pWin->drawable.pScreen; -#endif RegionRec rrNewShape; BoxPtr pShape, pRects, pEnd; HRGN hRgn, hRgnRect; diff --git a/mi/mibank.c b/mi/mibank.c index cc2796edb..11708434c 100644 --- a/mi/mibank.c +++ b/mi/mibank.c @@ -1,5 +1,5 @@ /* - * Copyright 1997 through 2003 by Marc Aurele La France (TSI @ UQV), tsi@xfree86.org + * Copyright 1997 through 2004 by Marc Aurele La France (TSI @ UQV), tsi@xfree86.org * * Permission to use, copy, modify, distribute, and sell this software and its * documentation for any purpose is hereby granted without fee, provided that @@ -44,7 +44,7 @@ * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ -/* $XFree86: xc/programs/Xserver/mi/mibank.c,v 1.15 2003/11/10 18:39:16 tsi Exp $ */ +/* $XFree86: xc/programs/Xserver/mi/mibank.c,v 1.16 2004/01/05 16:42:10 tsi Exp $ */ /* * This thing originated from an idea of Edwin Goei and his bank switching diff --git a/mi/mibank.h b/mi/mibank.h index c3aa69379..eac53db20 100644 --- a/mi/mibank.h +++ b/mi/mibank.h @@ -1,5 +1,5 @@ /* - * Copyright 1997 through 2003 by Marc Aurele La France (TSI @ UQV), tsi@xfree86.org + * Copyright 1997 through 2004 by Marc Aurele La France (TSI @ UQV), tsi@xfree86.org * * Permission to use, copy, modify, distribute, and sell this software and its * documentation for any purpose is hereby granted without fee, provided that @@ -20,7 +20,7 @@ * PERFORMANCE OF THIS SOFTWARE. */ -/* $XFree86: xc/programs/Xserver/mi/mibank.h,v 1.10 2003/01/01 19:16:42 tsi Exp $ */ +/* $XFree86: xc/programs/Xserver/mi/mibank.h,v 1.11 2004/01/05 16:42:10 tsi Exp $ */ #ifndef __MIBANK_H__ #define __MIBANK_H__ 1 diff --git a/miext/rootless/safeAlpha/safeAlpha.h b/miext/rootless/safeAlpha/safeAlpha.h index 440a5ecc9..90efec5c8 100644 --- a/miext/rootless/safeAlpha/safeAlpha.h +++ b/miext/rootless/safeAlpha/safeAlpha.h @@ -26,13 +26,12 @@ * holders shall not be used in advertising or otherwise to promote the sale, * use or other dealings in this Software without prior written authorization. */ -/* $XFree86: xc/programs/Xserver/miext/rootless/safeAlpha/safeAlpha.h,v 1.2 2003/10/18 00:00:34 torrey Exp $ */ +/* $XFree86: xc/programs/Xserver/miext/rootless/safeAlpha/safeAlpha.h,v 1.3 2004/01/19 01:22:48 torrey Exp $ */ #ifndef _SAFEALPHA_H #define _SAFEALPHA_H #include "picturestr.h" -#include "rootlessCommon.h" void SafeAlphaPaintWindow(WindowPtr pWin, RegionPtr pRegion, int what); diff --git a/miext/rootless/safeAlpha/safeAlphaPicture.c b/miext/rootless/safeAlpha/safeAlphaPicture.c index ad9360c7e..3c9d39628 100644 --- a/miext/rootless/safeAlpha/safeAlphaPicture.c +++ b/miext/rootless/safeAlpha/safeAlphaPicture.c @@ -32,7 +32,7 @@ * * Copyright © 2000 Keith Packard, member of The XFree86 Project, Inc. */ - /* $XFree86: xc/programs/Xserver/miext/rootless/safeAlpha/safeAlphaPicture.c,v 1.3 2003/10/24 00:33:15 torrey Exp $ */ + /* $XFree86: xc/programs/Xserver/miext/rootless/safeAlpha/safeAlphaPicture.c,v 1.4 2004/01/19 01:22:48 torrey Exp $ */ #ifdef RENDER @@ -41,6 +41,7 @@ #include "mipict.h" #include "fbpict.h" #include "safeAlpha.h" +#include "rootlessCommon.h" # define mod(a,b) ((b) == 1 ? 0 : (a) >= 0 ? (a) % (b) : (b) - (-a) % (b)) diff --git a/miext/rootless/safeAlpha/safeAlphaWindow.c b/miext/rootless/safeAlpha/safeAlphaWindow.c index 2c3761875..51acb01c5 100644 --- a/miext/rootless/safeAlpha/safeAlphaWindow.c +++ b/miext/rootless/safeAlpha/safeAlphaWindow.c @@ -31,10 +31,11 @@ * * Copyright © 1998 Keith Packard */ -/* $XFree86: xc/programs/Xserver/miext/rootless/safeAlpha/safeAlphaWindow.c,v 1.1 2003/09/16 00:36:20 torrey Exp $ */ +/* $XFree86: xc/programs/Xserver/miext/rootless/safeAlpha/safeAlphaWindow.c,v 1.2 2004/01/19 01:22:48 torrey Exp $ */ #include "fb.h" #include "safeAlpha.h" +#include "rootlessCommon.h" #ifdef PANORAMIX #include "panoramiX.h" diff --git a/os/access.c b/os/access.c index 77dcebe20..14b61839c 100644 --- a/os/access.c +++ b/os/access.c @@ -45,7 +45,7 @@ ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ******************************************************************/ -/* $XFree86: xc/programs/Xserver/os/access.c,v 3.50 2003/11/03 05:12:00 tsi Exp $ */ +/* $XFree86: xc/programs/Xserver/os/access.c,v 3.54 2004/01/03 17:38:39 herrb Exp $ */ #ifdef WIN32 #include <X11/Xwinsock.h> @@ -645,6 +645,20 @@ DefineLocalHost: #include <arpa/inet.h> #endif +#if defined(IPv6) && defined(AF_INET6) +static void +in6_fillscopeid(struct sockaddr_in6 *sin6) +{ +#if defined(__KAME__) + if (IN6_IS_ADDR_LINKLOCAL(&sin6->sin6_addr)) { + sin6->sin6_scope_id = + ntohs(*(u_int16_t *)&sin6->sin6_addr.s6_addr[2]); + sin6->sin6_addr.s6_addr[2] = sin6->sin6_addr.s6_addr[3] = 0; + } +#endif +} +#endif + void DefineSelf (int fd) { @@ -761,6 +775,10 @@ DefineSelf (int fd) #endif /* DNETCONN */ if (family == -1 || family == FamilyLocal) continue; +#if defined(IPv6) && defined(AF_INET6) + if (family == FamilyInternet6) + in6_fillscopeid((struct sockaddr_in6 *)&IFR_IFR_ADDR); +#endif #ifdef DEF_SELF_DEBUG if (family == FamilyInternet) ErrorF("Xserver: DefineSelf(): ifname = %s, addr = %d.%d.%d.%d\n", @@ -898,10 +916,24 @@ DefineSelf (int fd) family = ConvertAddr(ifr->ifa_addr, &len, (pointer *)&addr); if (family == -1 || family == FamilyLocal) continue; +#if defined(IPv6) && defined(AF_INET6) + if (family == FamilyInternet6) + in6_fillscopeid((struct sockaddr_in6 *)ifr->ifa_addr); +#endif + #ifdef DEF_SELF_DEBUG if (family == FamilyInternet) ErrorF("Xserver: DefineSelf(): ifname = %s, addr = %d.%d.%d.%d\n", ifr->ifa_name, addr[0], addr[1], addr[2], addr[3]); +#if defined(IPv6) && defined(AF_INET6) + else if (family == FamilyInternet6) { + char cp[INET6_ADDRSTRLEN]; + + inet_ntop(AF_INET6, addr, cp, sizeof(cp)); + ErrorF("Xserver: DefineSelf(): ifname = %s addr = %s\n", + ifr->ifa_name, cp); + } +#endif #endif /* DEF_SELF_DEBUG */ for (host = selfhosts; host != NULL && !addrEqual(family, addr, len, host); @@ -923,17 +955,34 @@ DefineSelf (int fd) /* * If this isn't an Internet Address, don't register it. */ - if (family != FamilyInternet) + if (family != FamilyInternet +#if defined(IPv6) && defined(AF_INET6) + && family != FamilyInternet6 +#endif + ) continue; /* - * ignore 'localhost' entries as they're not usefule + * ignore 'localhost' entries as they're not useful * on the other end of the wire */ - if (len == 4 && + if (ifr->ifa_flags & IFF_LOOPBACK) + continue; + + if (family == FamilyInternet && addr[0] == 127 && addr[1] == 0 && - addr[2] == 0 && addr[2] == 1) + addr[2] == 0 && addr[3] == 1) continue; +#if defined(IPv6) && defined(AF_INET6) + else if (family == FamilyInternet6 && + IN6_IS_ADDR_LOOPBACK((struct in6_addr *)addr)) + continue; +#endif XdmcpRegisterConnection(family, (char *)addr, len); +#if defined(IPv6) && defined(AF_INET6) + if (family == FamilyInternet6) + /* IPv6 doesn't support broadcasting, so we drop out here */ + continue; +#endif if ((ifr->ifa_flags & IFF_BROADCAST) && (ifr->ifa_flags & IFF_UP)) broad_addr = *ifr->ifa_broadaddr; diff --git a/os/utils.c b/os/utils.c index e01793604..924d97471 100644 --- a/os/utils.c +++ b/os/utils.c @@ -49,7 +49,7 @@ OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ -/* $XFree86: xc/programs/Xserver/os/utils.c,v 3.95 2003/10/01 18:36:38 alanh Exp $ */ +/* $XFree86: xc/programs/Xserver/os/utils.c,v 3.97 2004/01/09 00:35:06 dawes Exp $ */ #ifdef __CYGWIN__ #include <stdlib.h> @@ -244,6 +244,7 @@ LockServer(void) int lfd, i, haslock, l_pid, t; char *tmppath = NULL; int len; + char port[20]; if (nolock) return; /* @@ -258,13 +259,14 @@ LockServer(void) FatalError("No TMP dir found\n"); #endif + sprintf(port, "%d", atoi(display)); len = strlen(LOCK_PREFIX) > strlen(LOCK_TMP_PREFIX) ? strlen(LOCK_PREFIX) : strlen(LOCK_TMP_PREFIX); - len += strlen(tmppath) + strlen(display) + strlen(LOCK_SUFFIX) + 1; + len += strlen(tmppath) + strlen(port) + strlen(LOCK_SUFFIX) + 1; if (len > sizeof(LockFile)) - FatalError("Display name `%s' is too long\n", display); - (void)sprintf(tmp, "%s" LOCK_TMP_PREFIX "%s" LOCK_SUFFIX, tmppath, display); - (void)sprintf(LockFile, "%s" LOCK_PREFIX "%s" LOCK_SUFFIX, tmppath, display); + FatalError("Display name `%s' is too long\n", port); + (void)sprintf(tmp, "%s" LOCK_TMP_PREFIX "%s" LOCK_SUFFIX, tmppath, port); + (void)sprintf(LockFile, "%s" LOCK_PREFIX "%s" LOCK_SUFFIX, tmppath, port); /* * Create a temporary file containing our PID. Attempt three times @@ -359,7 +361,7 @@ LockServer(void) */ unlink(tmp); FatalError("Server is already active for display %s\n%s %s\n%s\n", - display, "\tIf this server is no longer running, remove", + port, "\tIf this server is no longer running, remove", LockFile, "\tand start again."); } } @@ -584,8 +586,10 @@ ProcessCommandLine(int argc, char *argv[]) defaultKeyboardControl.autoRepeat = TRUE; -#ifdef PART_NET - PartialNetwork = TRUE; +#ifdef NO_PART_NET + PartialNetwork = FALSE; +#else + PartialNetwork = TRUE; #endif for ( i = 1; i < argc; i++ ) diff --git a/os/xdmcp.c b/os/xdmcp.c index d9aa52716..cbd43f45b 100644 --- a/os/xdmcp.c +++ b/os/xdmcp.c @@ -13,7 +13,7 @@ * without express or implied warranty. * */ -/* $XFree86: xc/programs/Xserver/os/xdmcp.c,v 3.29 2003/11/22 04:51:02 dawes Exp $ */ +/* $XFree86: xc/programs/Xserver/os/xdmcp.c,v 3.32 2004/01/01 17:09:29 herrb Exp $ */ #ifdef WIN32 /* avoid conflicting definitions */ @@ -758,14 +758,6 @@ XdmcpSelectHost( int host_len, ARRAY8Ptr AuthenticationName) { -#if defined(IPv6) && defined(AF_INET6) - /* Don't need list of addresses for host anymore */ - if (mgrAddrFirst != NULL) { - freeaddrinfo(mgrAddrFirst); - mgrAddrFirst = NULL; - mgrAddr = NULL; - } -#endif state = XDM_START_CONNECTION; memmove(&req_sockaddr, host_sockaddr, host_len); req_socklen = host_len; @@ -1161,7 +1153,7 @@ send_query_msg(void) socketfd = xdmcpSocket6; #endif XdmcpFlush (socketfd, &buffer, (XdmcpNetaddr) &ManagerAddress, - sizeof (ManagerAddress)); + ManagerAddressLen); } } @@ -1213,9 +1205,19 @@ send_request_msg(void) XdmcpHeader header; int length; int i; + CARD16 XdmcpConnectionType; ARRAY8 authenticationData; int socketfd = xdmcpSocket; + switch (SOCKADDR_FAMILY(ManagerAddress)) + { + case AF_INET: XdmcpConnectionType=FamilyInternet; break; +#if defined(IPv6) && defined(AF_INET6) + case AF_INET6: XdmcpConnectionType=FamilyInternet6; break; +#endif + default: XdmcpConnectionType=0xffff; break; + } + header.version = XDM_PROTOCOL_VERSION; header.opcode = (CARD16) REQUEST; @@ -1246,8 +1248,27 @@ send_request_msg(void) return; } XdmcpWriteCARD16 (&buffer, DisplayNumber); - XdmcpWriteARRAY16 (&buffer, &ConnectionTypes); - XdmcpWriteARRAYofARRAY8 (&buffer, &ConnectionAddresses); + XdmcpWriteCARD8 (&buffer, ConnectionTypes.length); + + /* The connection array is send reordered, so that connections of */ + /* the same address type as the XDMCP manager connection are send */ + /* first. This works around a bug in xdm. mario@klebsch.de */ + for (i = 0; i < (int)ConnectionTypes.length; i++) + if (ConnectionTypes.data[i]==XdmcpConnectionType) + XdmcpWriteCARD16 (&buffer, ConnectionTypes.data[i]); + for (i = 0; i < (int)ConnectionTypes.length; i++) + if (ConnectionTypes.data[i]!=XdmcpConnectionType) + XdmcpWriteCARD16 (&buffer, ConnectionTypes.data[i]); + + XdmcpWriteCARD8 (&buffer, ConnectionAddresses.length); + for (i = 0; i < (int)ConnectionAddresses.length; i++) + if ( (i<ConnectionTypes.length) && + (ConnectionTypes.data[i]==XdmcpConnectionType) ) + XdmcpWriteARRAY8 (&buffer, &ConnectionAddresses.data[i]); + for (i = 0; i < (int)ConnectionAddresses.length; i++) + if ( (i>=ConnectionTypes.length) || + (ConnectionTypes.data[i]!=XdmcpConnectionType) ) + XdmcpWriteARRAY8 (&buffer, &ConnectionAddresses.data[i]); XdmcpWriteARRAY8 (&buffer, AuthenticationName); XdmcpWriteARRAY8 (&buffer, &authenticationData); @@ -24,7 +24,7 @@ OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ********************************************************/ -/* $XFree86: xc/programs/Xserver/xkb/xkb.c,v 3.22 2003/11/17 22:20:45 dawes Exp $ */ +/* $XFree86: xc/programs/Xserver/xkb/xkb.c,v 3.23 2003/12/22 17:48:11 tsi Exp $ */ #include <stdio.h> #include "X.h" @@ -2307,8 +2307,7 @@ ProcXkbSetMap(ClientPtr client) stuff->maxKeyCode= xkb->max_key_code; } else { - if ((stuff->minKeyCode<XkbMinLegalKeyCode)|| - (stuff->maxKeyCode>XkbMaxLegalKeyCode)) { + if (!XkbIsLegalKeycode(stuff->minKeyCode)) { client->errorValue= _XkbErrCode3(2,stuff->minKeyCode, stuff->maxKeyCode); return BadValue; diff --git a/xkb/xkbInit.c b/xkb/xkbInit.c index 064311d5e..6ed146494 100644 --- a/xkb/xkbInit.c +++ b/xkb/xkbInit.c @@ -24,7 +24,7 @@ OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ********************************************************/ -/* $XFree86: xc/programs/Xserver/xkb/xkbInit.c,v 3.32 2003/11/17 22:20:46 dawes Exp $ */ +/* $XFree86: xc/programs/Xserver/xkb/xkbInit.c,v 3.33 2003/12/22 17:48:12 tsi Exp $ */ #include <stdio.h> #include <stdlib.h> @@ -716,7 +716,7 @@ XkbRF_VarDefsRec defs; if (ok && (finfo.xkb!=NULL)) { XkbDescPtr xkb; - int minKC,maxKC; + KeyCode minKC,maxKC; xkb= finfo.xkb; minKC= xkb->min_key_code; |