Release Notes for XFree86® 4.6.0
: Summary of new features in 4.6.0.
Previous: Configuration: a Quick Synopsis
3. Summary of new features in 4.6.0.
This is a sampling of the new features in XFree86 4.6.0. A more
complete list of changes can be found in the CHANGELOG that is part of
the XFree86 source tree. It can also be viewed online at our CVSweb server.
3.1. Security Updates
The following security issue has been fixed in this release:
3.2. Video Driver Enhancements
- Remove cfb support from the i740, nsc, s3virge, siliconmotion and via
- A new driver for ASPEED Technologies' AST2000 graphics chips.
- Reinstate support for all ATI adapters on all architectures supported
by the XFree86 common layer.
- Restore accuracy of atimisc's clock probe despite certain I/O errors.
- Change the atimisc driver on big-endian systems to allow depth 24
even if the big-endian aperture is not available, by swapping RGB masks.
- Fix an ATI driver probe crash.
- Workaround for screen-to-screen copy corruption in second-generation
- Improve accuracy of atmisc's calculations that are based on a
29.5 MHz reference clock.
- Chrontel 8398 related changes to the Mach64 support.
- Fix one cause of video memory corruption when using XAA with second
generation integrated Mach64 controllers.
- Fix the size of the DAC registers storage for pm2v and pm3 chipsets.
- Save and restore more of the mode on server entry.
- Make sure the DDC-probed parameters are applied before modes are
- Fix some bad alignment problems when allocating memory from the end of
- Adjust the display width according to the VESA BIOS scanline
- Add support for the Intel E7221 server chipset.
- Improve display switching support for mobile chipsets using the
Fn+F? combination keys.
- Add DirectColor support for the i830 and later.
- Add gamma correction support for the i830 and later.
- Add rotation support for the i830 and later.
- Improve refresh rate selection for custom modelines.
- Add support for the 945G and 945GM.
- Support custom video modes in the video BIOS, when available.
- Fix some offset, pitch, and overlay scaler size problems with the
video overlay. This solves various spontaneous lockups.
- Fix text restoration when display switching has been activated.
- Add support to check the built-in VESA mode list.
- Fix XVideo when operating in one line mode and video is pushed off the
top of the screen, and fix some XVideo skew problems at certain resolutions.
- Sync the accelerator before calling AdjustFrame to avoid lockups.
- Fix a lockup when spend and resume when playing video (shutdown the
overlay on LeaveVT).
- Support 1920x1088 for HDTV movies using a new option (LinearAlloc) to add
more memory for the video overlay.
- Add ACPI hotkey switching support.
- Reduce the Mystique's SYSCLK from 197 MHz to 166 MHz,
allowing the higher clock to still be used when the "OverclockMem" option
is activated. This fixes the instability seen on some Mystique cards,
and removes the need for the workaround in previous releases.
- Revert the HALlib MGASetDisplayStart interface back to
- Make 8+24 mode honour the default visual.
- Some of the panel DPMS support in 4.5.0 only works for TMDS, and
caused some panel blooming on some LVDS panels, so skip the DPMS panel code
when the panel is LVDS.
- Add DPMS support for GeForce4 and newer laptops.
- Fix some console restore code for the NV11.
- Workaround for 512MB video cards (can only map 256MB of it).
- Fix a graphics acceleration hang that occurred on some NVIDIA GeForce
- Fix a potential problem with pixmap cache corruption on GeForce 6xxx
and 7xxx parts.
- Add support for new hardware.
- Merge in support for SiliconMotion's SM501 controller.
- Add screen-to-screen copy, solid fill, and CPU-to-screen colour
- Map more of a Sun CG6's video memory for use by the pixmap cache.
- Prevent turning off the FPU on NetBSD.
- Fix build problems on NetBSD (global register usage declaration,
and increase stack usage).
- Workaround for VRAM corruption when unblanking FFB1 adapters.
- Do not wait for vertical retrace on PC98 systems.
- Fix an offset problem in Xv for the Cyber9397 and later chipsets.
- Add XGI (Trident) Volari XP5 support to the trident driver.
- Add a "ConnectedDevice" option to the via driver to force selection
of output devices.
- Implement a workaround in the generic int10 module to allow unaligned
I/O access specific to VMWare's second generation emulated adapter.
- A new driver for the Volari V3XT, V5, V8, Z7 chipsets.
3.3. Input Driver Enhancements
- Fix auto-detection of Sun mice on Linux/SPARC.
- Port of the magictouch driver to XFree86 4.x.
3.4. XKB updates
- Replace the macintosh/fr map with the "fr_new" map, release 4.
- Fix a bug in XKB group adjustment.
- Fix off-by-one errors in XKBMalloc.c.
- Shrink tables instead of only growing them.
- Fix various vmodmap vs modmap cut and paste bugs.
- Improve synthesized core X events for reporting XKB changes to
- Fix a setxkbmap segfault.
- Add Eszett (ssharp) to the us_intl map.
- Add dvorak_intl map.
- Add a Khmer layout.
- Add multimedia keysyms for the Inspiron 6000 laptop to the "inspiron"
3.5. X Server and Extension Updates
- Updates to the handling of the X server RGB database:
- Ignore white space, dash, and underscore characters, as well as
case when matching colour names, and remove the unnecessary duplicates
- Allow a copy of the RGB database to be included into the X servers
as a fallback for when the rgb.txt file cannot be found.
- Remove the (unused) support for DBM-compiled RGB database files.
- Make the AMD64/x86_64 platform tests consistent throughout.
- Rework the way that extension support is built into the servers to
allow for servers with different sets of extensions in the same build. This
includes minimising the number of pervasive extensions, and adding DIX helpers
for extensions such as Xinerama and XCSECURITY.
- Modify the X server handling of SIGINT to provide a faster exit path
than SIGTERM, while ensuring that all hardware state gets restored. This
change is used by xinit as a cleaner alternative to using SIGKILL for a
slowly exiting server.
- Add support for relocation type 10 for Alpha to the ELF loader.
- Fix issues with Linux/SPARC 2.6 kernels.
- Add loader infrastructure to implement inter-module version checks.
- Use mprotect on NetBSD.
- Fix support for NetBSD/arm.
- Add support for
- Make error messages for unsupported relocations more useful.
- Improve the loader server's emulation of shmctl() calls.
- Fix some problems with the a.out header macros used by the loader,
which was causing incorrect header interpretation for some a.out object
- Major loader enhancements, including:
- Per-module export symbol lists.
- Improved symbol hash.
- A mechanism for specifying the scope of symbols.
- Keep track of relocations, and undo them when they become unresolved
on module unload, and recalculate them when they change on module load.
- Check relocations on each module load/unload, ensuring that function
references that are unresolved at any time are always mapped to the
catch-all function, preventing calls into nowhere.
- Efficient handling of invariant relocations.
- Cleanup/update the memleak stack trace code, and print a stack trace
when an unresolved function is called or when XFree86 aborts.
- Update the catch-all function to identify the unresolved function that
- Read the XFree86 executable's symbol table in order to get the most
useful stack traces, and use dladdr() where available for identifying shared
- Cleanup and unify debug messages for the loader components.
- Use module-instance-specific referenced and required symbol lists.
- Update drivers to make use of some of the new loader functionality,
including the instance-specific ref/req lists, and some unloading of
modules when they are no longer needed.
- Don't build the coff loader on platforms that it doesn't support.
- Use stronger typing of the module-visible instance-specific module
- No longer disable xf86UnloadSubModule() since the loader now handles
unloads and reloads cleanly.
- Do not defer unloading drivers when using autoconfig, since that is
not necessary with the loader updates.
3.5.2. XFree86 core server and modules
- Modify the handling of preferred EDID modes to allow user-specified
modes that are larger than the preferred mode.
- Refine VGA routing emulation through Sun's Simba P2P bridges.
- Allow a static server's -configure to generate an XF86Config for the
- Fix a bug relating to the forwarding of 64-bit memory addresses by
PCI-to-PCI bridges on 32-bit systems.
- Fix a bug in the decoding of I/O forwarding by Cardbus bridges.
- Update -configure to detect when wscons support should be used for the
keyboard on NetBSD.
- Fix an endianness bug in the xf4bpp module.
- Fix some of the endianness bugs in the vbe module.
- Remove obsolete VBE functions that have not been compiled-in for some
- Fix VBE's reporting of video memory size.
- Re-implement Alpha kludge in x86emu's ops.c to be more portable.
- Intercept "raw" requests for PCI configuration space from video
BIOSes on all architectures.
- Handle unaligned I/O requests more gracefully and be more tolerant
of spurious I/O errors in the int10 module.
- Make sparse I/O masks more portable throughout the server.
- Fix a long-standing off-by-one bug in the setting of RGB offsets
when the driver supplies RGB masks.
- Make I/O error handling more reliable on SPARC.
- Change the OS-specific module subdirectory name for all SunOS variants
from "solaris" to "sunos".
- Port of SBUS drivers to SunOS variants. This also allows for multihead
using a mix of SBUS and PCI devices.
- Fix text mode restore on x86/Solaris 8 and later.
- Change autoconfiguration to include PCI and SBUS BusIDs in generated
device sections. This fixes some problems when fbdev is active.
- Prevent the sharing of a PCI entity by more than one driver.
- Insulate various common layer functions against out-of-bounds entity
- Fix XAA's support for
TRIPLE_BITS_24BPP on big-endian systems.
- Fix unaligned access in XAA's handling of 24bpp.
- The xf24_32bpp module is no longer used by any of our drivers, so don't
include it in static builds.
- The xf8_32wid module is only used by the sunffb driver, so don't include
it in non-SPARC static builds.
- Fix generic int10 memory accesses on little-endian systems.
- Fix a SEGV that can occur under certain builds of glibc 2.3.4 and
up, when linux/int10 attempts to determine kernel support for the vm86()
- Add an xf86DeallocateGARTMemory() function.
- Make autoconfig stop at the first successful probe on each retry,
minimising unnecessary probes.
- Allow build-time selection of which font renderers get built in to
the TinyX servers.
- Fix a problem where VT switching back to TinyX servers was failing
due to blocking on keyboard read.
- Fix a TinyX build issue under
- Move Xserver/*/tiny directories under Xserver/hw/tinyx.
- TinyX build fixes.
- Add a "-noinput" option that allows Xnest to be run in a view-only mode.
- Fix incorrect bitsPerPixel for depth 12 in pixmap formats advertised by
the Xsun24 server.
- Fix a bug that occurs when using cfb to tile 32-bit rectangles on SPARC.
- cfb24 is no longer needed. Keep the loadable module, but no longer
statically link it into servers.
- Rewrite shadowUpdateRotatePacked() to reduce cache misses.
- Cause the server to FatalError() when Xinerama attempts to create
a screen whose root depth has no visuals, causing Xlib to segfault.
- Allow Xinerama to initialise even when there is only one screen
- Make loadable modules and MI independent of Xinerama:
- Add a DIX helper to determine whether Xinerama is active and use it
instead of #ifdef's code in all loadable modules.
- Re-implement, as a screen wrapper, Xinerama's PaintWindow*() hacks.
- Move down to DIX Xinerama's only MI hook.
- Do not call a screen's PointerMoved entry if a DGA mode is active on that
- Fix client-side framebuffer mapping on NetBSD.
- Make sure that DGAShutdown() is always called before HW state is restored
on exit and reset, and make sure that it is not called after the HW state has
- Fix unaligned access in RenderCompositeGlyphs request.
- Use xf86SetViewport as well as SetCursorPosition during RandR
rotation, as xf86SetViewport will call AdjustFrame to reposition the
window if necessary and avoid the cursor ending up off screen.
- Add a new function xf86GetRotation() to allow third party modules
to obtain the current rotation.
- Fix up error case when rotation fails and the framebuffer needs to
3.6. Library, Client and Utility Updates
- Fix typos in XErrorDB that were preventing descriptive messages
for some extension errors.
- Fix an uninitialised pointer dereference in Xt/Initialize.c on WIN32
platforms that happens if
$HOME is set in the environment.
- Add support to Xt's string to float converter to read resources in
- Add some XChar2b string manipulation functions to Xt.
- Bump the minor revision of the Xt shared library to reflect
the fact that some new interfaces have been added.
- Extend the tool tip resource for Xaw's simpleWidgetClass to allow
a function to be called
- Fix problems with Xaw's label widget when using XChar2b strings.
- Add a new connectionType property to Xaw's tree widget.
- Make Xaw Form widgets inherit dimensions from their parent at widget
- Add mouse wheel support for Scrollbars in Xaw's Viewport widget.
- Fix a performance issue with Xaw's Tree widget caused by useless
- Fix i18n for Xaw's tooltip widget.
- Add two new functions that can be used to scroll the content of an
Xaw viewport from outside the viewportWidgetClass.
- Fix the cursor in Xaw textWidget when the input field has focus.
- Bump the minor revision of the Xaw shared library to reflect
the fact that some new interfaces have been added.
- Add user_data field to Xaw's simpleWidgetClass.
- Fix Xaw viewport scrollbar flickering problem.
- Fix a problem where pswrap generates a bogus .c file when the -h option
is not used.
- Document pswrap's -f option.
3.6.5. mmapr, mmapw
- Extend mmapr and mmapw on Linux to allow specification of which
PCI address space (I/O or memory) to mmap.
- Add options to mmapr and mmapw to allow unaligned accesses for testing
- Use the same default XF86Config search path as the XFree86 server.
These changes correspond to xterm patches #200 through #212.
- Improved behavior
- add a new selection feature: regular expressions, and new resources
which specify what happens on multiple mouse clicks: on2Clicks,
on3Clicks, on4Clicks and on5Clicks.
- improve initialization of toolbar so that individual pulldown menus
are initialized on demand, as they are in the scenario where they
are invoked as popup menus.
- improve error-reporting when chown/chmod of the pseudo-terminal
fails, e.g., if a copy of xterm which was designed to work with
old-style pseudo-terminals is not installed setuid or setgid.
- add support for interpreting the underline attribute as an italic
font in Xft mode.
- modify configure script --disable-imake to use the script's
definitions anyway if it cannot detect imake.
- improve resource files to show how the menubar and popup menus can
- modify initialization of allowSendEvents and allowWindowOps to
prevent modification with the editres protocol.
- improved some of the built-in line-drawing glyphs.
- set the _NET_WM_PID property.
- update table for mk_width() from UnicodeData 4.1.0.
- implement the remaining pieces to make xterm allocate cells for
wide-characters when the "UTF-8" menu entry is selected. Also, load
the UTF-8 font when that menu entry is selected, or the escape
sequence for UTF-8 mode is received :
- improve behavior when switching to UTF-8 mode after startup so
xterm will check if the current fonts are already wide
(ISO-10646-1). If they are not, xterm will use the utf8Fonts
subresource to load appropriate fonts.
- modify initialization for wide-bold fontname, to search for one if
none is given.
- modify interaction between +u8 and locale resource to allow the
command-line option to override the resource.
- modify initialization to decide whether to default to built-in
wcwidth() versus system's version based on the starting locale and
whether the system's version is poor quality.
- make paste of UTF-8 faster for Western character sets by checking
range of incoming data.
- improve initialization due to utf8 resource by loading the
utf8Fonts resource in the case where locale resource is false. Also
in this case, do not disable switching UTF-8 mode on/off.
- Modified behavior
- modify parsing of OSC (and SOS, etc), strings so their contents are
not interpreted as UTF-8. This allows non-ASCII title strings to be
set, provided that the window manager complies.
- modify parsing of control sequence CSI T to allow scroll-down to be
sent while mouse tracking is enabled.
- modify command-processing to accept an optional parameter that
tells xterm which shell program to use.
- change xterm manpage to show the actual color resource names
XtDefaultForeground and XtDefaultBackground rather than black and
- modify xterm-new terminfo entry to use capabilities for shifted
scroll forward/reverse as shifted cursor up/down.
- remove menu entry for "Enable Curses Emulation" (to make room for
"Select To Clipboard").
- modify resource files to make the font-resources a little more
specific, e.g., changing "*VT100*" to "*VT100.", to make the
distinction between VT100.font and VT100.utf8Fonts.font sharper, in
case a packager modifies one of those.
- allow cursor to have the same color as foreground (text), since it
is rendered as reverse.
- modify Imakefile to use setgid mode for installing with Linux,
OpenBSD and FreeBSD.
- New resource settings
- add utf8Title resource and menu entry, allowing the user to control
whether title strings are interpreted as ISO-8859-1 or UTF-8
- add scrollBarBorder resource.
- add resource selectToClipboard, action set-select and a menu entry
to allow users to switch between PRIMARY and CLIPBOARD for
- add resource mkWidth and command-line option -mk_width to control
whether xterm uses the built-in version of wcwidth().
- add resource settings for minimum/maximum input buffer size, and
call to sched_yield to improve performance with newer Linux kernels
- add simpler resource keyboardType which, when set, overrides the
individual keyboard-type resources and eliminates the possibility
of conflict between them.
- New configure script options
- the --with-utmp-setgid allows the packager to configure xterm to
use setgid permissions for utmp.
- add configure option --enable-readline-mouse, which turns on the
experimental OPT_READLINE code.
- add --enable-narrowproto configure option to accommodate X.org
- add configure --with-app-defaults option to allow app-defaults
directory for install-rules to be customized.
- add configure option --with-tty-group to help work around
deficiencies in packager's build environment.
- add configure --with-setuid and --with-reference options to allow
packagers more flexibility in customizing install permissions.
- add configure --with-symlink option to make it simpler to install
successive versions of xterm renamed using the --program-prefix,
etc., options with a symbolic link pointing to the most recent.
- add a configure check for the actual path of luit, to work around
broken imake configurations.
- add a configure check for pkg-config.
- modify install rule for uxterm to account for the --program-prefix,
etc., options by invoking the transformed name of xterm rather than
- modify configure --with-app-defaults option to allow
- add configure option --disable-leaks.
- add experimental option to allow applications to get or set the
selection data as a BASE64 string.
- Other new features
- add select-cursor-extend() action.
- add environment variables $XTERM_SHELL and $XTERM_VERSION.
- add menu entry (alt-esc) and corresponding action (alt-sends-esc)
to toggle the eightBitInput resource setting.
- add command-line options (-tb, +tb) and resource toolBar to allow
menu/toolbar to disabled or enabled at startup.
- add extended shift- and control-modifier cursor keys to
"xterm+pcfkeys" terminfo entry to correspond to ncurses 20050430
- enable lastlogx support for NetBSD (was added, but not enabled in
- Bug-fixes (see http://invisible-island.net/xterm/xterm.log.html for a
more complete list):
- correct typo in configure script's --enable-dec-locator option
- correct a typo in CF_FUNC_TGETENT introduced in patch #198 fix
- fix an off-by-one error parsing -S/nn option.
- add a check in Bell to ensure that the VT100 widget is realized,
since it may be called by xtermLoadFont given an incorrect font
- correct treatment of iconBorderWidth for resizing an active-icon,
and its description in manpage.
- add a limit check for scrolling margins in a one-line screen,
overlooked in fixes for patch #198.
- correct computation of width for wide characters with the invisible
- improve fix from patch #198 for Cleanup() by ensuring it is
not called from the SIGCHLD handler.
- fixes to make -geom option work properly with the toolbar
- fix logic in find_utmp, which did not reset result in getutid(),
causing an infinite loop in some conditions.
- fix a rare case where text would be written with the wrong colors
because output of scrolled text would reset the colors and the new
text would be written with the same colors.
- implement logic in termcap query to process multiple parameters as
documented in ctlseqs.ms
- fix buffer size used for termcap query, which was not long enough
for the terminfo "colors" name.
- initialize the saved-cursor data so a restore-cursor operation
without a preceding save-cursor operation will not modify the
- modify Imakefile to work around old problems in imake configuration
to allow test-builds using xmkmf on Linux. (This was not noticed
since several releases had broken definitions relating to Xft which
were harder to work around).
- remove default translations for dabbrev-expand() due to conflicts
with existing keyboard arrangements.
- set icon border width explicitly to work around fvwm problem with
active icon resizing.
- eliminate a retry for a better-matching bold font, to work around
recent font server changes.
- modify prefix/suffix transformation in makefile to make uxterm
install properly on Cygwin.
- correct termcap "me" (mode-end) string so it does not modify the
alternate character set.
- modify computation of rows/columns on resize to avoid extending
beyond the given limits, e.g., if resizing in response to a
"maximize" in Gnome or KDE which do not use the window manager
hints for this case.
- make a special case of resizing work like vt100: a hard reset also
resets the 132/80 mode. The code to support this was present since
X11R5, but not used because the corresponding initial state of the
-132 option was not saved.
- Mesa build fixes for NetBSD/sparc64.
- Solaris/SPARC 64-bit libGL fixes.
- Resurrect this DBE extension test utility.
- Use the Xaw tooltip to display the date in xclock.
- Add a new function to allow the window text title to be changed
- Allow environment variables to be used in menu names.
- Add a new "f.totalzoom" function that zooms windows to cover the whole
area of a screen with no window decoration visible.
- Don't highlight "f.nop" menu items in menus.
- Add a tooltip to xbiff that shows the number of messages in a mail
- Fix a potential infinite loop when the "willing" command fails to produce
- Fix a bug that prevents properly paging through xft fonts beyond
- Modify the font server transport messages to go through xfs's
- Fix a bug introduced when syslog support was added that prevents
exit on fatal errors.
- Send SIGINT to slowing exiting X servers instead of SIGKILL. This
works together with the new SIGINT handling in the X servers, and results
in a clean exit. Sending SIGKILL only results in the hardware state not
being restored, often requiring a reboot to recover from.
- Fix a bug in the handling of escapes in button labels.
- Fix the -timeout <n> option.
3.7. I18n and Fonts
- Update mkfontscale's handling of font weights.
- Replace lib/font/fontfile/decompress.c with a version derived from
- Modify the fontconfig library to use getpwnam/getpwuid to find the
home directory when
$HOME is not set.
- Fix a bug in fontconfig's pattern matching that can cause FcFontMatch()
to fail when it shouldn't.
- Fix a double-free problem in fontconfig.
- Rework printf format specifiers used in XLFD code to make them more
portable and avoid infinite loops in some glibc versions.
- Update the Serbian locale naming to reflect the country's name change
from "Yugoslavia" to "Serbia and Montenegro".
3.8. OS Support Updates
- Fix some cases in the Darwin build where a variable is declared
static and later as extern.
- Avoid /tmp files in NetBSD.cf's man page creation.
- Install man page source as well as formatted man pages on NetBSD.
- Fix a problem where builds would continue past errors on NetBSD.
Release Notes for XFree86® 4.6.0
: Summary of new features in 4.6.0.
Previous: Configuration: a Quick Synopsis