diff options
Diffstat (limited to 'hw/xfree86')
-rw-r--r-- | hw/xfree86/common/xf86.h | 3 | ||||
-rw-r--r-- | hw/xfree86/common/xf86Globals.c | 4 | ||||
-rw-r--r-- | hw/xfree86/common/xf86Helper.c | 61 | ||||
-rw-r--r-- | hw/xfree86/common/xf86Init.c | 63 | ||||
-rw-r--r-- | hw/xfree86/common/xf86Priv.h | 4 | ||||
-rw-r--r-- | hw/xfree86/common/xf86Privstr.h | 12 | ||||
-rw-r--r-- | hw/xfree86/doc/README.fonts | 37 | ||||
-rw-r--r-- | hw/xfree86/doc/changelogs/CHANGELOG | 204 | ||||
-rw-r--r-- | hw/xfree86/doc/sgml/DESIGN.sgml | 6 | ||||
-rw-r--r-- | hw/xfree86/int10/helper_exec.c | 6 | ||||
-rw-r--r-- | hw/xfree86/loader/coffloader.c | 6 | ||||
-rw-r--r-- | hw/xfree86/loader/fontsym.c | 6 | ||||
-rw-r--r-- | hw/xfree86/os-support/bsd/alpha_video.c | 46 | ||||
-rw-r--r-- | hw/xfree86/os-support/bsd/bsd_kbd.c | 4 | ||||
-rw-r--r-- | hw/xfree86/os-support/bsd/bsd_mouse.c | 67 | ||||
-rw-r--r-- | hw/xfree86/os-support/bus/Pci.c | 8 | ||||
-rw-r--r-- | hw/xfree86/os-support/bus/zx1PCI.c | 99 | ||||
-rw-r--r-- | hw/xfree86/utils/ioport/ioport.c | 4 | ||||
-rw-r--r-- | hw/xfree86/utils/xorgcfg/config.h | 8 | ||||
-rw-r--r-- | hw/xfree86/vbe/vbe.h | 4 | ||||
-rw-r--r-- | hw/xfree86/xaa/xaaPict.c | 5 |
21 files changed, 527 insertions, 130 deletions
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)) { |