xserver: Branch 'glucose-2' - 57 commits

Alan Hourihane alanh at kemper.freedesktop.org
Mon Dec 3 14:32:48 PST 2007


 GL/Makefile.am                                                                  |    8 
 GL/apple/Makefile.am                                                            |   14 
 Xext/EVI.c                                                                      |   13 
 Xext/bigreq.c                                                                   |   13 
 Xext/cup.c                                                                      |   20 
 Xext/dpms.c                                                                     |   12 
 Xext/fontcache.c                                                                |    7 
 Xext/mbuf.c                                                                     |    6 
 Xext/mitmisc.c                                                                  |   13 
 Xext/panoramiX.c                                                                |    7 
 Xext/panoramiXSwap.c                                                            |    4 
 Xext/panoramiXprocs.c                                                           |   10 
 Xext/saver.c                                                                    |    6 
 Xext/shape.c                                                                    |    6 
 Xext/xcmisc.c                                                                   |   13 
 Xext/xf86bigfont.c                                                              |   17 
 Xext/xprint.c                                                                   |   19 
 Xext/xtest.c                                                                    |   13 
 Xext/xvdisp.c                                                                   |  912 +--
 Xext/xvdisp.h                                                                   |    1 
 Xext/xvmain.c                                                                   |    4 
 Xi/getdctl.c                                                                    |    8 
 cfb/Makefile.am                                                                 |    1 
 cfb/cfbcppl.c                                                                   |    4 
 cfb/cfbmap.h                                                                    |  126 
 cfb/cfbmskbits.h                                                                |   37 
 cfb/cfbtab.h                                                                    |   14 
 configure.ac                                                                    |  257 -
 dbe/dbe.c                                                                       |   20 
 dev/null                                                                        |binary
 dix/main.c                                                                      |    2 
 dix/window.c                                                                    |    8 
 fb/fbblt.c                                                                      |    3 
 hw/Makefile.am                                                                  |   12 
 hw/darwin/Makefile.am                                                           |  325 -
 hw/darwin/README.apple                                                          |   35 
 hw/darwin/XDarwin.man                                                           |  203 
 hw/darwin/Xquartz.man                                                           |  156 
 hw/darwin/apple/English.lproj/Localizable.strings                               |binary
 hw/darwin/apple/English.lproj/main.nib/.svn/entries                             |   65 
 hw/darwin/apple/English.lproj/main.nib/.svn/format                              |    1 
 hw/darwin/apple/English.lproj/main.nib/.svn/prop-base/keyedobjects.nib.svn-base |    5 
 hw/darwin/apple/English.lproj/main.nib/.svn/text-base/classes.nib.svn-base      |  318 -
 hw/darwin/apple/English.lproj/main.nib/.svn/text-base/info.nib.svn-base         |   18 
 hw/darwin/apple/Makefile.am                                                     |   23 
 hw/darwin/apple/X11.xcodeproj/project.pbxproj                                   |   67 
 hw/darwin/apple/X11Application.h                                                |  103 
 hw/darwin/apple/X11Application.m                                                |  915 ---
 hw/darwin/apple/X11Controller.h                                                 |   85 
 hw/darwin/apple/X11Controller.m                                                 |  747 --
 hw/darwin/apple/Xquartz.man                                                     |  158 
 hw/darwin/apple/bundle-main.c                                                   |   25 
 hw/darwin/bundle/Dutch.lproj/Credits.rtf                                        |  168 
 hw/darwin/bundle/Dutch.lproj/MainMenu.nib/classes.nib                           |   72 
 hw/darwin/bundle/Dutch.lproj/Makefile.am                                        |   35 
 hw/darwin/bundle/Dutch.lproj/XDarwinHelp.html.cpp                               |  101 
 hw/darwin/bundle/English.lproj/Credits.rtf                                      |  168 
 hw/darwin/bundle/English.lproj/InfoPlist.strings.cpp                            |    4 
 hw/darwin/bundle/English.lproj/Localizable.strings                              |   22 
 hw/darwin/bundle/English.lproj/MainMenu.nib/classes.nib                         |   72 
 hw/darwin/bundle/English.lproj/Makefile.am                                      |   35 
 hw/darwin/bundle/English.lproj/XDarwinHelp.html.cpp                             |   94 
 hw/darwin/bundle/French.lproj/Credits.rtf                                       |  166 
 hw/darwin/bundle/French.lproj/MainMenu.nib/classes.nib                          |   72 
 hw/darwin/bundle/French.lproj/Makefile.am                                       |   38 
 hw/darwin/bundle/French.lproj/XDarwinHelp.html.cpp                              |   99 
 hw/darwin/bundle/German.lproj/Credits.rtf                                       |  168 
 hw/darwin/bundle/German.lproj/MainMenu.nib/classes.nib                          |   72 
 hw/darwin/bundle/German.lproj/Makefile.am                                       |   36 
 hw/darwin/bundle/German.lproj/XDarwinHelp.html.cpp                              |   94 
 hw/darwin/bundle/Info.plist                                                     |   66 
 hw/darwin/bundle/Japanese.lproj/Credits.rtf                                     |  193 
 hw/darwin/bundle/Japanese.lproj/MainMenu.nib/classes.nib                        |   72 
 hw/darwin/bundle/Japanese.lproj/Makefile.am                                     |   37 
 hw/darwin/bundle/Japanese.lproj/XDarwinHelp.html.cpp                            |  141 
 hw/darwin/bundle/Makefile.am                                                    |   38 
 hw/darwin/bundle/Portuguese.lproj/Credits.rtf                                   |  171 
 hw/darwin/bundle/Portuguese.lproj/MainMenu.nib/classes.nib                      |   72 
 hw/darwin/bundle/Portuguese.lproj/Makefile.am                                   |   36 
 hw/darwin/bundle/Portuguese.lproj/XDarwinHelp.html.cpp                          |  209 
 hw/darwin/bundle/Spanish.lproj/Credits.rtf                                      |  168 
 hw/darwin/bundle/Spanish.lproj/MainMenu.nib/classes.nib                         |   72 
 hw/darwin/bundle/Spanish.lproj/Makefile.am                                      |   36 
 hw/darwin/bundle/Spanish.lproj/XDarwinHelp.html.cpp                             |  109 
 hw/darwin/bundle/Swedish.lproj/Credits.rtf                                      |  168 
 hw/darwin/bundle/Swedish.lproj/MainMenu.nib/classes.nib                         |   72 
 hw/darwin/bundle/Swedish.lproj/Makefile.am                                      |   36 
 hw/darwin/bundle/Swedish.lproj/XDarwinHelp.html.cpp                             |  101 
 hw/darwin/bundle/ko.lproj/Credits.rtf                                           |  168 
 hw/darwin/bundle/ko.lproj/MainMenu.nib/classes.nib                              |   72 
 hw/darwin/bundle/ko.lproj/Makefile.am                                           |   37 
 hw/darwin/bundle/ko.lproj/XDarwinHelp.html.cpp                                  |   94 
 hw/darwin/bundle/startXClients.cpp                                              |   22 
 hw/darwin/darwin.c                                                              |  103 
 hw/darwin/darwin.h                                                              |   12 
 hw/darwin/darwinEvents.c                                                        |   15 
 hw/darwin/darwinKeyboard.c                                                      |  112 
 hw/darwin/darwinXinput.c                                                        |    4 
 hw/darwin/iokit/Makefile.am                                                     |   17 
 hw/darwin/iokit/xfIOKit.c                                                       |  773 ---
 hw/darwin/iokit/xfIOKit.h                                                       |   56 
 hw/darwin/iokit/xfIOKitCursor.c                                                 |  736 --
 hw/darwin/iokit/xfIOKitStartup.c                                                |  131 
 hw/darwin/launcher/Info.plist                                                   |   30 
 hw/darwin/launcher/Makefile.am                                                  |   18 
 hw/darwin/launcher/X11.icns                                                     |binary
 hw/darwin/launcher/X11.xcodeproj/project.pbxproj                                |  290 +
 hw/darwin/launcher/bundle-main.c                                                |   81 
 hw/darwin/quartz/Makefile.am                                                    |   59 
 hw/darwin/quartz/Preferences.h                                                  |  137 
 hw/darwin/quartz/Preferences.m                                                  |  598 --
 hw/darwin/quartz/X11Application.h                                               |  103 
 hw/darwin/quartz/X11Application.m                                               |  917 +++
 hw/darwin/quartz/X11Controller.h                                                |   85 
 hw/darwin/quartz/X11Controller.m                                                |  749 ++
 hw/darwin/quartz/XApplication.h                                                 |   46 
 hw/darwin/quartz/XApplication.m                                                 |   46 
 hw/darwin/quartz/XDarwin.pbproj/project.pbxproj                                 | 2519 ----------
 hw/darwin/quartz/XDarwinStartup.c                                               |  163 
 hw/darwin/quartz/XDarwinStartup.man                                             |   74 
 hw/darwin/quartz/XServer.h                                                      |  136 
 hw/darwin/quartz/XServer.m                                                      | 1538 ------
 hw/darwin/quartz/applewm.c                                                      |   26 
 hw/darwin/quartz/cr/XView.m                                                     |    3 
 hw/darwin/quartz/cr/cr.h                                                        |    3 
 hw/darwin/quartz/cr/crAppleWM.m                                                 |    2 
 hw/darwin/quartz/cr/crFrame.m                                                   |    2 
 hw/darwin/quartz/cr/crScreen.m                                                  |    2 
 hw/darwin/quartz/fullscreen/fullscreen.c                                        |    2 
 hw/darwin/quartz/fullscreen/quartzCursor.c                                      |    4 
 hw/darwin/quartz/pseudoramiX.c                                                  |    5 
 hw/darwin/quartz/quartz.c                                                       |  120 
 hw/darwin/quartz/quartz.h                                                       |    2 
 hw/darwin/quartz/quartzAudio.c                                                  |    2 
 hw/darwin/quartz/quartzCocoa.m                                                  |   78 
 hw/darwin/quartz/quartzCommon.h                                                 |    5 
 hw/darwin/quartz/quartzCursor.c                                                 |    6 
 hw/darwin/quartz/quartzKeyboard.c                                               |   27 
 hw/darwin/quartz/quartzPasteboard.c                                             |    3 
 hw/darwin/quartz/quartzStartup.c                                                |  260 -
 hw/darwin/quartz/xpr/Makefile.am                                                |   29 
 hw/darwin/quartz/xpr/appledri.c                                                 |    4 
 hw/darwin/quartz/xpr/dri.c                                                      |    7 
 hw/darwin/quartz/xpr/x-hash.c                                                   |    2 
 hw/darwin/quartz/xpr/x-hook.c                                                   |    3 
 hw/darwin/quartz/xpr/x-list.c                                                   |    2 
 hw/darwin/quartz/xpr/xpr.h                                                      |    3 
 hw/darwin/quartz/xpr/xprAppleWM.c                                               |    5 
 hw/darwin/quartz/xpr/xprCursor.c                                                |    5 
 hw/darwin/quartz/xpr/xprFrame.c                                                 |    2 
 hw/darwin/quartz/xpr/xprScreen.c                                                |   84 
 hw/darwin/utils/Makefile.am                                                     |    4 
 hw/darwin/utils/README.txt                                                      |    4 
 hw/darwin/utils/dumpkeymap.man                                                  |    2 
 hw/kdrive/src/kaa.c                                                             |    2 
 hw/xfree86/common/Makefile.am                                                   |    4 
 hw/xfree86/common/modeline2c.awk                                                |   97 
 hw/xfree86/common/modeline2c.pl                                                 |  107 
 hw/xfree86/common/xf86Config.c                                                  |   12 
 hw/xfree86/common/xf86Init.c                                                    |    2 
 hw/xfree86/ddc/ddcProperty.c                                                    |    1 
 hw/xfree86/loader/xf86sym.c                                                     |  191 
 hw/xfree86/modes/xf86Crtc.c                                                     |   72 
 hw/xfree86/modes/xf86EdidModes.c                                                |    3 
 hw/xfree86/modes/xf86RandR12.c                                                  |   40 
 hw/xfree86/os-support/Makefile.am                                               |    2 
 hw/xfree86/os-support/bsd/Makefile.am                                           |    1 
 hw/xfree86/os-support/bus/Pci.h                                                 |    2 
 hw/xfree86/os-support/hurd/Makefile.am                                          |    1 
 hw/xfree86/os-support/linux/Makefile.am                                         |    1 
 hw/xfree86/os-support/misc/Delay.c                                              |    2 
 hw/xfree86/os-support/shared/bios_mmap.c                                        |    2 
 hw/xfree86/os-support/shared/libc_wrapper.c                                     | 2123 --------
 hw/xfree86/os-support/solaris/Makefile.am                                       |    1 
 hw/xfree86/os-support/solaris/sun_bios.c                                        |    4 
 hw/xfree86/os-support/solaris/sun_init.c                                        |   11 
 hw/xfree86/os-support/solaris/sun_vid.c                                         |   12 
 hw/xfree86/os-support/xf86_OSlib.h                                              |   21 
 hw/xfree86/os-support/xf86_ansic.h                                              |  314 -
 hw/xfree86/os-support/xf86_libc.h                                               |  721 --
 hw/xfree86/parser/Flags.c                                                       |    3 
 hw/xfree86/parser/Screen.c                                                      |   13 
 hw/xfree86/parser/scan.c                                                        |    3 
 hw/xfree86/parser/xf86Parser.h                                                  |    1 
 hw/xfree86/utils/xorgcfg/Makefile.am                                            |    1 
 hw/xfree86/utils/xorgconfig/xorgconfig.c                                        |    2 
 include/dix-config.h.in                                                         |    3 
 include/dixevents.h                                                             |   22 
 include/servermd.h                                                              |    2 
 include/swapreq.h                                                               |   11 
 mi/micoord.h                                                                    |    2 
 mi/midispcur.c                                                                  |    3 
 mi/miinitext.c                                                                  |   19 
 miext/damage/damage.c                                                           |    3 
 miext/rootless/Makefile.am                                                      |   19 
 miext/rootless/accel/Makefile.am                                                |   25 
 miext/rootless/accel/rlBlt.c                                                    |   44 
 miext/rootless/accel/rlFill.c                                                   |    6 
 miext/rootless/rootless.h                                                       |    1 
 miext/rootless/rootlessCommon.c                                                 |   81 
 miext/rootless/rootlessCommon.h                                                 |   23 
 miext/rootless/rootlessScreen.c                                                 |   70 
 miext/rootless/rootlessValTree.c                                                |   12 
 miext/rootless/rootlessWindow.c                                                 |   58 
 miext/rootless/rootlessWindow.h                                                 |    3 
 miext/rootless/safeAlpha/Makefile.am                                            |    8 
 miext/rootless/safeAlpha/safeAlphaPicture.c                                     |  109 
 os/Makefile.am                                                                  |    9 
 os/WaitFor.c                                                                    |   15 
 os/io.c                                                                         |    5 
 os/osinit.c                                                                     |    4 
 render/picturestr.h                                                             |    6 
 render/render.c                                                                 |  118 
 xkb/xkbAccessX.c                                                                |   15 
 214 files changed, 4181 insertions(+), 19108 deletions(-)

New commits:
commit 06a58f2d5363e13069315beac8934cca1aab54db
Merge: c26269d... aa0dfb3...
Author: Alan Hourihane <alanh at tungstengraphics.com>
Date:   Mon Dec 3 22:32:39 2007 +0000

    Merge branch 'master' of git+ssh://git.freedesktop.org/git/xorg/xserver into glucose-2
    
    Conflicts:
    
    	configure.ac

diff --cc configure.ac
index d94bb08,618a9c4..f58b971
--- a/configure.ac
+++ b/configure.ac
@@@ -1263,16 -1217,12 +1226,17 @@@ f
  AC_MSG_RESULT([$XGL])
  AM_CONDITIONAL(XGL, [test "x$XGL" = xyes])
  
 +if test "x$XGL" = xyes -o "x$GLUCOSE" = xyes; then
 +	XGL_LIBS="$FB_LIB $COMPOSITE_LIB $FIXES_LIB $XEXT_LIB $CONFIG_LIB $DBE_LIB $XTRAP_LIB $RECORD_LIB $RENDER_LIB $RANDR_LIB $DAMAGE_LIB $MIEXT_DAMAGE_LIB $MIEXT_SHADOW_LIB $MIEXT_LAYER_LIB $XI_LIB $XKB_LIB $XKB_STUB_LIB $XPSTUBS_LIB $CWRAP_LIB"
 +	AC_SUBST([XGL_LIBS])
 +fi
 +
  if test "x$XGL" = xyes; then
+ 	XGL_LIBS="$FB_LIB $COMPOSITE_LIB $FIXES_LIB $XEXT_LIB $CONFIG_LIB $DBE_LIB $XTRAP_LIB $RECORD_LIB $GLX_LIBS $RENDER_LIB $RANDR_LIB $DAMAGE_LIB $MIEXT_DAMAGE_LIB $MIEXT_SHADOW_LIB $MIEXT_LAYER_LIB $XI_LIB $XKB_LIB $XKB_STUB_LIB $XPSTUBS_LIB"
  	XGL_SYS_LIBS="$XGLMODULES_LIBS $GLX_SYS_LIBS $DLOPEN_LIBS"
 -	AC_SUBST([XGL_LIBS])
  	AC_SUBST([XGL_SYS_LIBS])
  	AC_DEFINE(XGL_MODULAR, 1, [Use loadable XGL modules])
 +	AC_DEFINE(XGLServer, 1, [Building XGL server])
  
  	xglmoduledir="$moduledir/xgl"
  	AC_SUBST([xglmoduledir])
commit aa0dfb3f42f19bb351ca7f1a9507ff5ec4590e96
Author: James Cloos <cloos at jhcloos.com>
Date:   Mon Dec 3 16:57:58 2007 -0500

    Remove Perl dependency from the build
    From bugzilla bug 13467¹:
    
    The modeline2c script is the only part of the Xorg server that requires Perl.
    [This] is a simpler replacement that works with any normal AWK.
    
    1] http://bugs.freedesktop.org/show_bug.cgi?id=13467
    
    Bug was posted by Joerg Sonnenberger <joerg at NetBSD.org>.

diff --git a/hw/xfree86/common/Makefile.am b/hw/xfree86/common/Makefile.am
index db726fe..5499b69 100644
--- a/hw/xfree86/common/Makefile.am
+++ b/hw/xfree86/common/Makefile.am
@@ -23,8 +23,8 @@ BUSSOURCES = xf86isaBus.c xf86pciBus.c xf86fbBus.c xf86noBus.c $(SBUS_SOURCES)
 
 MODEDEFSOURCES = $(srcdir)/vesamodes $(srcdir)/extramodes
 
-xf86DefModeSet.c: $(srcdir)/modeline2c.pl $(MODEDEFSOURCES)
-	cat $(MODEDEFSOURCES) | $(PERL) $(srcdir)/modeline2c.pl > $@
+xf86DefModeSet.c: $(srcdir)/modeline2c.awk $(MODEDEFSOURCES)
+	cat $(MODEDEFSOURCES) | $(AWK) -f $(srcdir)/modeline2c.awk > $@
 
 BUILT_SOURCES = xf86DefModeSet.c
 
diff --git a/hw/xfree86/common/modeline2c.awk b/hw/xfree86/common/modeline2c.awk
new file mode 100644
index 0000000..7a89330
--- /dev/null
+++ b/hw/xfree86/common/modeline2c.awk
@@ -0,0 +1,97 @@
+#!/usr/bin/awk -f
+#
+# Copyright (c) 2007 Joerg Sonnenberger <joerg at NetBSD.org>.
+# All rights reserved.
+#
+# Based on Perl script by Dirk Hohndel.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+#
+# 1. Redistributions of source code must retain the above copyright
+#    notice, this list of conditions and the following disclaimer.
+# 2. Redistributions in binary form must reproduce the above copyright
+#    notice, this list of conditions and the following disclaimer in
+#    the documentation and/or other materials provided with the
+#    distribution.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+# FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
+# COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+# INCIDENTAL, SPECIAL, EXEMPLARY OR CONSEQUENTIAL DAMAGES (INCLUDING,
+# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+# AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+# SUCH DAMAGE.
+#
+# Usage: modeline2c.awk < modefile > xf86DefModes.c
+#
+
+BEGIN {
+	flagsdict[""] = "0"
+
+	flagsdict["+hsync +vsync"] = "V_PHSYNC | V_PVSYNC"
+	flagsdict["+hsync -vsync"] = "V_PHSYNC | V_NVSYNC"
+	flagsdict["-hsync +vsync"] = "V_NHSYNC | V_PVSYNC"
+	flagsdict["-hsync -vsync"] = "V_NHSYNC | V_NVSYNC"
+	flagsdict["+hsync +vsync interlace"] = "V_PHSYNC | V_PVSYNC | V_INTERLACE"
+	flagsdict["+hsync -vsync interlace"] = "V_PHSYNC | V_NVSYNC | V_INTERLACE"
+	flagsdict["-hsync +vsync interlace"] = "V_NHSYNC | V_PVSYNC | V_INTERLACE"
+	flagsdict["-hsync -vsync interlace"] = "V_NHSYNC | V_NVSYNC | V_INTERLACE"
+
+	print "/* $" "XFree86$ */"
+	print
+	print "/* THIS FILE IS AUTOMATICALLY GENERATED -- DO NOT EDIT -- LOOK at"
+	print " * modeline2c.awk */"
+	print ""
+	print "/*"
+	print " * Author: Joerg Sonnenberger <joerg at NetBSD.org>"
+	print " * Based on Perl script from Dirk Hohndel <hohndel at XFree86.Org>"
+	print " */"
+	print ""
+	print "#ifdef HAVE_XORG_CONFIG_H"
+	print "#include <xorg-config.h>"
+	print "#endif"
+	print ""
+	print "#ifdef __UNIXOS2__"
+	print "#define I_NEED_OS2_H"
+	print "#endif"
+	print "#include \"xf86.h\""
+	print "#include \"xf86Config.h\""
+	print "#include \"xf86Priv.h\""
+	print "#include \"xf86_OSlib.h\""
+	print ""
+	print "#include \"globals.h\""
+	print ""
+	print "#define MODEPREFIX(name) NULL, NULL, name, MODE_OK, M_T_DEFAULT"
+	print "#define MODESUFFIX       0,0, 0,0,0,0,0,0,0, 0,0,0,0,0,0,FALSE,FALSE,0,NULL,0,0.0,0.0"
+	print ""
+	print "DisplayModeRec xf86DefaultModes [] = {"
+
+	modeline = "\t{MODEPREFIX(\"%dx%d\"),%d, %d,%d,%d,%d,0, %d,%d,%d,%d,0, %s, MODESUFFIX},\n"
+	modeline_data = "^[a-zA-Z]+[ \t]+[^ \t]+[ \t0-9.]+"
+}
+
+/^[mM][oO][dD][eE][lL][iI][nN][eE]/ {
+	flags = $0
+	gsub(modeline_data, "", flags)
+	flags = tolower(flags)
+	printf(modeline, $4, $8, $3 * 1000, $4, $5, $6, $7,
+	       $8, $9, $10, $11, flagsdict[flags])
+	# Half-width double scanned modes
+	printf(modeline, $4/2, $8/2, $3 * 500, $4/2, $5/2, $6/2, $7/2,
+	       $8/2, $9/2, $10/2, $11/2, flagsdict[flags] " | V_DBLSCAN")
+}
+
+/^#/ {
+	print "/*" substr($0, 2) " */"
+}
+
+END {
+	printf("\t{MODEPREFIX(NULL),0,0,0,0,0,0,0,0,0,0,0,0,MODESUFFIX}\n};\n")
+}
diff --git a/hw/xfree86/common/modeline2c.pl b/hw/xfree86/common/modeline2c.pl
deleted file mode 100644
index 88e380d..0000000
--- a/hw/xfree86/common/modeline2c.pl
+++ /dev/null
@@ -1,107 +0,0 @@
-#!/usr/bin/perl
-
-# automatically generate the xf86DefModeSet.c file from a normal
-# XF86Config style file of Modelines
-#
-# run as 
-#
-# perl /modeline2c.pl < [modesfile] > xf86DefModes.c
-#
-# hackish perl - author Dirk Hohndel
-#
-# Copyright 1999-2003 by The XFree86 Project, Inc.
-#
-# Permission is hereby granted, free of charge, to any person obtaining a
-# copy of this software and associated documentation files (the "Software"),
-# to deal in the Software without restriction, including without limitation
-# the rights to use, copy, modify, merge, publish, distribute, sublicense,
-# and/or sell copies of the Software, and to permit persons to whom the
-# Software is furnished to do so, subject to the following conditions:
-#
-# The above copyright notice and this permission notice shall be included in
-# all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
-# THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR
-# OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
-# ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-# OTHER DEALINGS IN THE SOFTWARE.
-#
-# Except as contained in this notice, the name of the copyright holder(s)
-# and author(s) shall not be used in advertising or otherwise to promote
-# the sale, use or other dealings in this Software without prior written
-# authorization from the copyright holder(s) and author(s).
-#
-# $XFree86: xc/programs/Xserver/hw/xfree86/common/modeline2c.pl,v 1.10tsi Exp $
-
-#my %flagshash;
-$flagshash{""} = "0";
-# $flagshash{"Interlace"} = "V_INTERLACE";
-# $flagshash{"+hsync"} = "V_PHSYNC";
-# $flagshash{"-hsync"} = "V_NHSYNC";
-# $flagshash{"+vsync"} = "V_PVSYNC";
-# $flagshash{"-vsync"} = "V_NVSYNC";
-# XXX I'm definitely not a perl guru...   -- tsi
-$flagshash{"+hsync +vsync"} = "V_PHSYNC | V_PVSYNC";
-$flagshash{"+hsync -vsync"} = "V_PHSYNC | V_NVSYNC";
-$flagshash{"-hsync +vsync"} = "V_NHSYNC | V_PVSYNC";
-$flagshash{"-hsync -vsync"} = "V_NHSYNC | V_NVSYNC";
-$flagshash{"+hsync +vsync interlace"} = "V_PHSYNC | V_PVSYNC | V_INTERLACE";
-$flagshash{"+hsync -vsync interlace"} = "V_PHSYNC | V_NVSYNC | V_INTERLACE";
-$flagshash{"-hsync +vsync interlace"} = "V_NHSYNC | V_PVSYNC | V_INTERLACE";
-$flagshash{"-hsync -vsync interlace"} = "V_NHSYNC | V_NVSYNC | V_INTERLACE";
-
-# stop CVS from expanding the XFree86 Id here...
-
-$proj = "XFree86";
-printf("/* \$$proj\$ */
-
-/* THIS FILE IS AUTOMATICALLY GENERATED -- DO NOT EDIT -- LOOK at
- * modeline2c.pl */
-
-/*
- * Copyright 1999-2003 by The XFree86 Project, Inc.
- *
- * Author: Dirk Hohndel <hohndel\@XFree86.Org>
- */
-
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#include \"xf86.h\"
-#include \"xf86Config.h\"
-#include \"xf86Priv.h\"
-#include \"xf86_OSlib.h\"
-
-#include \"globals.h\"
-
-#define MODEPREFIX(name) NULL, NULL, name, MODE_OK, M_T_DEFAULT
-#define MODESUFFIX       0,0, 0,0,0,0,0,0,0, 0,0,0,0,0,0,FALSE,FALSE,0,NULL,0,0.0,0.0
-
-DisplayModeRec xf86DefaultModes [] = {
-");
-while (<>) {
-  if (/^\#/) {
-    s/^\#//;
-    chop;
-    print "/*" . $_ . " */\n";
-  }
-  if (/^ModeLine\s+(\S+)\s+([\d.\s]+)(.*)/i) {
-    $name = $1;
-    $values = $2;
-    $flags = $3;
-    $flags =~ y/A-Z/a-z/;
-    $values =~ /([\d.]+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)/;
-    printf("\t{MODEPREFIX(%s),%d, %d,%d,%d,%d,0, %d,%d,%d,%d,0, %s, MODESUFFIX},\n",
-	   $name,$1*1000,$2,$3,$4,$5,$6,$7,$8,$9,$flagshash{$flags});
-# Also generate half-width doublescanned modes
-    printf("\t{MODEPREFIX(\"%dx%d\"),%d, %d,%d,%d,%d,0, %d,%d,%d,%d,0, %s | V_DBLSCAN, MODESUFFIX},\n",
-	   $2/2,$6/2,$1*500,$2/2,$3/2,$4/2,$5/2,$6/2,$7/2,$8/2,$9/2,$flagshash{$flags});
-  }
-
-
-}
-printf("\t{MODEPREFIX(NULL),0,0,0,0,0,0,0,0,0,0,0,0,MODESUFFIX}\n};\n");
commit 60086d90168265795e07a60939e9e2fe95c6e15c
Author: Alan Coopersmith <alan.coopersmith at sun.com>
Date:   Mon Dec 3 11:30:58 2007 -0800

    Use pkg-config to get -I, -L & -R flags needed for OpenSSL
    
    Still just uses -lcrypto instead of the full library list from --libs

diff --git a/configure.ac b/configure.ac
index 52f1ef6..618a9c4 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1077,6 +1077,11 @@ CORE_INCS='-I$(top_srcdir)/include -I$(top_builddir)/include'
 PKG_CHECK_MODULES([XSERVERCFLAGS], [$REQUIRED_MODULES $REQUIRED_LIBS])
 PKG_CHECK_MODULES([XSERVERLIBS], [$REQUIRED_LIBS])
 
+# OpenSSL used for SHA1 hashing in render/glyph.c, but we don't need all of
+# the OpenSSL libraries, just libcrypto
+PKG_CHECK_MODULES([OPENSSL], [openssl], [OPENSSL_LIB_FLAGS=`$PKG_CONFIG --libs-only-L --libs-only-other openssl`])
+LIBCRYPTO="$OPENSSL_LIB_FLAGS -lcrypto"
+
 # Autotools has some unfortunate issues with library handling.  In order to
 # get a server to rebuild when a dependency in the tree is changed, it must
 # be listed in SERVERNAME_DEPENDENCIES.  However, no system libraries may be
@@ -1092,9 +1097,9 @@ PKG_CHECK_MODULES([XSERVERLIBS], [$REQUIRED_LIBS])
 # XSERVER_SYS_LIBS is the set of out-of-tree libraries which all servers
 # require.
 #
-XSERVER_CFLAGS="${XSERVERCFLAGS_CFLAGS}"
+XSERVER_CFLAGS="${XSERVERCFLAGS_CFLAGS} ${OPENSSL_CFLAGS}"
 XSERVER_LIBS="$DIX_LIB $CONFIG_LIB $MI_LIB $OS_LIB"
-XSERVER_SYS_LIBS="${XSERVERLIBS_LIBS} ${SYS_LIBS} ${LIBS} -lcrypto"
+XSERVER_SYS_LIBS="${XSERVERLIBS_LIBS} ${SYS_LIBS} ${LIBS} ${LIBCRYPTO}"
 AC_SUBST([XSERVER_LIBS])
 AC_SUBST([XSERVER_SYS_LIBS])
 
commit b77ca7cc9c23184c4ab367baf1b3ed0acf27c269
Author: Alan Coopersmith <alan.coopersmith at sun.com>
Date:   Mon Dec 3 11:29:54 2007 -0800

    Use _X_EXPORT instead of __attribute__((visibility("default")))

diff --git a/hw/xfree86/parser/Flags.c b/hw/xfree86/parser/Flags.c
index 730ea0c..19b9d14 100644
--- a/hw/xfree86/parser/Flags.c
+++ b/hw/xfree86/parser/Flags.c
@@ -63,6 +63,7 @@
 #include "xf86tokens.h"
 #include "Configint.h"
 #include <math.h>
+#include <X11/Xfuncproto.h>
 
 extern LexRec val;
 
@@ -330,7 +331,7 @@ xf86findOption (XF86OptionPtr list, const char *name)
  * returned.  If the option is not found, a NULL is returned.
  */
 
-__attribute__((visibility("default"))) char *
+_X_EXPORT char *
 xf86findOptionValue (XF86OptionPtr list, const char *name)
 {
 	XF86OptionPtr p = xf86findOption (list, name);
diff --git a/hw/xfree86/parser/scan.c b/hw/xfree86/parser/scan.c
index 36061c8..9706d48 100644
--- a/hw/xfree86/parser/scan.c
+++ b/hw/xfree86/parser/scan.c
@@ -64,6 +64,7 @@
 #include <string.h>
 #include <unistd.h>
 #include <stdarg.h>
+#include <X11/Xfuncproto.h>
 
 #if !defined(X_NOT_POSIX)
 #if defined(_POSIX_SOURCE)
@@ -939,7 +940,7 @@ StringToToken (char *str, xf86ConfigSymTabRec * tab)
  * Compare two names.  The characters '_', ' ', and '\t' are ignored
  * in the comparison.
  */
-__attribute__((visibility("default"))) int
+_X_EXPORT int
 xf86nameCompare (const char *s1, const char *s2)
 {
 	char c1, c2;
commit 1faba797cbfe1a4804b7ea6b47e1ca9d4e4324e4
Author: Adam Jackson <ajax at redhat.com>
Date:   Mon Dec 3 14:12:58 2007 -0500

    Death to libcwrapper.
    
    This has been deprecated since 1.1.  Since we're breaking ABI again anyway,
    remove it entirely.

diff --git a/configure.ac b/configure.ac
index bea49a7..52f1ef6 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1064,7 +1064,6 @@ else
   DIX_LIB='$(top_builddir)/dix/libdix.la'
   OS_LIB='$(top_builddir)/os/libos.la'
 fi
-CWRAP_LIB='$(top_builddir)/os/libcwrapper.la'
 MI_LIB='$(top_builddir)/mi/libmi.la'
 MI_EXT_LIB='$(top_builddir)/mi/libmiext.la'
 MI_INC='-I$(top_srcdir)/mi'
@@ -1166,7 +1165,7 @@ AC_MSG_RESULT([$XVFB])
 AM_CONDITIONAL(XVFB, [test "x$XVFB" = xyes])
 
 if test "x$XVFB" = xyes; then
-	XVFB_LIBS="$FB_LIB $FIXES_LIB $XEXT_LIB $CONFIG_LIB $DBE_LIB $XTRAP_LIB $RECORD_LIB $GLX_LIBS $RENDER_LIB $RANDR_LIB $DAMAGE_LIB $MIEXT_DAMAGE_LIB $MIEXT_SHADOW_LIB $XI_LIB $XKB_LIB $XKB_STUB_LIB $COMPOSITE_LIB $XPSTUBS_LIB $CWRAP_LIB"
+	XVFB_LIBS="$FB_LIB $FIXES_LIB $XEXT_LIB $CONFIG_LIB $DBE_LIB $XTRAP_LIB $RECORD_LIB $GLX_LIBS $RENDER_LIB $RANDR_LIB $DAMAGE_LIB $MIEXT_DAMAGE_LIB $MIEXT_SHADOW_LIB $XI_LIB $XKB_LIB $XKB_STUB_LIB $COMPOSITE_LIB $XPSTUBS_LIB"
 	XVFB_SYS_LIBS="$XVFBMODULES_LIBS"
 	AC_SUBST([XVFB_LIBS])
 	AC_SUBST([XVFB_SYS_LIBS])
@@ -1184,7 +1183,7 @@ AC_MSG_RESULT([$XNEST])
 AM_CONDITIONAL(XNEST, [test "x$XNEST" = xyes])
 
 if test "x$XNEST" = xyes; then
-	XNEST_LIBS="$FB_LIB $FIXES_LIB $MI_LIB $XEXT_LIB $DBE_LIB $XTRAP_LIB $RECORD_LIB $GLX_LIBS $RENDER_LIB $RANDR_LIB $DAMAGE_LIB $MIEXT_DAMAGE_LIB $MIEXT_SHADOW_LIB $XI_LIB $XKB_LIB $XKB_STUB_LIB $COMPOSITE_LIB $XPSTUBS_LIB $CWRAP_LIB $DIX_LIB $OS_LIB $CONFIG_LIB"
+	XNEST_LIBS="$FB_LIB $FIXES_LIB $MI_LIB $XEXT_LIB $DBE_LIB $XTRAP_LIB $RECORD_LIB $GLX_LIBS $RENDER_LIB $RANDR_LIB $DAMAGE_LIB $MIEXT_DAMAGE_LIB $MIEXT_SHADOW_LIB $XI_LIB $XKB_LIB $XKB_STUB_LIB $COMPOSITE_LIB $XPSTUBS_LIB $DIX_LIB $OS_LIB $CONFIG_LIB"
 	XNEST_SYS_LIBS="$XNESTMODULES_LIBS"
 	AC_SUBST([XNEST_LIBS])
 	AC_SUBST([XNEST_SYS_LIBS])
@@ -1214,7 +1213,7 @@ AC_MSG_RESULT([$XGL])
 AM_CONDITIONAL(XGL, [test "x$XGL" = xyes])
 
 if test "x$XGL" = xyes; then
-	XGL_LIBS="$FB_LIB $COMPOSITE_LIB $FIXES_LIB $XEXT_LIB $CONFIG_LIB $DBE_LIB $XTRAP_LIB $RECORD_LIB $GLX_LIBS $RENDER_LIB $RANDR_LIB $DAMAGE_LIB $MIEXT_DAMAGE_LIB $MIEXT_SHADOW_LIB $MIEXT_LAYER_LIB $XI_LIB $XKB_LIB $XKB_STUB_LIB $XPSTUBS_LIB $CWRAP_LIB"
+	XGL_LIBS="$FB_LIB $COMPOSITE_LIB $FIXES_LIB $XEXT_LIB $CONFIG_LIB $DBE_LIB $XTRAP_LIB $RECORD_LIB $GLX_LIBS $RENDER_LIB $RANDR_LIB $DAMAGE_LIB $MIEXT_DAMAGE_LIB $MIEXT_SHADOW_LIB $MIEXT_LAYER_LIB $XI_LIB $XKB_LIB $XKB_STUB_LIB $XPSTUBS_LIB"
 	XGL_SYS_LIBS="$XGLMODULES_LIBS $GLX_SYS_LIBS $DLOPEN_LIBS"
 	AC_SUBST([XGL_LIBS])
 	AC_SUBST([XGL_SYS_LIBS])
@@ -1236,7 +1235,7 @@ AC_MSG_RESULT([$XEGL])
 AM_CONDITIONAL(XEGL, [test "x$XEGL" = xyes])
 
 if test "x$XEGL" = xyes; then
-	XEGL_LIBS="$FB_LIB $COMPOSITE_LIB $FIXES_LIB $XEXT_LIB $CONFIG_LIB $DBE_LIB $XTRAP_LIB $RECORD_LIB $GLX_LIBS $RENDER_LIB $RANDR_LIB $DAMAGE_LIB $MIEXT_DAMAGE_LIB $MIEXT_SHADOW_LIB $MIEXT_LAYER_LIB $XI_LIB $XKB_LIB $XKB_STUB_LIB $XPSTUBS_LIB $CWRAP_LIB"
+	XEGL_LIBS="$FB_LIB $COMPOSITE_LIB $FIXES_LIB $XEXT_LIB $CONFIG_LIB $DBE_LIB $XTRAP_LIB $RECORD_LIB $GLX_LIBS $RENDER_LIB $RANDR_LIB $DAMAGE_LIB $MIEXT_DAMAGE_LIB $MIEXT_SHADOW_LIB $MIEXT_LAYER_LIB $XI_LIB $XKB_LIB $XKB_STUB_LIB $XPSTUBS_LIB"
 	XEGL_SYS_LIBS = "$XEGL_SYS_LIBS $XEGLMODULES_LIBS $GLX_SYS_LIBS"
 	AC_SUBST([XEGL_LIBS])
 	AC_SUBST([XEGL_SYS_LIBS])
@@ -1253,7 +1252,7 @@ AC_MSG_RESULT([$XGLX])
 AM_CONDITIONAL(XGLX, [test "x$XGLX" = xyes])
 
 if test "x$XGLX" = xyes; then
-	XGLX_LIBS="$FB_LIB $COMPOSITE_LIB $FIXES_LIB $XEXT_LIB $CONFIG_LIB $DBE_LIB $XTRAP_LIB $RECORD_LIB $GLX_LIBS $RENDER_LIB $RANDR_LIB $DAMAGE_LIB $MIEXT_DAMAGE_LIB $MIEXT_SHADOW_LIB $MIEXT_LAYER_LIB $XI_LIB $XKB_LIB $XKB_STUB_LIB $XPSTUBS_LIB $CWRAP_LIB"
+	XGLX_LIBS="$FB_LIB $COMPOSITE_LIB $FIXES_LIB $XEXT_LIB $CONFIG_LIB $DBE_LIB $XTRAP_LIB $RECORD_LIB $GLX_LIBS $RENDER_LIB $RANDR_LIB $DAMAGE_LIB $MIEXT_DAMAGE_LIB $MIEXT_SHADOW_LIB $MIEXT_LAYER_LIB $XI_LIB $XKB_LIB $XKB_STUB_LIB $XPSTUBS_LIB"
 	XGLX_SYS_LIBS="$XGLX_SYS_LIBS $XGLXMODULES_LIBS $GLX_SYS_LIBS"
 	AC_SUBST([XGLX_LIBS])
 	AC_SUBST([XGLX_SYS_LIBS])
@@ -1546,7 +1545,7 @@ AC_MSG_RESULT([$XPRINT])
 if test "x$XPRINT" = xyes; then
 	PKG_CHECK_MODULES([XPRINTMODULES], [printproto x11 xfont $XDMCP_MODULES xau])
 	XPRINT_CFLAGS="$XPRINTMODULES_CFLAGS"
-	XPRINT_LIBS="$XEXT_LIB $CONFIG_LIB $DBE_LIB $XTRAP_LIB $RECORD_LIB $RENDER_LIB $COMPOSITE_LIB $RANDR_LIB $XI_LIB $FIXES_LIB $DAMAGE_LIB $XI_LIB $GLX_LIBS $MIEXT_DAMAGE_LIB $CWRAP_LIBS $XKB_LIB $XKB_STUB_LIB"
+	XPRINT_LIBS="$XEXT_LIB $CONFIG_LIB $DBE_LIB $XTRAP_LIB $RECORD_LIB $RENDER_LIB $COMPOSITE_LIB $RANDR_LIB $XI_LIB $FIXES_LIB $DAMAGE_LIB $XI_LIB $GLX_LIBS $MIEXT_DAMAGE_LIB $XKB_LIB $XKB_STUB_LIB"
 	XPRINT_SYS_LIBS="$XPRINTMODULES_LIBS"
 
 	xpconfigdir=$libdir/X11/xserver
@@ -1787,7 +1786,7 @@ if test "x$DMX" = xyes; then
 	fi
 	DMX_INCLUDES="$XEXT_INC $RENDER_INC $XTRAP_INC $RECORD_INC"
 	XDMX_CFLAGS="$DMXMODULES_CFLAGS"
-	XDMX_LIBS="$XEXT_LIB $FB_LIB $CONFIG_LIB $RENDER_LIB $XTRAP_LIB $RECORD_LIB $XI_LIB $XKB_LIB $XKB_STUB_LIB $MIEXT_SHADOW_LIB $MIEXT_DAMAGE_LIB $CWRAP_LIB"
+	XDMX_LIBS="$XEXT_LIB $FB_LIB $CONFIG_LIB $RENDER_LIB $XTRAP_LIB $RECORD_LIB $XI_LIB $XKB_LIB $XKB_STUB_LIB $MIEXT_SHADOW_LIB $MIEXT_DAMAGE_LIB"
 	XDMX_SYS_LIBS="$DMXMODULES_LIBS"
 	AC_SUBST([XDMX_CFLAGS])
 	AC_SUBST([XDMX_LIBS])
diff --git a/hw/xfree86/common/xf86Init.c b/hw/xfree86/common/xf86Init.c
index b5ee21d..c72fe30 100644
--- a/hw/xfree86/common/xf86Init.c
+++ b/hw/xfree86/common/xf86Init.c
@@ -1203,8 +1203,6 @@ OsVendorInit()
 {
   static Bool beenHere = FALSE;
 
-  xf86WrapperInit();
-
 #ifdef SIGCHLD
   signal(SIGCHLD, SIG_DFL);	/* Need to wait for child processes */
 #endif
diff --git a/hw/xfree86/ddc/ddcProperty.c b/hw/xfree86/ddc/ddcProperty.c
index 67351d3..02125df 100644
--- a/hw/xfree86/ddc/ddcProperty.c
+++ b/hw/xfree86/ddc/ddcProperty.c
@@ -31,7 +31,6 @@
 #include "property.h"
 #include "propertyst.h"
 #include "xf86DDC.h"
-#include "xf86_ansic.h"
 
 #define EDID1_ATOM_NAME         "XFree86_DDC_EDID1_RAWDATA"
 #define EDID2_ATOM_NAME         "XFree86_DDC_EDID2_RAWDATA"
diff --git a/hw/xfree86/loader/xf86sym.c b/hw/xfree86/loader/xf86sym.c
index 7c46e02..050b873 100644
--- a/hw/xfree86/loader/xf86sym.c
+++ b/hw/xfree86/loader/xf86sym.c
@@ -79,8 +79,6 @@
 #include "vidmodeproc.h"
 #include "xf86miscproc.h"
 #include "loader.h"
-#define DONT_DEFINE_WRAPPERS
-#include "xf86_ansic.h"
 #include "xisb.h"
 #include "vbe.h"
 #ifndef __OpenBSD__
@@ -269,7 +267,6 @@ _X_HIDDEN void *xfree86LookupTab[] = {
     SYMFUNC(xf86ReadSerial)
     SYMFUNC(xf86WriteSerial)
     SYMFUNC(xf86CloseSerial)
-    SYMFUNC(xf86GetErrno)
     SYMFUNC(xf86WaitForInput)
     SYMFUNC(xf86SerialSendBreak)
     SYMFUNC(xf86FlushInput)
@@ -724,186 +721,6 @@ _X_HIDDEN void *xfree86LookupTab[] = {
     SYMFUNC(LoaderGetOS)
     SYMFUNC(LoaderGetABIVersion)
 
-    /*
-     * These are our own interfaces to libc functions.
-     */
-    SYMFUNC(xf86abort)
-    SYMFUNC(xf86abs)
-    SYMFUNC(xf86acos)
-    SYMFUNC(xf86asin)
-    SYMFUNC(xf86atan)
-    SYMFUNC(xf86atan2)
-    SYMFUNC(xf86atof)
-    SYMFUNC(xf86atoi)
-    SYMFUNC(xf86atol)
-    SYMFUNC(xf86bsearch)
-    SYMFUNC(xf86ceil)
-    SYMFUNC(xf86calloc)
-    SYMFUNC(xf86clearerr)
-    SYMFUNC(xf86close)
-    SYMFUNC(xf86cos)
-    SYMFUNC(xf86exit)
-    SYMFUNC(xf86exp)
-    SYMFUNC(xf86fabs)
-    SYMFUNC(xf86fclose)
-    SYMFUNC(xf86feof)
-    SYMFUNC(xf86ferror)
-    SYMFUNC(xf86fflush)
-    SYMFUNC(xf86fgetc)
-    SYMFUNC(xf86fgetpos)
-    SYMFUNC(xf86fgets)
-    SYMFUNC(xf86finite)
-    SYMFUNC(xf86floor)
-    SYMFUNC(xf86fmod)
-    SYMFUNC(xf86fopen)
-    SYMFUNC(xf86fprintf)
-    SYMFUNC(xf86fputc)
-    SYMFUNC(xf86fputs)
-    SYMFUNC(xf86fread)
-    SYMFUNC(xf86free)
-    SYMFUNC(xf86freopen)
-    SYMFUNC(xf86frexp)
-    SYMFUNC(xf86fscanf)
-    SYMFUNC(xf86fseek)
-    SYMFUNC(xf86fsetpos)
-    SYMFUNC(xf86ftell)
-    SYMFUNC(xf86fwrite)
-    SYMFUNC(xf86getc)
-    SYMFUNC(xf86getenv)
-    SYMFUNC(xf86getpagesize)
-    SYMFUNC(xf86hypot)
-    SYMFUNC(xf86ioctl)
-    SYMFUNC(xf86isalnum)
-    SYMFUNC(xf86isalpha)
-    SYMFUNC(xf86iscntrl)
-    SYMFUNC(xf86isdigit)
-    SYMFUNC(xf86isgraph)
-    SYMFUNC(xf86islower)
-    SYMFUNC(xf86isprint)
-    SYMFUNC(xf86ispunct)
-    SYMFUNC(xf86isspace)
-    SYMFUNC(xf86isupper)
-    SYMFUNC(xf86isxdigit)
-    SYMFUNC(xf86labs)
-    SYMFUNC(xf86ldexp)
-    SYMFUNC(xf86log)
-    SYMFUNC(xf86log10)
-    SYMFUNC(xf86lseek)
-    SYMFUNC(xf86malloc)
-    SYMFUNC(xf86memchr)
-    SYMFUNC(xf86memcmp)
-    SYMFUNC(xf86memcpy)
-    /*
-     * Some compilers generate calls to memcpy to handle structure copies
-     * or run-time initializations.
-     */
-    SYMFUNCALIAS("memcpy", xf86memcpy)
-    SYMFUNC(xf86memset)
-    /*
-     * Some compilers generate calls to memset to handle aggregate
-     * initializations.
-     */
-    SYMFUNCALIAS("memset", xf86memset)
-    SYMFUNC(xf86memmove)
-    SYMFUNC(xf86mmap)
-    SYMFUNC(xf86modf)
-    SYMFUNC(xf86munmap)
-    SYMFUNC(xf86open)
-    SYMFUNC(xf86perror)
-    SYMFUNC(xf86pow)
-    SYMFUNC(xf86printf)
-    SYMFUNC(xf86qsort)
-    SYMFUNC(xf86read)
-    SYMFUNC(xf86realloc)
-    SYMFUNC(xf86remove)
-    SYMFUNC(xf86rename)
-    SYMFUNC(xf86rewind)
-    SYMFUNC(xf86setbuf)
-    SYMFUNC(xf86setvbuf)
-    SYMFUNC(xf86sin)
-    SYMFUNC(xf86snprintf)
-    SYMFUNC(xf86sprintf)
-    SYMFUNC(xf86sqrt)
-    SYMFUNC(xf86sscanf)
-    SYMFUNC(xf86strcat)
-    SYMFUNC(xf86strcmp)
-    SYMFUNC(xf86strcasecmp)
-    SYMFUNC(xf86strcpy)
-    SYMFUNC(xf86strcspn)
-    SYMFUNC(xf86strerror)
-    SYMFUNC(xf86strlcat)
-    SYMFUNC(xf86strlcpy)
-    SYMFUNC(xf86strlen)
-    SYMFUNC(xf86strncasecmp)
-    SYMFUNC(xf86strncat)
-    SYMFUNC(xf86strncmp)
-    SYMFUNC(xf86strncpy)
-    SYMFUNC(xf86strpbrk)
-    SYMFUNC(xf86strchr)
-    SYMFUNC(xf86strrchr)
-    SYMFUNC(xf86strspn)
-    SYMFUNC(xf86strstr)
-    SYMFUNC(xf86strtod)
-    SYMFUNC(xf86strtok)
-    SYMFUNC(xf86strtol)
-    SYMFUNC(xf86strtoul)
-    SYMFUNC(xf86tan)
-    SYMFUNC(xf86tmpfile)
-    SYMFUNC(xf86tolower)
-    SYMFUNC(xf86toupper)
-    SYMFUNC(xf86ungetc)
-    SYMFUNC(xf86vfprintf)
-    SYMFUNC(xf86vsnprintf)
-    SYMFUNC(xf86vsprintf)
-    SYMFUNC(xf86write)
-
-    /* non-ANSI C functions */
-    SYMFUNC(xf86opendir)
-    SYMFUNC(xf86closedir)
-    SYMFUNC(xf86readdir)
-    SYMFUNC(xf86rewinddir)
-    SYMFUNC(xf86ffs)
-    SYMFUNC(xf86strdup)
-    SYMFUNC(xf86bzero)
-    SYMFUNC(xf86usleep)
-    SYMFUNC(xf86execl)
-
-    SYMFUNC(xf86getsecs)
-    SYMFUNC(xf86fpossize) /* for returning sizeof(fpos_t) */
-
-    /* Some of these were added for DRI support. */
-    SYMFUNC(xf86stat)
-    SYMFUNC(xf86fstat)
-    SYMFUNC(xf86access)
-    SYMFUNC(xf86geteuid)
-    SYMFUNC(xf86getegid)
-    SYMFUNC(xf86getpid)
-    SYMFUNC(xf86mknod)
-    SYMFUNC(xf86chmod)
-    SYMFUNC(xf86chown)
-    SYMFUNC(xf86sleep)
-    SYMFUNC(xf86mkdir)
-    SYMFUNC(xf86shmget)
-    SYMFUNC(xf86shmat)
-    SYMFUNC(xf86shmdt)
-    SYMFUNC(xf86shmctl)
-#ifdef HAS_GLIBC_SIGSETJMP
-    SYMFUNC(xf86setjmp)
-    SYMFUNC(xf86setjmp0)
-#if defined(__GLIBC__) && (__GLIBC__ >= 2)
-    SYMFUNCALIAS("xf86setjmp1", __sigsetjmp)
-#else
-    SYMFUNC(xf86setjmp1)	/* For libc5 */
-#endif
-#else
-    SYMFUNCALIAS("xf86setjmp", setjmp)
-    SYMFUNC(xf86setjmp0)
-    SYMFUNC(xf86setjmp1)
-#endif
-    SYMFUNCALIAS("xf86longjmp", longjmp)
-    SYMFUNC(xf86getjmptype)
-    SYMFUNC(xf86setjmp1_arg2)
-    SYMFUNC(xf86setjmperror)
 #ifdef XF86DRI
     /*
      * These may have more general uses, but for now, they are only used
@@ -1088,14 +905,6 @@ _X_HIDDEN void *xfree86LookupTab[] = {
 #endif
 #endif
 
-    /* Some variables. */
-
-    SYMVAR(xf86stdin)
-    SYMVAR(xf86stdout)
-    SYMVAR(xf86stderr)
-    SYMVAR(xf86errno)
-    SYMVAR(xf86HUGE_VAL)
-
     /* General variables (from xf86.h) */
     SYMVAR(xf86ScreenIndex)
     SYMVAR(xf86PixmapIndex)
diff --git a/hw/xfree86/os-support/Makefile.am b/hw/xfree86/os-support/Makefile.am
index e5a71c0..f9a82c6 100644
--- a/hw/xfree86/os-support/Makefile.am
+++ b/hw/xfree86/os-support/Makefile.am
@@ -1,7 +1,7 @@
 SUBDIRS = bus @XORG_OS_SUBDIR@ misc $(DRI_SUBDIRS)
 DIST_SUBDIRS = bsd bus misc linux lynxos solaris sysv sco usl hurd
 
-sdk_HEADERS = xf86_OSproc.h xf86_OSlib.h xf86_ansic.h xf86_libc.h \
+sdk_HEADERS = xf86_OSproc.h xf86_OSlib.h \
               assyntax.h xf86OSmouse.h
 
 EXTRA_DIST = int10Defines.h xf86OSpriv.h README.OS-lib
diff --git a/hw/xfree86/os-support/bsd/Makefile.am b/hw/xfree86/os-support/bsd/Makefile.am
index 446b69e..4fc270a 100644
--- a/hw/xfree86/os-support/bsd/Makefile.am
+++ b/hw/xfree86/os-support/bsd/Makefile.am
@@ -54,7 +54,6 @@ AM_CFLAGS = -DUSESTDRES $(XORG_CFLAGS) $(DIX_CFLAGS)
 INCLUDES = $(XORG_INCS)
 
 libbsd_la_SOURCES = \
-	$(srcdir)/../shared/libc_wrapper.c \
 	$(srcdir)/../shared/posix_tty.c \
 	$(srcdir)/../shared/sigio.c \
 	$(srcdir)/../shared/vidmem.c \
diff --git a/hw/xfree86/os-support/hurd/Makefile.am b/hw/xfree86/os-support/hurd/Makefile.am
index e6543e1..2214b1c 100644
--- a/hw/xfree86/os-support/hurd/Makefile.am
+++ b/hw/xfree86/os-support/hurd/Makefile.am
@@ -4,7 +4,6 @@ libhurd_la_SOURCES = hurd_bell.c hurd_init.c hurd_mmap.c \
 		hurd_mouse.c hurd_video.c \
 		$(srcdir)/../shared/VTsw_noop.c \
 		$(srcdir)/../shared/posix_tty.c \
-		$(srcdir)/../shared/libc_wrapper.c \
 		$(srcdir)/../shared/stdResource.c \
 		$(srcdir)/../shared/sigiostubs.c \
 		$(srcdir)/../shared/pm_noop.c \
diff --git a/hw/xfree86/os-support/linux/Makefile.am b/hw/xfree86/os-support/linux/Makefile.am
index 5bb252b..5a52ffd 100644
--- a/hw/xfree86/os-support/linux/Makefile.am
+++ b/hw/xfree86/os-support/linux/Makefile.am
@@ -34,7 +34,6 @@ liblinux_la_SOURCES = lnx_init.c lnx_video.c lnx_mouse.c \
                      $(srcdir)/../shared/vidmem.c \
 		     $(srcdir)/../shared/sigio.c \
                      $(srcdir)/../shared/stdResource.c \
-		     $(srcdir)/../shared/libc_wrapper.c \
                      $(ACPI_SRCS) \
                      $(APM_SRCS) \
                      $(PLATFORM_PCI_SUPPORT)
diff --git a/hw/xfree86/os-support/misc/Delay.c b/hw/xfree86/os-support/misc/Delay.c
index e3e93fa..b18789a 100644
--- a/hw/xfree86/os-support/misc/Delay.c
+++ b/hw/xfree86/os-support/misc/Delay.c
@@ -18,7 +18,7 @@ xf86UDelay(long usec)
     int sigio;
 
     sigio = xf86BlockSIGIO();
-    xf86usleep(usec);
+    usleep(usec);
     xf86UnblockSIGIO(sigio);
 #endif
 
diff --git a/hw/xfree86/os-support/shared/bios_mmap.c b/hw/xfree86/os-support/shared/bios_mmap.c
index cccf86a..51d4299 100644
--- a/hw/xfree86/os-support/shared/bios_mmap.c
+++ b/hw/xfree86/os-support/shared/bios_mmap.c
@@ -55,7 +55,7 @@ xf86ReadBIOS(unsigned long Base, unsigned long Offset, unsigned char *Buf,
 			DEV_MEM, strerror(errno));
 		return(-1);
 	}
-	psize = xf86getpagesize();
+	psize = getpagesize();
 	Offset += Base & (psize - 1);
 	Base &= ~(psize - 1);
 	mlen = (Offset + Len + psize - 1) & ~(psize - 1);
diff --git a/hw/xfree86/os-support/shared/libc_wrapper.c b/hw/xfree86/os-support/shared/libc_wrapper.c
deleted file mode 100644
index 9594241..0000000
--- a/hw/xfree86/os-support/shared/libc_wrapper.c
+++ /dev/null
@@ -1,2123 +0,0 @@
-/*
- * Copyright 1997-2003 by The XFree86 Project, Inc.
- *
- * Permission to use, copy, modify, distribute, and sell this software and its
- * documentation for any purpose is hereby granted without fee, provided that
- * the above copyright notice appear in all copies and that both that
- * copyright notice and this permission notice appear in supporting
- * documentation, and that the names of Orest Zborowski and David Wexelblat 
- * not be used in advertising or publicity pertaining to distribution of 
- * the software without specific, written prior permission.  Orest Zborowski
- * and David Wexelblat make no representations about the suitability of this 
- * software for any purpose.  It is provided "as is" without express or 
- * implied warranty.
- *
- * THE XFREE86 PROJECT, INC. DISCLAIMS ALL WARRANTIES WITH REGARD 
- * TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND 
- * FITNESS, IN NO EVENT SHALL OREST ZBOROWSKI OR DAVID WEXELBLAT BE LIABLE 
- * FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 
- * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 
- * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 
- * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- *
- */
-
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#if defined(linux) && !defined(__GLIBC__)
-#undef __STRICT_ANSI__
-#endif
-#include <X11/X.h>
-#include <X11/Xmd.h>
-#include <X11/Xos.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-#if defined(__bsdi__)
-#undef _POSIX_SOURCE
-#undef _ANSI_SOURCE
-#endif
-#include <sys/time.h>
-#include <math.h>
-#ifdef sun
-#include <ieeefp.h>
-#endif
-#include <stdarg.h>
-#include <fcntl.h>
-#include <X11/Xfuncproto.h>
-#include "os.h"
-#include <ctype.h>
-#include <unistd.h>
-#include <string.h>
-#include <errno.h>
-#include <stdio.h>
-#include <sys/ioctl.h>
-#ifdef HAS_SVR3_MMAPDRV
-#define NO_MMAP
-#ifdef SELF_CONTAINED_WRAPPER
-#include <sys/at_ansi.h>
-#include <sys/kd.h>
-#include <sys/sysmacros.h>
-#if !defined(_NEED_SYSI86)
-# include <sys/immu.h>
-# include <sys/region.h>
-#endif
-#include <sys/mmap.h>
-struct kd_memloc MapDSC;
-int mmapFd = -2;
-#else
-extern struct kd_memloc MapDSC;
-extern int mmapFd;
-#endif
-#endif
-#ifndef NO_MMAP
-#include <sys/mman.h>
-#ifndef MAP_FAILED
-#define MAP_FAILED ((caddr_t)-1)
-#endif
-#endif
-#if !defined(ISC)
-#include <stdlib.h>
-#endif
-
-#define NEED_XF86_TYPES 1
-#define NEED_XF86_PROTOTYPES 1
-#define DONT_DEFINE_WRAPPERS
-#include "xf86_ansic.h"
-
-#ifndef SELF_CONTAINED_WRAPPER
-#include "xf86.h"
-#include "xf86Priv.h"
-#define NO_OSLIB_PROTOTYPES
-#define XF86_OS_PRIVS
-#define HAVE_WRAPPER_DECLS
-#include "xf86_OSlib.h"
-#else
-void xf86WrapperInit(void);
-#endif
-
-
-#ifndef X_NOT_POSIX
-#include <dirent.h>
-#else
-#ifdef SYSV
-#include <dirent.h>
-#else
-#ifdef USG
-#include <dirent.h>
-#else
-#include <sys/dir.h>
-#ifndef dirent
-#define dirent direct
-#endif
-#endif
-#endif
-#endif
-typedef struct dirent DIRENTRY;
-
-#ifdef ISC202
-#include <sys/types.h>
-#define WIFEXITED(a)  ((a & 0x00ff) == 0)  /* LSB will be 0 */
-#define WEXITSTATUS(a) ((a & 0xff00) >> 8)
-#define WIFSIGNALED(a) ((a & 0xff00) == 0) /* MSB will be 0 */
-#define WTERMSIG(a) (a & 0x00ff)
-#else
-#if defined(ISC) && !defined(_POSIX_SOURCE)
-#define _POSIX_SOURCE
-#include <sys/types.h>
-#include <sys/wait.h>
-#undef _POSIX_SOURCE
-#else
-#if (defined(ISC) && defined(_POSIX_SOURCE)) || defined(Lynx) || (defined (__alpha__) && defined(linux))
-#include <sys/types.h>
-#endif
-#include <sys/wait.h>
-#endif
-#endif
-#ifdef Lynx
-#if !defined(S_IFIFO) && defined(S_IFFIFO)
-#define S_IFIFO S_IFFIFO
-#endif
-#endif
-
-/* For xf86getpagesize() */
-#if defined(linux)
-#define HAS_SC_PAGESIZE
-#define HAS_GETPAGESIZE
-#elif defined(CSRG_BASED)
-#define HAS_GETPAGESIZE
-#elif defined(DGUX)
-#define HAS_GETPAGESIZE
-#elif defined(sun) && !defined(SVR4)
-#define HAS_GETPAGESIZE
-#endif
-#ifdef XNO_SYSCONF
-#undef _SC_PAGESIZE
-#endif
-#ifdef HAVE_SYSV_IPC
-#include <sys/ipc.h>
-#include <sys/shm.h>
-#endif
-#include <setjmp.h>
-
-#if defined(setjmp) && defined(__GNU_LIBRARY__) && \
-    (!defined(__GLIBC__) || (__GLIBC__ < 2) || \
-     ((__GLIBC__ == 2) && (__GLIBC_MINOR__ < 3)))
-#define HAS_GLIBC_SIGSETJMP 1
-#endif
-
-#if 0
-#define SETBUF_RETURNS_INT
-#endif
-
-_X_EXPORT double xf86HUGE_VAL;
-
-#ifndef SELF_CONTAINED_WRAPPERS
-extern void xf86DisableIO(void);
-#endif
-
-/*
- * This file contains the XFree86 wrappers for libc functions that can be
- * called by loadable modules
- */
-
-_X_EXPORT double
-xf86hypot(double x, double y)
-{
-	return(hypot(x,y));
-}
-
-_X_EXPORT void
-xf86qsort(void *base, xf86size_t nmemb, xf86size_t size,
-	  int (*comp)(const void *, const void *))
-{
-	qsort(base, nmemb, size, comp);
-}
-
-/* string functions */
-
-_X_EXPORT char*
-xf86strcat(char* dest, const char* src)
-{
-	return(strcat(dest,src));
-}
-
-_X_EXPORT char*
-xf86strchr(const char* s, int c)
-{
-	return strchr(s,c);
-}
-
-_X_EXPORT int
-xf86strcmp(const char* s1, const char* s2)
-{
-	return strcmp(s1,s2);
-}
-
-/* Just like the BSD version.  It assumes that tolower() is ANSI-compliant */
-_X_EXPORT int
-xf86strcasecmp(const char* s1, const char* s2)
-{
-	const unsigned char *us1 = (const unsigned char *)s1;
-	const unsigned char *us2 = (const unsigned char *)s2;
-
-	while (tolower(*us1) == tolower(*us2++))
-		if (*us1++ == '\0')
-			return 0;
-
-	return tolower(*us1) - tolower(*--us2);
-}
-
-_X_EXPORT char*
-xf86strcpy(char* dest, const char* src)
-{
-	return strcpy(dest,src);
-}
-
-_X_EXPORT xf86size_t
-xf86strcspn(const char* s1, const char* s2)
-{
-	return (xf86size_t)strcspn(s1,s2);
-}
-
-_X_EXPORT xf86size_t
-xf86strlen(const char* s)
-{
-	return (xf86size_t)strlen(s);
-}
-
-_X_EXPORT xf86size_t
-xf86strlcat(char *dest, const char *src, xf86size_t size)
-{
-	return(strlcat(dest, src, size));
-}
-
-_X_EXPORT xf86size_t
-xf86strlcpy(char *dest, const char *src, xf86size_t size)
-{
-	return strlcpy(dest, src, size);
-}
-
-_X_EXPORT char*
-xf86strncat(char* dest, const char* src, xf86size_t n)
-{
-	return strncat(dest,src,(size_t)n);
-}
-
-_X_EXPORT int
-xf86strncmp(const char* s1, const char* s2, xf86size_t n)
-{
-	return strncmp(s1,s2,(size_t)n);
-}
-
-/* Just like the BSD version.  It assumes that tolower() is ANSI-compliant */
-_X_EXPORT int
-xf86strncasecmp(const char* s1, const char* s2, xf86size_t n)
-{
-	if (n != 0) {
-		const unsigned char *us1 = (const unsigned char *)s1;
-		const unsigned char *us2 = (const unsigned char *)s2;
-
-		do {
-			if (tolower(*us1) != tolower(*us2++))
-				return tolower(*us1) - tolower(*--us2);
-			if (*us1++ == '\0')
-				break;
-		} while (--n != 0);
-	}
-	return 0;
-}
-
-_X_EXPORT char*
-xf86strncpy(char* dest, const char* src, xf86size_t n)
-{
-	return strncpy(dest,src,(size_t)n);
-}
-
-_X_EXPORT char*
-xf86strpbrk(const char* s1, const char* s2)
-{
-	return strpbrk(s1,s2);
-}
-
-_X_EXPORT char*
-xf86strrchr(const char* s, int c)
-{
-	return strrchr(s,c);
-}
-
-_X_EXPORT xf86size_t
-xf86strspn(const char* s1, const char* s2)
-{
-	return strspn(s1,s2);
-}
-
-_X_EXPORT char*
-xf86strstr(const char* s1, const char* s2)
-{
-	return strstr(s1,s2);
-}
-
-_X_EXPORT char*
-xf86strtok(char* s1, const char* s2)
-{
-	return strtok(s1,s2);
-}
-
-_X_EXPORT char*
-xf86strdup(const char* s)
-{
-	return xstrdup(s);
-}
-
-_X_EXPORT int
-xf86sprintf(char *s, const char *format, ...)
-{
-    int ret;
-    va_list args;
-    va_start(args, format);
-    ret = vsprintf(s, format, args);
-    va_end(args);
-    return ret;
-}
-
-_X_EXPORT int
-xf86snprintf(char *s, xf86size_t len, const char *format, ...)
-{
-    int ret;
-    va_list args;
-    va_start(args, format);
-    ret = vsnprintf(s, (size_t)len, format, args);
-    va_end(args);
-    return ret;
-}
-
-_X_EXPORT void
-xf86bzero(void* s, unsigned int n)
-{
-    memset(s, 0, n);
-}
-  
-#ifdef HAVE_VSSCANF
-_X_EXPORT int
-xf86sscanf(char *s, const char *format, ...)
-#else
-_X_EXPORT int
-xf86sscanf(char *s, const char *format, char *a0, char *a1, char *a2,
-	   char *a3, char *a4, char *a5, char *a6, char *a7, char *a8,
-	   char *a9) /* limit of ten args */
-#endif
-{
-#ifdef HAVE_VSSCANF
-	int ret;
-	va_list args;
-	va_start(args, format);
-
-	ret = vsscanf(s,format,args);
-	va_end(args);
-	return ret;
-#else
-	return sscanf(s, format, a0, a1, a2, a3, a4, a5, a6, a7, a8, a9);
-#endif
-}
-  
-/* Basic I/O */
-
-_X_EXPORT int xf86errno;
-
-/* XXX This is not complete */
-
-static int
-xfToOsOpenFlags(int xfflags)
-{
-    int flags = 0;
-
-    /* XXX This assumes O_RDONLY is 0 */
-    if (xfflags & XF86_O_WRONLY)
-	flags |= O_WRONLY;
-    if (xfflags & XF86_O_RDWR)
-	flags |= O_RDWR;
-    if (xfflags & XF86_O_CREAT)
-	flags |= O_CREAT;
-
-    return flags;
-}
-
-_X_EXPORT int 
-xf86open(const char *path, int flags, ...)
-{
-    int fd;
-    va_list ap;
-
-    va_start(ap, flags);
-    flags = xfToOsOpenFlags(flags);
-    if (flags & O_CREAT) {
-	/* can't request a mode_t directly on systems where mode_t 
-	   is an unsigned short */
-	mode_t mode = (mode_t)va_arg(ap, unsigned int);
-	fd = open(path, flags, mode);
-    } else {
-	fd = open(path, flags);
-    }
-    va_end(ap);
-    xf86errno = xf86GetErrno();
-
-    return fd;
-}
-
-_X_EXPORT int
-xf86close(int fd)
-{
-    int status = close(fd);
-
-    xf86errno = xf86GetErrno();
-    return status;
-}
-
-_X_EXPORT long
-xf86lseek(int fd, long offset, int whence)
-{
-	switch (whence) {
-	case XF86_SEEK_SET:
-		whence = SEEK_SET;
-		break;
-	case XF86_SEEK_CUR:
-		whence = SEEK_CUR;
-		break;
-	case XF86_SEEK_END:
-		whence = SEEK_END;
-		break;
-	}
-	return (long)lseek(fd, (off_t)offset, whence);
-}
-
-_X_EXPORT int
-xf86ioctl(int fd, unsigned long request, pointer argp)
-{
-    int status = ioctl(fd, request, argp);
-
-    xf86errno = xf86GetErrno();
-    return status;
-}
-
-_X_EXPORT xf86ssize_t
-xf86read(int fd, void *buf, xf86size_t nbytes)
-{
-    xf86ssize_t n = read(fd, buf, (size_t)nbytes);
-
-    xf86errno = xf86GetErrno();
-    return n;
-}
-
-_X_EXPORT xf86ssize_t
-xf86write(int fd, const void *buf, xf86size_t nbytes)
-{
-    xf86ssize_t n = write(fd, buf, (size_t)nbytes);
-
-    xf86errno = xf86GetErrno();
-    return n;
-}
-
-_X_EXPORT void*
-xf86mmap(void *start, xf86size_t length, int prot,
-	 int flags, int fd, xf86size_t /* off_t */ offset)
-{
-#ifndef NO_MMAP
-    int p=0, f=0;
-    void *rc;
-
-    if (flags & XF86_MAP_FIXED)		f |= MAP_FIXED;
-    if (flags & XF86_MAP_SHARED)	f |= MAP_SHARED;
-    if (flags & XF86_MAP_PRIVATE)	f |= MAP_PRIVATE;
-#if defined(__amd64__) && defined(linux)
-    if (flags & XF86_MAP_32BIT)	        f |= MAP_32BIT;
-#endif
-    if (prot  & XF86_PROT_EXEC)		p |= PROT_EXEC;
-    if (prot  & XF86_PROT_READ)		p |= PROT_READ;
-    if (prot  & XF86_PROT_WRITE)	p |= PROT_WRITE;
-    if (prot  & XF86_PROT_NONE)		p |= PROT_NONE;
-
-    rc = mmap(start,(size_t)length,p,f,fd,(off_t)offset);
-
-    xf86errno = xf86GetErrno();
-    if (rc == MAP_FAILED)
-	return XF86_MAP_FAILED;
-    else
-	return rc;
-#else
-#ifdef HAS_SVR3_MMAPDRV
-    void *rc;
-#ifdef SELF_CONTAINED_WRAPPER
-    if(mmapFd < 0) {
-      if ((mmapFd = open("/dev/mmap", O_RDWR)) == -1) {
-          ErrorF("Warning: failed to open /dev/mmap \n");
-          xf86errno = xf86_ENOSYS;
-          return XF86_MAP_FAILED;
-      }
-    }
-#endif
-    MapDSC.vaddr    = (char *)start;
-    MapDSC.physaddr = (char *)offset;
-    MapDSC.length   = length;
-    MapDSC.ioflg    = 1;
-
-    rc = (pointer)ioctl(mmapFd, MAP, &MapDSC);
-    xf86errno = xf86GetErrno();
-    if (rc == NULL)
-	return XF86_MAP_FAILED;
-    else
-	return rc;
-#else
-    ErrorF("Warning: mmap() is not supported on this platform\n");
-    xf86errno = xf86_ENOSYS;
-    return XF86_MAP_FAILED;
-#endif
-#endif
-}
-
-_X_EXPORT int
-xf86munmap(void *start, xf86size_t length)
-{
-#ifndef NO_MMAP
-    int rc = munmap(start,(size_t)length);
-
-    xf86errno = xf86GetErrno();
-    return rc;
-#else
-#ifdef HAS_SVR3_MMAPDRV
-    int rc = ioctl(mmapFd, UNMAPRM , start);
- 
-    xf86errno = xf86GetErrno();
-    return rc;
-#else
-    ErrorF("Warning: munmap() is not supported on this platform\n");
-    xf86errno = xf86_ENOSYS;
-    return -1;
-#endif
-#endif
-}
-
-_X_EXPORT int
-xf86stat(const char *file_name, struct xf86stat *xfst)
-{
-    int         rc;
-    struct stat st;
-
-    rc            = stat(file_name, &st);
-    xf86errno     = xf86GetErrno();
-    xfst->st_rdev = st.st_rdev;	/* Not much is currently supported */
-    return rc;
-}
-
-_X_EXPORT int
-xf86fstat(int fd, struct xf86stat *xfst)
-{
-    int         rc;
-    struct stat st;
-
-    rc            = fstat(fd, &st);
-    xf86errno     = xf86GetErrno();
-    xfst->st_rdev = st.st_rdev;	/* Not much is currently supported */
-    return rc;
-}
-
-static int
-xfToOsAccessMode(int xfmode)
-{
-    switch(xfmode) {
-    case XF86_R_OK: return R_OK;
-    case XF86_W_OK: return W_OK;
-    case XF86_X_OK: return X_OK;
-    case XF86_F_OK: return F_OK;
-    }
-    return 0;
-}
-
-_X_EXPORT int
-xf86access(const char *pathname, int mode)
-{
-    int rc;
-    
-    mode      = xfToOsAccessMode(mode);
-    rc        = access(pathname, mode);
-    xf86errno = xf86GetErrno();
-    return rc;
-}
-
-
-
-/* limited stdio support */
-
-#define XF86FILE_magic	0x58464856	/* "XFHV" */
-
-typedef struct _xf86_file_ {
-	INT32	fileno;
-	INT32	magic;
-	FILE*	filehnd;
-	char*	fname;
-} XF86FILE_priv;
-
-static XF86FILE_priv stdhnd[3] = {
-	{ 0, XF86FILE_magic, NULL, "$stdinp$" },
-	{ 0, XF86FILE_magic, NULL, "$stdout$" },
-	{ 0, XF86FILE_magic, NULL, "$stderr$" }
-};
-
-_X_EXPORT XF86FILE* xf86stdin = (XF86FILE*)&stdhnd[0];
-_X_EXPORT XF86FILE* xf86stdout = (XF86FILE*)&stdhnd[1];
-_X_EXPORT XF86FILE* xf86stderr = (XF86FILE*)&stdhnd[2];
-
-void
-xf86WrapperInit()
-{
-    if (stdhnd[0].filehnd == NULL)
-	stdhnd[0].filehnd = stdin;
-    if (stdhnd[1].filehnd == NULL)
-	stdhnd[1].filehnd = stdout;
-    if (stdhnd[2].filehnd == NULL)
-	stdhnd[2].filehnd = stderr;
-    xf86HUGE_VAL = HUGE_VAL;
-}
-
-_X_EXPORT XF86FILE*
-xf86fopen(const char* fn, const char* mode)
-{
-	XF86FILE_priv* fp;
-	FILE *f = fopen(fn,mode);
-	xf86errno = xf86GetErrno();
-	if (!f) return 0;
-
-	fp = xalloc(sizeof(XF86FILE_priv));
-	fp->magic = XF86FILE_magic;
-	fp->filehnd = f;
-	fp->fileno = fileno(f);
-	fp->fname = xf86strdup(fn);
-#ifdef DEBUG
-	ErrorF("xf86fopen(%s,%s) yields FILE %p XF86FILE %p\n",
-		fn,mode,f,fp);
-#endif
-	return (XF86FILE*)fp;
-}
-
-static void _xf86checkhndl(XF86FILE_priv* f,const char *func)
-{
-	if (!f || f->magic != XF86FILE_magic ||
-	    !f->filehnd || !f->fname) {
-		FatalError("libc_wrapper error: passed invalid FILE handle to %s",
-			func);
-		exit(42);
-	}
-}
-
-_X_EXPORT int
-xf86fclose(XF86FILE* f) 
-{
-	XF86FILE_priv* fp = (XF86FILE_priv*)f;
-	int ret;
-
-	_xf86checkhndl(fp,"xf86fclose");
-
-	/* somewhat bad check */
-	if (fp->fileno < 3 && fp->fname[0]=='$') {
-		/* assume this is stdin/out/err, don't dispose */
-		ret = fclose(fp->filehnd);
-	} else {
-		ret = fclose(fp->filehnd);
-		fp->magic = 0;	/* invalidate */
-		xfree(fp->fname);
-		xfree(fp);
-	}
-	return ret ? -1 : 0;
-}
-
-_X_EXPORT int
-xf86printf(const char *format, ...)
-{
-	int ret;
-	va_list args;
-	va_start(args, format);
-
-	ret = printf(format,args);
-	va_end(args);
-	return ret;
-}
-
-_X_EXPORT int
-xf86fprintf(XF86FILE* f, const char *format, ...)
-{
-	XF86FILE_priv* fp = (XF86FILE_priv*)f;
-
-	int ret;
-	va_list args;
-	va_start(args, format);
-
-#ifdef DEBUG
-	ErrorF("xf86fprintf for XF86FILE %p\n", fp);
-#endif
-	_xf86checkhndl(fp,"xf86fprintf");
-
-	ret = vfprintf(fp->filehnd,format,args);
-	va_end(args);
-	return ret;
-}
-
-_X_EXPORT int
-xf86vfprintf(XF86FILE* f, const char *format, va_list ap)
-{
-	XF86FILE_priv* fp = (XF86FILE_priv*)f;
-
-#ifdef DEBUG
-	ErrorF("xf86vfprintf for XF86FILE %p\n", fp);
-#endif
-	_xf86checkhndl(fp,"xf86vfprintf");
-
-	return vfprintf(fp->filehnd,format,ap);
-}
-
-_X_EXPORT int
-xf86vsprintf(char *s, const char *format, va_list ap)
-{
-	return vsprintf(s, format, ap);
-}
-
-_X_EXPORT int
-xf86vsnprintf(char *s, xf86size_t len, const char *format, va_list ap)
-{
-	return vsnprintf(s, (size_t)len, format, ap);
-}
-
-#ifdef HAVE_VFSCANF
-_X_EXPORT int
-xf86fscanf(XF86FILE* f, const char *format, ...)
-#else
-_X_EXPORT int
-xf86fscanf(XF86FILE* f, const char *format, char *a0, char *a1, char *a2,
-	   char *a3, char *a4, char *a5, char *a6, char *a7, char *a8,
-	   char *a9) /* limit of ten args */
-#endif
-{
-	XF86FILE_priv* fp = (XF86FILE_priv*)f;
-
-#ifdef HAVE_VFSCANF
-	int ret;
-	va_list args;
-	va_start(args, format);
-
-	_xf86checkhndl(fp,"xf86fscanf");
-
-	ret = vfscanf(fp->filehnd,format,args);
-	va_end(args);
-	return ret;
-#else
-	_xf86checkhndl(fp,"xf86fscanf");
-	return fscanf(fp->filehnd, format, a0, a1, a2, a3, a4, a5, a6, a7, a8, a9);
-#endif
-}
-
-_X_EXPORT char *
-xf86fgets(char *buf, INT32 n, XF86FILE* f)
-{
-	XF86FILE_priv* fp = (XF86FILE_priv*)f;
-
-	_xf86checkhndl(fp,"xf86fgets");
-	return fgets(buf,(int)n,fp->filehnd);
-}
-
-_X_EXPORT int
-xf86fputs(const char *buf, XF86FILE* f)
-{
-	XF86FILE_priv* fp = (XF86FILE_priv*)f;
-
-	_xf86checkhndl(fp,"xf86fputs");
-	return fputs(buf,fp->filehnd);
-}
-
-_X_EXPORT int
-xf86getc(XF86FILE* f)
-{
-	XF86FILE_priv* fp = (XF86FILE_priv*)f;
-
-	_xf86checkhndl(fp,"xf86getc");
-	return getc(fp->filehnd);
-}
-
-_X_EXPORT int
-xf86fgetc(XF86FILE* f)
-{
-	XF86FILE_priv* fp = (XF86FILE_priv*)f;
-
-	_xf86checkhndl(fp,"xf86fgetc");
-	return fgetc(fp->filehnd);
-}
-
-_X_EXPORT int
-xf86fputc(int c,XF86FILE* f)
-{
-	XF86FILE_priv* fp = (XF86FILE_priv*)f;
-
-	_xf86checkhndl(fp,"xf86fputc");
-	return fputc(c,fp->filehnd);
-}
-
-_X_EXPORT int
-xf86fflush(XF86FILE* f)
-{
-	XF86FILE_priv* fp = (XF86FILE_priv*)f;
-
-	_xf86checkhndl(fp,"xf86fflush");
-	return fflush(fp->filehnd);
-}
-
-_X_EXPORT xf86size_t
-xf86fread(void* buf, xf86size_t sz, xf86size_t cnt, XF86FILE* f)
-{
-	XF86FILE_priv* fp = (XF86FILE_priv*)f;
-
-#ifdef DEBUG
-	ErrorF("xf86fread for XF86FILE %p\n", fp);
-#endif
-	_xf86checkhndl(fp,"xf86fread");
-	return fread(buf,(size_t)sz,(size_t)cnt,fp->filehnd);
-}
-
-_X_EXPORT xf86size_t
-xf86fwrite(const void* buf, xf86size_t sz, xf86size_t cnt, XF86FILE* f)
-{
-	XF86FILE_priv* fp = (XF86FILE_priv*)f;
-
-	_xf86checkhndl(fp,"xf86fwrite");
-	return fwrite(buf,(size_t)sz,(size_t)cnt,fp->filehnd);
-}
-
-_X_EXPORT int
-xf86fseek(XF86FILE* f, long offset, int whence)
-{
-	XF86FILE_priv* fp = (XF86FILE_priv*)f;
-
-	_xf86checkhndl(fp,"xf86fseek");
-	switch (whence) {
-	case XF86_SEEK_SET:
-		whence = SEEK_SET;
-		break;
-	case XF86_SEEK_CUR:
-		whence = SEEK_CUR;
-		break;
-	case XF86_SEEK_END:
-		whence = SEEK_END;
-		break;
-	}
-	return fseek(fp->filehnd,offset,whence);
-}
-
-_X_EXPORT long
-xf86ftell(XF86FILE* f)
-{
-	XF86FILE_priv* fp = (XF86FILE_priv*)f;
-
-	_xf86checkhndl(fp,"xf86ftell");
-	return ftell(fp->filehnd);
-}
-
-#define mapnum(e) case (xf86_##e): err = e; break;
-
-_X_EXPORT char*
-xf86strerror(int n)
-{
-	int err;
-
-	switch (n)
-	{
-		case 0: err = 0; break;
-		mapnum (EACCES);
-		mapnum (EAGAIN);
-		mapnum (EBADF);
-		mapnum (EEXIST);
-		mapnum (EFAULT);
-		mapnum (EINTR);
-		mapnum (EINVAL);
-		mapnum (EISDIR);
-		mapnum (ELOOP);		/* not POSIX 1 */
-		mapnum (EMFILE);
-		mapnum (ENAMETOOLONG);
-		mapnum (ENFILE);
-		mapnum (ENOENT);
-		mapnum (ENOMEM);
-		mapnum (ENOSPC);
-		mapnum (ENOTDIR);
-		mapnum (EPIPE);
-		mapnum (EROFS);
-		mapnum (ETXTBSY);	/* not POSIX 1 */
-		mapnum (ENOTTY);
-#ifdef ENOSYS
-		mapnum (ENOSYS);
-#endif
-		mapnum (EBUSY);
-		mapnum (ENODEV);
-		mapnum (EIO);
-#ifdef ESRCH
-		mapnum (ESRCH);
-#endif
-#ifdef ENXIO
-		mapnum (ENXIO);  
-#endif
-#ifdef E2BIG
-		mapnum (E2BIG);    
-#endif
-#ifdef ENOEXEC
-		mapnum (ENOEXEC);
-#endif
-#ifdef ECHILD
-		mapnum (ECHILD);
-#endif
-#ifdef ENOTBLK
-		mapnum (ENOTBLK);
-#endif
-#ifdef EXDEV
-		mapnum (EXDEV); 
-#endif
-#ifdef EFBIG
-		mapnum (EFBIG);
-#endif
-#ifdef ESPIPE
-		mapnum (ESPIPE);
-#endif
-#ifdef EMLINK
-		mapnum (EMLINK);
-#endif
-#ifdef EDOM
-		mapnum (EDOM);
-#endif
-#ifdef ERANGE
-		mapnum (ERANGE);
-#endif
-
-		default:
-			err = 999;
-	}
-	return strerror(err);
-}
-
-#undef mapnum
-
-
-/* required for portable fgetpos/fsetpos,
- * use as
- *	XF86fpos_t* pos = xalloc(xf86fpossize());
- */
-_X_EXPORT long
-xf86fpossize()
-{
-	return sizeof(fpos_t);
-}
-
-_X_EXPORT int
-xf86fgetpos(XF86FILE* f,XF86fpos_t* pos)
-{
-	XF86FILE_priv* fp = (XF86FILE_priv*)f;
-	fpos_t *ppos = (fpos_t*)pos;
-
-	_xf86checkhndl(fp,"xf86fgetpos");
-#ifndef ISC
-	return fgetpos(fp->filehnd,ppos);
-#else
-	*ppos = ftell(fp->filehnd);
-	if (*ppos < 0L)
-		return(-1);
-	return(0);
-#endif
-}
-
-_X_EXPORT int
-xf86fsetpos(XF86FILE* f,const XF86fpos_t* pos)
-{
-	XF86FILE_priv* fp = (XF86FILE_priv*)f;
-	fpos_t *ppos = (fpos_t*)pos;
-
-	/* XXX need to handle xf86errno here */
-	_xf86checkhndl(fp,"xf86fsetpos");
-#ifndef ISC
-	return fsetpos(fp->filehnd,ppos);
-#else
-	if (ppos == NULL)
-	{
-		errno = EINVAL;
-		return EOF;
-	}
-	return fseek(fp->filehnd, *ppos, SEEK_SET);
-#endif
-}
-
-_X_EXPORT void
-xf86perror(const char *s)
-{
-	perror(s);
-}
-
-_X_EXPORT int
-xf86remove(const char *s)
-{
-#ifdef _POSIX_SOURCE
-	return remove(s);
-#else
-	return unlink(s);
-#endif
-}
-
-_X_EXPORT int
-xf86rename(const char *old, const char *new)
-{
-#ifdef _POSIX_SOURCE
-	return rename(old,new);
-#else
-	int ret = link(old,new);
-	if (!ret) {
-		ret = unlink(old);
-		if (ret) unlink(new);
-	} else
-		ret = unlink(new);
-	return ret;
-#endif
-}
-
-_X_EXPORT void
-xf86rewind(XF86FILE* f)
-{
-	XF86FILE_priv* fp = (XF86FILE_priv*)f;
-
-	_xf86checkhndl(fp,"xf86fsetpos");
-	rewind(fp->filehnd);
-}
-
-_X_EXPORT void
-xf86clearerr(XF86FILE* f)
-{
-	XF86FILE_priv* fp = (XF86FILE_priv*)f;
-
-	_xf86checkhndl(fp,"xf86clearerr");
-	clearerr(fp->filehnd);
-}
-
-_X_EXPORT int
-xf86feof(XF86FILE* f)
-{
-	XF86FILE_priv* fp = (XF86FILE_priv*)f;
-
-	_xf86checkhndl(fp,"xf86feof");
-	return feof(fp->filehnd);
-}
-
-_X_EXPORT int
-xf86ferror(XF86FILE* f)
-{
-	XF86FILE_priv* fp = (XF86FILE_priv*)f;
-
-	_xf86checkhndl(fp,"xf86ferror");
-	return ferror(fp->filehnd);
-}
-
-_X_EXPORT XF86FILE*
-xf86freopen(const char* fname,const char* mode,XF86FILE* fold)
-{
-	XF86FILE_priv* fp = (XF86FILE_priv*)fold;
-	FILE *fnew;
-
-	_xf86checkhndl(fp,"xf86freopen");
-	fnew = freopen(fname,mode,fp->filehnd);
-	xf86errno = xf86GetErrno();
-	if (!fnew) {
-		xf86fclose(fold);	/* discard old XF86FILE structure */
-		return 0;
-	}
-	/* recycle the old XF86FILE structure */
-	fp->magic = XF86FILE_magic;
-	fp->filehnd = fnew;
-	fp->fileno = fileno(fnew);
-	fp->fname = xf86strdup(fname);
-#ifdef DEBUG
-	ErrorF("xf86freopen(%s,%s,%p) yields FILE %p XF86FILE %p\n",
-		fname,mode,fold,fnew,fp);
-#endif
-	return (XF86FILE*)fp;
-}
-
-_X_EXPORT int
-xf86setbuf(XF86FILE* f, char *buf)
-{
-	XF86FILE_priv* fp = (XF86FILE_priv*)f;
-
-	_xf86checkhndl(fp,"xf86fsetbuf");
-#ifdef SETBUF_RETURNS_INT
-	return setbuf(fp->filehnd, buf);
-#else
-	setbuf(fp->filehnd, buf);
-	return 0;
-#endif
-}
-
-_X_EXPORT int
-xf86setvbuf(XF86FILE* f, char *buf, int mode, xf86size_t size)
-{
-	XF86FILE_priv* fp = (XF86FILE_priv*)f;
-	int vbufmode;
-
-	_xf86checkhndl(fp,"xf86fsetvbuf");
-
-	switch (mode) {
-	case XF86_IONBF:
-		vbufmode = _IONBF;
-		break;
-	case XF86_IOLBF:
-		vbufmode = _IOFBF;
-		break;
-	case XF86_IOFBF:
-		vbufmode = _IOLBF;
-		break;
-	default:
-		FatalError("libc_wrapper error: mode in setvbuf incorrect");
-		exit(42);
-	}
-
-	return setvbuf(fp->filehnd,buf,vbufmode,(size_t)size);
-}
-
-_X_EXPORT XF86FILE*
-xf86tmpfile(void)
-{
-#ifdef NEED_TMPFILE
-	return xf86fopen(tmpnam((char*)0),"w+");
-#else
-	XF86FILE_priv* fp;
-	FILE *f = tmpfile();
-	xf86errno = xf86GetErrno();
-	if (!f) return 0;
-
-	fp = xalloc(sizeof(XF86FILE_priv));
-	fp->magic = XF86FILE_magic;
-	fp->filehnd = f;
-	fp->fileno = fileno(f);
-	fp->fname = xf86strdup("*tmpfile*"); /* so that it can be xfree()'d */
-#ifdef DEBUG
-	ErrorF("xf86tmpfile() yields FILE %p XF86FILE %p\n",f,fp);
-#endif
-	return (XF86FILE*)fp;
-}
-#endif /* HAS_TMPFILE */
-
-
-_X_EXPORT int
-xf86ungetc(int c,XF86FILE* f)
-{
-	XF86FILE_priv* fp = (XF86FILE_priv*)f;
-
-	_xf86checkhndl(fp,"xf86ungetc");
-	return ungetc(c,fp->filehnd);
-}
-
-/* Misc functions. Some are ANSI C, some are not. */
-
-_X_EXPORT void
-xf86usleep(usec)
-    unsigned long usec;
-{
-#if (defined(SYSV) || defined(SVR4)) && !defined(sun)
-    syscall(3112, (usec) / 1000 + 1);
-#else
-    usleep(usec);
-#endif
-}
-
-_X_EXPORT void
-xf86getsecs(long * secs, long * usecs)
-{
-	struct timeval tv;
-
-	X_GETTIMEOFDAY(&tv);
-	if (secs)
-		*secs = tv.tv_sec;
-	if (usecs)
-		*usecs= tv.tv_usec;
-
-	return;
-}
-
-_X_EXPORT int
-xf86ffs(int mask)
-{
-	int n;
-	if (mask == 0) return 0;
-	for (n = 1; (mask & 1)==0; n++)
-		mask >>= 1;
-	return n;
-}
-
-_X_EXPORT char *
-xf86getenv(const char * a)
-{
-	/* Only allow this when the real and effective uids are the same */
-	if (getuid() != geteuid())
-		return NULL;
-	else
-		return(getenv(a));
-}
-
-_X_EXPORT void *
-xf86bsearch(const void *key, const void *base, xf86size_t nmemb,
-	    xf86size_t size, int (*compar)(const void *, const void *))
-{
-	return bsearch(key, base, (size_t)nmemb, (size_t)size, compar);
-}
-
-_X_EXPORT int
-xf86execl(const char *pathname, const char *arg, ...)
-{
-    int i;
-    pid_t pid;
-    int exit_status;
-    char *arglist[5];
-    va_list args;
-    va_start(args, arg);
-    arglist[0] = (char*)&args;
-    i = 1;
-    while (i < 5 && (arglist[i++] = va_arg(args, char *)) != NULL)
-	;
-    va_end(args);
-
-    if ((pid = fork()) < 0) {
-        ErrorF("Fork failed (%s)\n", strerror(errno));
-        return -1;
-    } else if (pid == 0) { /* child */
-	/* 
-	 * Make sure that the child doesn't inherit any I/O permissions it
-	 * shouldn't have.  It's better to put constraints on the development
-	 * of a clock program than to give I/O permissions to a bogus program
-	 * in someone's XF86Config file
-	 */
-#ifndef SELF_CONTAINED_WRAPPER
-	xf86DisableIO();
-#endif
-        if (setuid(getuid()) == -1) {
-		ErrorF("xf86Execl: setuid() failed: %s\n", strerror(errno));
-		exit(255);
-	}
-#if !defined(SELF_CONTAINED_WRAPPER)
-        /* set stdin, stdout to the consoleFD, and leave stderr alone */
-        for (i = 0; i < 2; i++)
-        {
-          if (xf86Info.consoleFd != i)
-          {
-            close(i);
-            dup(xf86Info.consoleFd);
-          }
-        }
-#endif
-
-	execv(pathname, arglist);
-	ErrorF("Exec failed for command \"%s\" (%s)\n",
-	       pathname, strerror(errno));
-	exit(255);
-    }
-
-    /* parent */
-    wait(&exit_status);
-    if (WIFEXITED(exit_status))
-    {
-	switch (WEXITSTATUS(exit_status))
-	    {
-	    case 0:     /* OK */
-		return 0;
-	    case 255:   /* exec() failed */
-		return(255);
-	    default:    /* bad exit status */
-		ErrorF("Program \"%s\" had bad exit status %d\n",
-		       pathname, WEXITSTATUS(exit_status));
-		return(WEXITSTATUS(exit_status));
-	    }
-    }
-    else if (WIFSIGNALED(exit_status))
-    {
-	ErrorF("Program \"%s\" died on signal %d\n",
-	       pathname, WTERMSIG(exit_status));
-	return(WTERMSIG(exit_status));
-    }
-#ifdef WIFSTOPPED
-    else if (WIFSTOPPED(exit_status))
-    {
-	ErrorF("Program \"%s\" stopped by signal %d\n",
-	       pathname, WSTOPSIG(exit_status));
-	return(WSTOPSIG(exit_status));
-    }
-#endif
-    else /* should never get to this point */
-    {
-	ErrorF("Program \"%s\" has unknown exit condition\n",
-	       pathname);
-	return(1);
-    }
-}
-
-_X_EXPORT void
-xf86abort(void)
-{
-	ErrorF("Module called abort() function\n");
-	abort();
-}
-
-_X_EXPORT void
-xf86exit(int ex)
-{
-	ErrorF("Module called exit() function with value=%d\n",ex);
-	exit(ex);
-}
-
-/* directory handling functions */
-#define XF86DIR_magic	0x78666876	/* "xfhv" */
-
-typedef struct _xf86_dir_ {
-	DIR		*dir;
-	INT32		magic;
-	XF86DIRENT	*dirent;
-} XF86DIR_priv;
-
-static void
-_xf86checkdirhndl(XF86DIR_priv* f,const char *func)
-{
-	if (!f || f->magic != XF86DIR_magic || !f->dir || !f->dirent) {
-		FatalError("libc_wrapper error: passed invalid DIR handle to %s",
-			func);
-		exit(42);
-	}
-}
-
-_X_EXPORT XF86DIR *
-xf86opendir(const char *name)
-{
-	XF86DIR_priv *dp;
-	DIR *dirp;
-
-	dirp = opendir(name);
-	if (!dirp)
-		return (XF86DIR*)0;
-
-	dp = xalloc(sizeof(XF86DIR_priv));
-	dp->magic = XF86DIR_magic; /* This time I have this, Dirk! :-) */
-	dp->dir = dirp;
-	dp->dirent = xalloc(sizeof(struct _xf86dirent));
-
-	return (XF86DIR*)dp;
-}
-
-_X_EXPORT XF86DIRENT*
-xf86readdir(XF86DIR* dirp)
-{
-	XF86DIR_priv* dp = (XF86DIR_priv*)dirp;
-	DIRENTRY *de;
-	XF86DIRENT* xde;
-	int sz;
-
-	_xf86checkdirhndl(dp,"xf86readdir");
-
-	de = readdir(dp->dir);
-	if (!de)
-		return (XF86DIRENT*)0;
-	xde = dp->dirent;
-	sz = strlen(de->d_name);
-	strncpy(xde->d_name,de->d_name, sz>_XF86NAMELEN ? (_XF86NAMELEN+1) : (sz+1));
-	xde->d_name[_XF86NAMELEN] = '\0';	/* be sure to have a 0 byte */
-	return xde;
-}
-
-_X_EXPORT void
-xf86rewinddir(XF86DIR* dirp)
-{
-	XF86DIR_priv* dp = (XF86DIR_priv*)dirp;
-
-	_xf86checkdirhndl(dp,"xf86readdir");
-	rewinddir(dp->dir);
-}
-
-_X_EXPORT int
-xf86closedir(XF86DIR* dir)
-{
-	XF86DIR_priv* dp = (XF86DIR_priv*)dir;
-	int n;
-
-	_xf86checkdirhndl(dp,"xf86readdir");
-
-	n = closedir(dp->dir);
-	dp->magic = 0;
-	xfree(dp->dirent);
-	xfree(dp);
-
-	return n;
-}
-
-static mode_t
-xfToOsChmodMode(xf86mode_t xfmode)
-{
-    mode_t mode = 0;
-
-    if (xfmode & XF86_S_ISUID) mode |= S_ISUID;
-    if (xfmode & XF86_S_ISGID) mode |= S_ISGID;
-    if (xfmode & XF86_S_ISVTX) mode |= S_ISVTX;
-    if (xfmode & XF86_S_IRUSR) mode |= S_IRUSR;
-    if (xfmode & XF86_S_IWUSR) mode |= S_IWUSR;
-    if (xfmode & XF86_S_IXUSR) mode |= S_IXUSR;
-    if (xfmode & XF86_S_IRGRP) mode |= S_IRGRP;
-    if (xfmode & XF86_S_IWGRP) mode |= S_IWGRP;
-    if (xfmode & XF86_S_IXGRP) mode |= S_IXGRP;
-    if (xfmode & XF86_S_IROTH) mode |= S_IROTH;
-    if (xfmode & XF86_S_IWOTH) mode |= S_IWOTH;
-    if (xfmode & XF86_S_IXOTH) mode |= S_IXOTH;
-
-    return mode;
-}
-
-_X_EXPORT int
-xf86chmod(const char *path, xf86mode_t xfmode)
-{
-    mode_t mode = xfToOsChmodMode(xfmode);
-    int    rc   = chmod(path, mode);
-    
-    xf86errno   = xf86GetErrno();
-    return rc;
-}
-
-_X_EXPORT int
-xf86chown(const char *path, xf86uid_t owner, xf86gid_t group)
-{
-    int rc = chown(path, owner, group);
-    xf86errno = xf86GetErrno();
-    return rc;
-}
-
-_X_EXPORT xf86uid_t
-xf86geteuid(void)
-{
-    return geteuid();
-}
-
-_X_EXPORT xf86gid_t
-xf86getegid(void)
-{
-    return getegid();
-}
-
-_X_EXPORT int
-xf86getpid(void)
-{
-    return getpid();
-}
-
-static mode_t
-xfToOsMknodMode(xf86mode_t xfmode)
-{
-    mode_t mode = xfToOsChmodMode(xfmode);
-
-    if (xfmode & XF86_S_IFREG) mode |= S_IFREG;
-    if (xfmode & XF86_S_IFCHR) mode |= S_IFCHR;
-    if (xfmode & XF86_S_IFBLK) mode |= S_IFBLK;
-    if (xfmode & XF86_S_IFIFO) mode |= S_IFIFO;
-
-    return mode;
-}
-
-_X_EXPORT int xf86mknod(const char *pathname, xf86mode_t xfmode, xf86dev_t dev)
-{
-    mode_t mode = xfToOsMknodMode(xfmode);
-    int rc      = mknod(pathname, mode, dev);
-    xf86errno   = xf86GetErrno();
-    return rc;
-}
-
-_X_EXPORT unsigned int xf86sleep(unsigned int seconds)
-{
-    return sleep(seconds);
-}
-
-_X_EXPORT int xf86mkdir(const char *pathname, xf86mode_t xfmode)
-{
-    mode_t mode = xfToOsChmodMode(xfmode);
-    int    rc   = mkdir(pathname, mode);
-    
-    xf86errno   = xf86GetErrno();
-    return rc;
-}
-
-
-/* Several math functions */
-
-_X_EXPORT int
-xf86abs(int x)
-{
-	return abs(x);
-}
-
-_X_EXPORT double
-xf86acos(double x)
-{
-	return acos(x);
-}
-
-_X_EXPORT double
-xf86asin(double x)
-{
-	return asin(x);
-}
-
-_X_EXPORT double
-xf86atan(double x)
-{
-	return atan(x);
-}
-
-_X_EXPORT double
-xf86atan2(double x,double y)
-{
-	return atan2(x,y);
-}
-
-_X_EXPORT double
-xf86atof(const char* s)
-{
-	return atof(s);
-}
-
-_X_EXPORT int
-xf86atoi(const char* s)
-{
-	return atoi(s);
-}
-
-_X_EXPORT long
-xf86atol(const char* s)
-{
-	return atol(s);
-}
-
-_X_EXPORT double
-xf86ceil(double x)
-{
-	return ceil(x);
-}
-
-_X_EXPORT double
-xf86cos(double x)
-{
-	return(cos(x));
-}
-
-_X_EXPORT double
-xf86exp(double x)
-{
-	return(exp(x));
-}
-
-_X_EXPORT double
-xf86fabs(double x)
-{
-        return(fabs(x));
-}
-
-_X_EXPORT int 
-xf86finite(double x)
-{
-#ifndef QNX4
-	return(finite(x));
-#else
-	/* XXX Replace this with something that really works. */
-	return 1;
-#endif
-}
-
-_X_EXPORT double
-xf86floor(double x)
-{
-	return floor(x);
-}
-
-_X_EXPORT double
-xf86fmod(double x,double y)
-{
-	return fmod(x,y);
-}
-
-_X_EXPORT long
-xf86labs(long x)
-{
-	return labs(x);
-}
-
-_X_EXPORT double
-xf86ldexp(double x, int exp)
-{
-	return ldexp(x, exp);
-}
-
-_X_EXPORT double
-xf86log(double x)
-{
-	return(log(x));
-}
-
-_X_EXPORT double
-xf86log10(double x)
-{
-	return(log10(x));
-}
-
-_X_EXPORT double
-xf86modf(double x,double* y)
-{
-	return modf(x,y);
-}
-
-_X_EXPORT double
-xf86pow(double x, double y)
-{
-	return(pow(x,y));
-}
-
-_X_EXPORT double
-xf86sin(double x)
-{
-	return sin(x);
-}
-
-_X_EXPORT double
-xf86sqrt(double x)
-{
-	return(sqrt(x));
-}
-
-_X_EXPORT double
-xf86strtod(const char *s, char **end)
-{
-	return strtod(s,end);
-}
-
-_X_EXPORT long
-xf86strtol(const char *s, char **end, int radix)
-{
-	return strtol(s,end,radix);
-}
-
-_X_EXPORT unsigned long
-xf86strtoul(const char *s, char **end,int radix)
-{
-	return strtoul(s,end,radix);
-}
-
-_X_EXPORT double
-xf86tan(double x)
-{
-	return tan(x);
-}
-
-/* memory functions */
-_X_EXPORT void*
-xf86memchr(const void* s, int c, xf86size_t n)
-{
-	return memchr(s,c,(size_t)n);
-}
-
-_X_EXPORT int
-xf86memcmp(const void* s1, const void* s2, xf86size_t n)
-{
-	return(memcmp(s1,s2,(size_t)n));
-}
-
-_X_EXPORT void*
-xf86memcpy(void* dest, const void* src, xf86size_t n)
-{
-	return(memcpy(dest,src,(size_t)n));
-}
-
-_X_EXPORT void*
-xf86memmove(void* dest, const void* src, xf86size_t n)
-{
-	return(memmove(dest,src,(size_t)n));
-}
-
-_X_EXPORT void*
-xf86memset(void* s, int c, xf86size_t n)
-{
-	return(memset(s,c,(size_t)n));
-}
-
-/* ctype functions */
-
-_X_EXPORT int
-xf86isalnum(int c)
-{
-	return isalnum(c) ? 1 : 0;
-}
-
-_X_EXPORT int
-xf86isalpha(int c)
-{
-	return isalpha(c) ? 1 : 0;
-}
-
-_X_EXPORT int
-xf86iscntrl(int c)
-{
-	return iscntrl(c) ? 1 : 0;
-}
-
-_X_EXPORT int
-xf86isdigit(int c)
-{
-	return isdigit(c) ? 1 : 0;
-}
-
-_X_EXPORT int
-xf86isgraph(int c)
-{
-	return isgraph(c) ? 1 : 0;
-}
-
-_X_EXPORT int
-xf86islower(int c)
-{
-	return islower(c) ? 1 : 0;
-}
-
-_X_EXPORT int
-xf86isprint(int c)
-{
-	return isprint(c) ? 1 : 0;
-}
-
-_X_EXPORT int
-xf86ispunct(int c)
-{
-	return ispunct(c) ? 1 : 0;
-}
-
-_X_EXPORT int
-xf86isspace(int c)
-{
-	return isspace(c) ? 1 : 0;
-}
-
-_X_EXPORT int
-xf86isupper(int c)
-{
-	return isupper(c) ? 1 : 0;
-}
-
-_X_EXPORT int
-xf86isxdigit(int c)
-{
-	return isxdigit(c) ? 1 : 0;
-}
-
-_X_EXPORT int
-xf86tolower(int c)
-{
-	return tolower(c);
-}
-
-_X_EXPORT int
-xf86toupper(int c)
-{
-	return toupper(c);
-}
-
-/* memory allocation functions */
-_X_EXPORT void*
-xf86calloc(xf86size_t sz,xf86size_t n)
-{
-	return xcalloc(sz, n);
-}
-
-_X_EXPORT void
-xf86free(void* p)
-{
-	xfree(p);
-}
-
-_X_EXPORT double
-xf86frexp(double x, int *exp)
-{
-        return frexp(x, exp);
-}
-
-_X_EXPORT void*
-xf86malloc(xf86size_t n)
-{
-	return xalloc(n);
-}
-
-_X_EXPORT void*
-xf86realloc(void* p, xf86size_t n)
-{
-	return xrealloc(p,n);
-}
-
-/*
- * XXX This probably doesn't belong here.
- */
-_X_EXPORT int
-xf86getpagesize()
-{
-	static int pagesize = -1;
-
-	if (pagesize != -1)
-		return pagesize;
-
-#if defined(_SC_PAGESIZE) || defined(HAS_SC_PAGESIZE)
-	pagesize = sysconf(_SC_PAGESIZE);
-#endif
-#ifdef _SC_PAGE_SIZE
-	if (pagesize == -1)
-		pagesize = sysconf(_SC_PAGE_SIZE);
-#endif
-#ifdef HAS_GETPAGESIZE
-	if (pagesize == -1)
-		pagesize = getpagesize();
-#endif
-#ifdef PAGE_SIZE
-	if (pagesize == -1)
-		pagesize = PAGE_SIZE;
-#endif
-	if (pagesize == -1)
-		FatalError("xf86getpagesize: Cannot determine page size");
-
-	return pagesize;
-}
-
-
-#define mapnum(e) case (e): return (xf86_##e)
-
-_X_EXPORT int
-xf86GetErrno ()
-{
-	switch (errno)
-	{
-		case 0: return 0;
-		mapnum (EACCES);
-		mapnum (EAGAIN);
-		mapnum (EBADF);
-		mapnum (EEXIST);
-		mapnum (EFAULT);
-		mapnum (EINTR);
-		mapnum (EINVAL);
-		mapnum (EISDIR);
-		mapnum (ELOOP);		/* not POSIX 1 */
-		mapnum (EMFILE);
-		mapnum (ENAMETOOLONG);
-		mapnum (ENFILE);
-		mapnum (ENOENT);
-		mapnum (ENOMEM);
-		mapnum (ENOSPC);
-		mapnum (ENOTDIR);
-		mapnum (EPIPE);
-		mapnum (EROFS);
-		mapnum (ETXTBSY);	/* not POSIX 1 */
-		mapnum (ENOTTY);
-#ifdef ENOSYS
-		mapnum (ENOSYS);
-#endif
-		mapnum (EBUSY);
-		mapnum (ENODEV);
-		mapnum (EIO);
-#ifdef ESRCH
-		mapnum (ESRCH);
-#endif
-#ifdef ENXIO
-		mapnum (ENXIO);  
-#endif
-#ifdef E2BIG
-		mapnum (E2BIG);    
-#endif
-#ifdef ENOEXEC
-		mapnum (ENOEXEC);
-#endif
-#ifdef ECHILD
-		mapnum (ECHILD);
-#endif
-#ifdef ENOTBLK
-		mapnum (ENOTBLK);
-#endif
-#ifdef EXDEV
-		mapnum (EXDEV); 
-#endif
-#ifdef EFBIG
-		mapnum (EFBIG);
-#endif
-#ifdef ESPIPE
-		mapnum (ESPIPE);
-#endif
-#ifdef EMLINK
-		mapnum (EMLINK);
-#endif
-#ifdef EDOM
-		mapnum (EDOM);
-#endif
-#ifdef ERANGE
-		mapnum (ERANGE);
-#endif
-     		default:
-			return (xf86_UNKNOWN);
-	}
-}
-
-#undef mapnum
-
-
-
-#ifdef HAVE_SYSV_IPC
-
-_X_EXPORT int
-xf86shmget(xf86key_t key, int size, int xf86shmflg)
-{
-    int shmflg;
-    int ret;
-    
-    /* This copies the permissions (SHM_R, SHM_W for u, g, o). */
-    shmflg = xf86shmflg & 0777;
-
-    if (key == XF86IPC_PRIVATE) key = IPC_PRIVATE;
-
-    if (xf86shmflg & XF86IPC_CREAT) shmflg |= IPC_CREAT;
-    if (xf86shmflg & XF86IPC_EXCL) shmflg |= IPC_EXCL;
-    if (xf86shmflg & XF86IPC_NOWAIT) shmflg |= IPC_NOWAIT;
-    ret = shmget((key_t) key, size, shmflg);
-
-    if (ret == -1)
-	xf86errno = xf86GetErrno();
-
-    return ret;
-}
-
-_X_EXPORT char *
-xf86shmat(int id, char *addr, int xf86shmflg)
-{
-    int shmflg = 0;
-    pointer ret;
-    
-#ifdef SHM_RDONLY
-    if (xf86shmflg & XF86SHM_RDONLY) shmflg |= SHM_RDONLY;
-#endif
-#ifdef SHM_RND
-    if (xf86shmflg & XF86SHM_RND)    shmflg |= SHM_RND;
-#endif
-#ifdef SHM_REMAP
-    if (xf86shmflg & XF86SHM_REMAP)  shmflg |= SHM_REMAP;
-#endif
-
-    ret = shmat(id,addr,shmflg);
-
-    if (ret == (pointer) -1)
-	xf86errno = xf86GetErrno();
-
-    return ret;
-}
-
-_X_EXPORT int
-xf86shmdt(char *addr)
-{
-    int ret;
-
-    ret = shmdt(addr);
-
-    if (ret == -1) 
-	xf86errno = xf86GetErrno();
-
-    return ret;
-}
-
-/*
- * for now only implement the rmid command.
- */
-_X_EXPORT int
-xf86shmctl(int id, int xf86cmd, pointer buf)
-{
-    int cmd;
-    int ret;
-    
-    switch (xf86cmd) {
-    case XF86IPC_RMID:
-	cmd = IPC_RMID;
-	break;
-    default:
-	return 0;
-    }
-    
-    ret = shmctl(id, cmd, buf);
-
-    if (ret == -1)
-	xf86errno = xf86GetErrno();
-
-    return ret;
-}
-#else
-
-int
-xf86shmget(xf86key_t key, int size, int xf86shmflg)
-{
-    xf86errno = ENOSYS;
-    
-    return -1;
-}
-
-char *
-xf86shmat(int id, char *addr, int xf86shmflg)
-{
-    xf86errno = ENOSYS;
-
-    return (char *)-1;
-}
-
-int
-xf86shmctl(int id, int xf86cmd, pointer buf)
-{
-    xf86errno = ENOSYS;
-
-    return -1;
-}
-
-int
-xf86shmdt(char *addr)
-{
-    xf86errno = ENOSYS;
-
-    return -1;
-}
-#endif /* HAVE_SYSV_IPC */
-
-_X_EXPORT int
-xf86getjmptype()
-{
-#ifdef HAS_GLIBC_SIGSETJMP
-    return 1;
-#else
-    return 0;
-#endif
-}
-
-#ifdef HAS_GLIBC_SIGSETJMP
-
-_X_EXPORT int
-xf86setjmp(xf86jmp_buf env)
-{
-#if defined(__GLIBC__) && (__GLIBC__ >= 2)
-    return __sigsetjmp((void *)env, xf86setjmp1_arg2());
-#else
-    return xf86setjmp1(env, xf86setjmp1_arg2());
-#endif
-}
-
-_X_EXPORT int
-xf86setjmp0(xf86jmp_buf env)
-{
-    FatalError("setjmp: type 0 called instead of type %d", xf86getjmptype());
-}
-
-#if !defined(__GLIBC__) || (__GLIBC__ < 2)	/* libc5 */
-
-_X_EXPORT int
-xf86setjmp1(xf86jmp_buf env, int arg2)
-{
-    __sigjmp_save((void *)env, arg2);
-    return __setjmp((void *)env);
-}
-
-#endif
-
-#else	/* HAS_GLIBC_SIGSETJMP */
-
-int
-xf86setjmp1(xf86jmp_buf env, int arg2)
-{
-    FatalError("setjmp: type 1 called instead of type %d", xf86getjmptype());
-}
-
-int 
-xf86setjmp0(xf86jmp_buf env)
-{
-  return setjmp((void *)env);
-}
-
-#endif  /* HAS_GLIBC_SIGSETJMP */
-
-_X_EXPORT int
-xf86setjmp1_arg2()
-{
-    return 1;
-}
-
-_X_EXPORT int
-xf86setjmperror(xf86jmp_buf env)
-{
-    FatalError("setjmp: don't know how to handle setjmp() type %d",
-	       xf86getjmptype());
-}
-
-long
-xf86random()
-{
-    return random();
-}
diff --git a/hw/xfree86/os-support/solaris/Makefile.am b/hw/xfree86/os-support/solaris/Makefile.am
index 5ed60bc..68f6b4c 100644
--- a/hw/xfree86/os-support/solaris/Makefile.am
+++ b/hw/xfree86/os-support/solaris/Makefile.am
@@ -20,7 +20,6 @@ solaris- at SOLARIS_INOUT_ARCH@.il: solaris- at SOLARIS_INOUT_ARCH@.S
 noinst_LTLIBRARIES = libsolaris.la
 libsolaris_la_SOURCES = sun_bios.c sun_init.c \
 	sun_mouse.c sun_vid.c sun_bell.c $(AGP_SRC) sun_apm.c \
-	$(srcdir)/../shared/libc_wrapper.c \
 	$(srcdir)/../shared/kmod_noop.c \
 	$(srcdir)/../shared/posix_tty.c $(srcdir)/../shared/sigiostubs.c \
 	$(srcdir)/../shared/stdResource.c \
diff --git a/hw/xfree86/os-support/xf86_OSlib.h b/hw/xfree86/os-support/xf86_OSlib.h
index 77f2253..aba4758 100644
--- a/hw/xfree86/os-support/xf86_OSlib.h
+++ b/hw/xfree86/os-support/xf86_OSlib.h
@@ -76,21 +76,6 @@
 #include <X11/Xos.h>
 #include <X11/Xfuncproto.h>
 
-/*
- * Define some things from the "ANSI" C wrappers that are needed in the
- * the core server.
- */
-#ifndef HAVE_WRAPPER_DECLS
-#define HAVE_WRAPPER_DECLS
-#undef usleep
-#define usleep(a) xf86usleep(a)
-extern void xf86usleep(unsigned long);
-extern int xf86getpagesize(void);
-extern int xf86GetErrno(void);  
-typedef unsigned long xf86size_t;
-typedef signed long xf86ssize_t;
-#endif
-
 #include <stdio.h>
 #include <ctype.h>
 #include <stddef.h>
diff --git a/hw/xfree86/os-support/xf86_ansic.h b/hw/xfree86/os-support/xf86_ansic.h
deleted file mode 100644
index 0afd967..0000000
--- a/hw/xfree86/os-support/xf86_ansic.h
+++ /dev/null
@@ -1,314 +0,0 @@
-/*
- * Copyright 1997-2003 by The XFree86 Project, Inc
- *
- * Permission to use, copy, modify, distribute, and sell this software and its
- * documentation for any purpose is hereby granted without fee, provided that
- * the above copyright notice appear in all copies and that both that
- * copyright notice and this permission notice appear in supporting
- * documentation, and that the names of the above listed copyright holders 
- * not be used in advertising or publicity pertaining to distribution of 
- * the software without specific, written prior permission.  The above listed
- * copyright holders make no representations about the suitability of this 
- * software for any purpose.  It is provided "as is" without express or 
- * implied warranty.
- *
- * THE ABOVE LISTED COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD 
- * TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY 
- * AND FITNESS, IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT HOLDERS BE 
- * LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY 
- * DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER 
- * IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING 
- * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- *
- */
-
-#ifndef _XF86_ANSIC_H
-#define _XF86_ANSIC_H
-
-#include <stdarg.h>
-
-/*
- * The first set of definitions are required both for modules and
- * libc_wrapper.c.
- */
-
-#if !defined(SYSV) && !defined(SVR4) && !defined(Lynx) || \
-	defined(__SCO__) || defined(__UNIXWARE__)
-#define HAVE_VSSCANF
-#define HAVE_VFSCANF
-#endif 
-
-#ifndef NULL
-#if (defined(SVR4) || defined(SYSV)) && !defined(__GNUC__)
-#define NULL 0
-#else
-#define NULL ((void *)0)
-#endif
-#endif
-#ifndef EOF
-#define EOF (-1)
-#endif
-
-#ifndef PATH_MAX
-#define PATH_MAX 1024
-#endif
-
-/* <limits.h> stuff */
-#define x_BITSPERBYTE 8
-#define x_BITS(type)  (x_BITSPERBYTE * (int)sizeof(type))
-#define x_SHORTBITS x_BITS(short)
-#define x_INTBITS x_BITS(int)
-#define x_LONGBITS x_BITS(long)
-#ifndef SHRT_MIN
-#define SHRT_MIN ((short)(1 << (x_SHORTBITS - 1)))
-#endif
-
-#ifndef FONTMODULE
-#include "misc.h"
-#endif
-#include "xf86_libc.h"
-#ifndef SHRT_MAX
-#define SHRT_MAX ((short)~SHRT_MIN)
-#endif
-#ifndef USHRT_MAX
-#define USHRT_MAX ((unsigned short)~0)
-#endif
-#ifndef MINSHORT
-#define MINSHORT SHRT_MIN
-#endif
-#ifndef MAXSHORT
-#define MAXSHORT SHRT_MAX
-#endif
-#ifndef INT_MIN
-#define INT_MIN (1 << (x_INTBITS - 1))
-#endif
-#ifndef INT_MAX
-#define INT_MAX (~INT_MIN)
-#endif
-#ifndef UINT_MAX
-#define UINT_MAX (~0)
-#endif
-#ifndef MININT
-#define MININT INT_MIN
-#endif
-#ifndef MAXINT
-#define MAXINT INT_MAX
-#endif
-#ifndef LONG_MIN
-#define LONG_MIN ((long)(1 << (x_LONGBITS - 1)))
-#endif
-#ifndef LONG_MAX
-#define LONG_MAX ((long)~LONG_MIN)
-#endif
-#ifndef ULONG_MAX
-#define ULONG_MAX ((unsigned long)~0UL)
-#endif
-#ifndef MINLONG
-#define MINLONG LONG_MIN
-#endif
-#ifndef MAXLONG
-#define MAXLONG LONG_MAX
-#endif
-
-/*
- * ANSI C compilers only.
- */
-
-/* ANSI C emulation library */
-
-extern void xf86abort(void);
-extern int xf86abs(int);
-extern double xf86acos(double);
-extern double xf86asin(double);
-extern double xf86atan(double);
-extern double xf86atan2(double,double);
-extern double xf86atof(const char*);
-extern int xf86atoi(const char*);
-extern long xf86atol(const char*);
-extern void *xf86bsearch(const void *, const void *, xf86size_t, xf86size_t,
-			 int (*)(const void *, const void *));
-extern double xf86ceil(double);
-extern void* xf86calloc(xf86size_t,xf86size_t);
-extern void xf86clearerr(XF86FILE*);
-extern double xf86cos(double);
-extern void xf86exit(int);
-extern double xf86exp(double);
-extern double xf86fabs(double);
-extern int xf86fclose(XF86FILE*);
-extern int xf86feof(XF86FILE*);
-extern int xf86ferror(XF86FILE*);
-extern int xf86fflush(XF86FILE*);
-extern int xf86fgetc(XF86FILE*);
-extern int xf86getc(XF86FILE*);
-extern int xf86fgetpos(XF86FILE*,XF86fpos_t*);
-extern char* xf86fgets(char*,INT32,XF86FILE*);
-extern int xf86finite(double);
-extern double xf86floor(double);
-extern double xf86fmod(double,double);
-extern XF86FILE* xf86fopen(const char*,const char*);
-extern double xf86frexp(double, int*);
-extern int xf86printf(const char*,...);
-extern int xf86fprintf(XF86FILE*,const char*,...);
-extern int xf86fputc(int,XF86FILE*);
-extern int xf86fputs(const char*,XF86FILE*);
-extern xf86size_t xf86fread(void*,xf86size_t,xf86size_t,XF86FILE*);
-extern void xf86free(void*);
-extern XF86FILE* xf86freopen(const char*,const char*,XF86FILE*);
-#if defined(HAVE_VFSCANF) || !defined(NEED_XF86_PROTOTYPES)
-extern int xf86fscanf(XF86FILE*,const char*,...);
-#else
-extern int xf86fscanf(/*XF86FILE*,const char*,char *,char *,char *,char *,
-			char *,char *,char *,char *,char *,char * */);
-#endif
-extern int xf86fseek(XF86FILE*,long,int);
-extern int xf86fsetpos(XF86FILE*,const XF86fpos_t*);
-extern long xf86ftell(XF86FILE*);
-extern xf86size_t xf86fwrite(const void*,xf86size_t,xf86size_t,XF86FILE*);
-extern char* xf86getenv(const char*);
-extern int xf86isalnum(int);
-extern int xf86isalpha(int);
-extern int xf86iscntrl(int);
-extern int xf86isdigit(int);
-extern int xf86isgraph(int);
-extern int xf86islower(int);
-extern int xf86isprint(int);
-extern int xf86ispunct(int);
-extern int xf86isspace(int);
-extern int xf86isupper(int);
-extern int xf86isxdigit(int);
-extern long xf86labs(long);
-extern double xf86ldexp(double,int);
-extern double xf86log(double);
-extern double xf86log10(double);
-extern void* xf86malloc(xf86size_t);
-extern void* xf86memchr(const void*,int,xf86size_t);
-extern int xf86memcmp(const void*,const void*,xf86size_t);
-extern void* xf86memcpy(void*,const void*,xf86size_t);
-extern void* xf86memmove(void*,const void*,xf86size_t);
-extern void* xf86memset(void*,int,xf86size_t);
-extern double xf86modf(double,double*);
-extern void xf86perror(const char*);
-extern double xf86pow(double,double);
-extern void xf86qsort(void*, xf86size_t, xf86size_t, 
-                      int(*)(const void*, const void*));
-extern void* xf86realloc(void*,xf86size_t);
-extern long xf86random(void);
-extern int xf86remove(const char*);
-extern int xf86rename(const char*,const char*);
-extern void xf86rewind(XF86FILE*);
-extern int xf86setbuf(XF86FILE*,char*);
-extern int xf86setvbuf(XF86FILE*,char*,int,xf86size_t);
-extern double xf86sin(double);
-extern int xf86sprintf(char*,const char*,...);
-extern int xf86snprintf(char*,xf86size_t,const char*,...);
-extern double xf86sqrt(double);
-#if defined(HAVE_VSSCANF) || !defined(NEED_XF86_PROTOTYPES)
-extern int xf86sscanf(char*,const char*,...);
-#else
-extern int xf86sscanf(/*char*,const char*,char *,char *,char *,char *,
-			char *,char *,char *,char *,char *,char * */);
-#endif
-extern char* xf86strcat(char*,const char*);
-extern char* xf86strchr(const char*, int c);
-extern int xf86strcmp(const char*,const char*);
-extern int xf86strcasecmp(const char*,const char*);
-extern char* xf86strcpy(char*,const char*);
-extern xf86size_t xf86strcspn(const char*,const char*);
-extern char* xf86strerror(int);
-extern xf86size_t xf86strlcat(char*,const char*,xf86size_t);
-extern xf86size_t xf86strlcpy(char*,const char*,xf86size_t);
-extern xf86size_t xf86strlen(const char*);
-extern char* xf86strncat(char *, const char *, xf86size_t);
-extern int xf86strncmp(const char*,const char*,xf86size_t);
-extern int xf86strncasecmp(const char*,const char*,xf86size_t);
-extern char* xf86strncpy(char*,const char*,xf86size_t);
-extern char* xf86strpbrk(const char*,const char*);
-extern char* xf86strrchr(const char*,int);
-extern xf86size_t xf86strspn(const char*,const char*);
-extern char* xf86strstr(const char*,const char*);
-extern double xf86strtod(const char*,char**);
-extern char* xf86strtok(char*,const char*);
-extern long xf86strtol(const char*,char**,int);
-extern unsigned long xf86strtoul(const char*,char**,int);
-extern double xf86tan(double);
-extern XF86FILE* xf86tmpfile(void);
-extern char* xf86tmpnam(char*);
-extern int xf86tolower(int);
-extern int xf86toupper(int);
-extern int xf86ungetc(int,XF86FILE*);
-extern int xf86vfprintf(XF86FILE*,const char*,va_list);
-extern int xf86vsprintf(char*,const char*,va_list);
-extern int xf86vsnprintf(char*,xf86size_t,const char*,va_list);
-
-extern int xf86open(const char*, int,...);
-extern int xf86close(int);
-extern long xf86lseek(int, long, int);
-extern int xf86ioctl(int, unsigned long, pointer);
-extern xf86ssize_t xf86read(int, void *, xf86size_t);
-extern xf86ssize_t xf86write(int, const void *, xf86size_t);
-extern void* xf86mmap(void*, xf86size_t, int, int, int, xf86size_t /* off_t */);
-extern int xf86munmap(void*, xf86size_t);
-extern int xf86stat(const char *, struct xf86stat *);
-extern int xf86fstat(int, struct xf86stat *);
-extern int xf86access(const char *, int);
-extern int xf86errno;
-extern int xf86GetErrno(void);
-
-extern double xf86HUGE_VAL;
-
-extern double xf86hypot(double,double);
-
-/* non-ANSI C functions */
-extern XF86DIR* xf86opendir(const char*);
-extern int xf86closedir(XF86DIR*);
-extern XF86DIRENT* xf86readdir(XF86DIR*);
-extern void xf86rewinddir(XF86DIR*);
-extern void xf86bcopy(const void*,void*,xf86size_t);
-extern int xf86ffs(int);
-extern char* xf86strdup(const char*);
-extern void xf86bzero(void*,unsigned int);
-extern int xf86execl(const char *, const char *, ...);
-extern long xf86fpossize(void);
-extern int xf86chmod(const char *, xf86mode_t);
-extern int xf86chown(const char *, xf86uid_t, xf86gid_t);
-extern xf86uid_t xf86geteuid(void);
-extern xf86gid_t xf86getegid(void);
-extern int xf86getpid(void);
-extern int xf86mknod(const char *, xf86mode_t, xf86dev_t);
-extern int xf86mkdir(const char *, xf86mode_t);
-unsigned int xf86sleep(unsigned int seconds);
-/* sysv IPC */
-extern int xf86shmget(xf86key_t key, int size, int xf86shmflg);
-extern char * xf86shmat(int id, char *addr, int xf86shmflg);
-extern int xf86shmdt(char *addr);
-extern int xf86shmctl(int id, int xf86cmd, pointer buf);
-
-extern int xf86setjmp(xf86jmp_buf env);
-extern int xf86setjmp0(xf86jmp_buf env);
-extern int xf86setjmp1(xf86jmp_buf env, int);
-extern int xf86setjmp1_arg2(void);
-extern int xf86setjmperror(xf86jmp_buf env);
-extern int xf86getjmptype(void);
-extern void xf86longjmp(xf86jmp_buf env, int val);
-#define xf86setjmp_macro(env) \
-	(xf86getjmptype() == 0 ? xf86setjmp0((env)) : \
-	(xf86getjmptype() == 1 ? xf86setjmp1((env), xf86setjmp1_arg2()) : \
-		xf86setjmperror((env))))
-
-/*
- * These things are always required by drivers (but not by libc_wrapper.c),
- * even for a static server because some OSs don't provide them.
- */
-
-extern int xf86getpagesize(void);
-extern void xf86usleep(unsigned long);
-extern void xf86getsecs(long *, long *);
-#ifndef DONT_DEFINE_WRAPPERS
-#undef getpagesize
-#define getpagesize()		xf86getpagesize()
-#undef usleep
-#define usleep(ul)		xf86usleep(ul)
-#undef getsecs
-#define getsecs(a, b)		xf86getsecs(a, b)
-#endif
-#endif /* _XF86_ANSIC_H */
diff --git a/hw/xfree86/os-support/xf86_libc.h b/hw/xfree86/os-support/xf86_libc.h
deleted file mode 100644
index 199fcd6..0000000
--- a/hw/xfree86/os-support/xf86_libc.h
+++ /dev/null
@@ -1,721 +0,0 @@
-/*
- * Copyright (c) 1997-2003 by The XFree86 Project, Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
- * THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR
- * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
- * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
- * OTHER DEALINGS IN THE SOFTWARE.
- *
- * Except as contained in this notice, the name of the copyright holder(s)
- * and author(s) shall not be used in advertising or otherwise to promote
- * the sale, use or other dealings in this Software without prior written
- * authorization from the copyright holder(s) and author(s).
- */
-
-/*
- * This file is an attempt to make developing code for the new loadable module
- * architecure simpler. It tries to use macros to hide all libc wrappers so
- * that all that is needed to "port" a module to this architecture is to
- * include this one header file
- *
- * Revision history:
- *
- *
- * 0.4	Apr 12 1997	add the ANSI defines
- * 0.3	Feb 24 1997	handle getenv
- * 0.2	Feb 24 1997	hide few FILE functions
- * 0.1	Feb 24 1997	hide the trivial functions mem* str*
- */
-
-#ifndef	XF86_LIBC_H
-#define XF86_LIBC_H 1
-
-#include <X11/Xfuncs.h>
-#include <stddef.h>
-
-/*
- * The first set of definitions are required both for modules and
- * libc_wrapper.c.
- */
-
-/*
- * First, the new data types
- *
- * note: if some pointer is declared "opaque" here, pass it between
- * xf86* functions only, and don't rely on it having a whatever internal
- * structure, even if some source file might reveal the existence of
- * such a structure.
- */
-typedef void XF86FILE;		/* opaque FILE replacement */
-extern  XF86FILE* xf86stdin;
-extern  XF86FILE* xf86stdout;
-extern  XF86FILE* xf86stderr;
-
-typedef void XF86fpos_t;	/* opaque fpos_t replacement */
-
-#define _XF86NAMELEN	263	/* enough for a larger filename */
-				/* (divisble by 8) */
-typedef void XF86DIR;		/* opaque DIR replacement */
-
-/* Note: the following is POSIX! POSIX only requires the d_name member. 
- * Normal Unix has often a number of other members, but don't rely on that
- */
-struct _xf86dirent {		/* types in struct dirent/direct: */
-	char	d_name[_XF86NAMELEN+1];	/* char [MAXNAMLEN]; might be smaller or unaligned */
-};
-typedef struct _xf86dirent XF86DIRENT;
-
-typedef unsigned long xf86size_t;
-typedef signed long xf86ssize_t;
-typedef unsigned long xf86dev_t;
-typedef unsigned int xf86mode_t;
-typedef unsigned int xf86uid_t;
-typedef unsigned int xf86gid_t;
-
-struct xf86stat {
-    xf86dev_t st_rdev;	/* This is incomplete, and makes assumptions */
-};
-
-/* sysv IPC */
-typedef int xf86key_t;
-
-/* setjmp/longjmp */
-#if defined(__ia64__)
-typedef int xf86jmp_buf[1024] __attribute__ ((aligned (16))); /* guarantees 128-bit alignment! */
-#else
-typedef int xf86jmp_buf[1024];
-#endif
-
-/* for setvbuf */
-#define XF86_IONBF    1
-#define XF86_IOFBF    2
-#define XF86_IOLBF    3
-
-/* for open (XXX not complete) */
-#define XF86_O_RDONLY	0x0000
-#define XF86_O_WRONLY	0x0001
-#define XF86_O_RDWR	0x0002
-#define XF86_O_CREAT	0x0200
-
-/* for mmap */
-#define XF86_PROT_EXEC		0x0001
-#define XF86_PROT_READ		0x0002
-#define XF86_PROT_WRITE		0x0004
-#define XF86_PROT_NONE		0x0008
-#define XF86_MAP_FIXED		0x0001
-#define XF86_MAP_SHARED		0x0002
-#define XF86_MAP_PRIVATE	0x0004
-#define XF86_MAP_32BIT	        0x0040
-#define XF86_MAP_FAILED		((void *)-1)
-
-/* for fseek */
-#define XF86_SEEK_SET	0
-#define XF86_SEEK_CUR	1
-#define XF86_SEEK_END	2
-
-/* for access */
-#define XF86_R_OK       0
-#define XF86_W_OK       1
-#define XF86_X_OK       2
-#define XF86_F_OK       3
-
-/* for chmod */
-#define XF86_S_ISUID   04000 /* set user ID on execution */
-#define XF86_S_ISGID   02000 /* set group ID on execution */
-#define XF86_S_ISVTX   01000 /* sticky bit */
-#define XF86_S_IRUSR   00400 /* read by owner */
-#define XF86_S_IWUSR   00200 /* write by owner */
-#define XF86_S_IXUSR   00100 /* execute/search by owner */
-#define XF86_S_IRGRP   00040 /* read by group */
-#define XF86_S_IWGRP   00020 /* write by group */
-#define XF86_S_IXGRP   00010 /* execute/search by group */
-#define XF86_S_IROTH   00004 /* read by others */
-#define XF86_S_IWOTH   00002 /* write by others */
-#define XF86_S_IXOTH   00001 /* execute/search by others */
-
-/* for mknod */
-#define XF86_S_IFREG 0010000
-#define XF86_S_IFCHR 0020000
-#define XF86_S_IFBLK 0040000
-#define XF86_S_IFIFO 0100000
-
-/*
- * errno values
- * They start at 1000 just so they don't match real errnos at all
- */
-#define xf86_UNKNOWN		1000
-#define xf86_EACCES		1001
-#define xf86_EAGAIN		1002
-#define xf86_EBADF		1003
-#define xf86_EEXIST		1004
-#define xf86_EFAULT		1005
-#define xf86_EINTR		1006
-#define xf86_EINVAL		1007
-#define xf86_EISDIR		1008
-#define xf86_ELOOP		1009
-#define xf86_EMFILE		1010
-#define xf86_ENAMETOOLONG	1011
-#define xf86_ENFILE		1012
-#define xf86_ENOENT		1013
-#define xf86_ENOMEM		1014
-#define xf86_ENOSPC		1015
-#define xf86_ENOTDIR		1016
-#define xf86_EPIPE		1017
-#define xf86_EROFS		1018
-#define xf86_ETXTBSY		1019
-#define xf86_ENOTTY		1020
-#define xf86_ENOSYS		1021
-#define xf86_EBUSY		1022
-#define xf86_ENODEV		1023
-#define xf86_EIO		1024
-
-#define xf86_ESRCH		1025
-#define xf86_ENXIO		1026
-#define xf86_E2BIG		1027
-#define xf86_ENOEXEC		1028
-#define xf86_ECHILD		1029
-#define xf86_ENOTBLK		1030
-#define xf86_EXDEV		1031
-#define xf86_EFBIG		1032
-#define xf86_ESPIPE		1033
-#define xf86_EMLINK		1034
-#define xf86_EDOM		1035
-#define xf86_ERANGE		1036
- 
-
-/* sysv IPV */
-/* xf86shmget() */
-#define XF86IPC_CREAT  01000
-#define XF86IPC_EXCL   02000
-#define XF86IPC_NOWAIT 04000
-#define XF86SHM_R           0400         
-#define XF86SHM_W           0200            
-#define XF86IPC_PRIVATE ((xf86key_t)0)
-/* xf86shmat() */
-#define XF86SHM_RDONLY      010000      /* attach read-only else read-write */
-#define XF86SHM_RND         020000      /* round attach address to SHMLBA */
-#define XF86SHM_REMAP       040000      /* take-over region on attach */
-/* xf86shmclt() */
-#define XF86IPC_RMID 0
-
-/*
- * the rest of this file should only be included for code that is supposed
- * to go into modules
- */
-
-#if !defined(DONT_DEFINE_WRAPPERS)
-
-#undef abort
-#define abort()			xf86abort()
-#undef abs
-#define abs(i)			xf86abs(i)
-#undef acos
-#define acos(d)			xf86acos(d)
-#undef asin
-#define asin(d)			xf86asin(d)
-#undef atan
-#define atan(d)			xf86atan(d)
-#undef atan2
-#define atan2(d1,d2)		xf86atan2(d1,d2)
-#undef atof
-#define atof(ccp)		xf86atof(ccp)
-#undef atoi
-#define atoi(ccp)		xf86atoi(ccp)
-#undef atol
-#define atol(ccp)		xf86atol(ccp)
-#undef bsearch
-#define bsearch(a,b,c,d,e)	xf86bsearch(a,b,c,d,e)
-#undef ceil
-#define ceil(d)			xf86ceil(d)
-#undef calloc
-#define calloc(I1,I2)		xf86calloc(I1,I2)
-#undef clearerr
-#define clearerr(FP)		xf86clearerr(FP)
-#undef cos
-#define cos(d)			xf86cos(d)
-#undef exit
-#define exit(i)			xf86exit(i)
-#undef exp
-#define exp(d)			xf86exp(d)
-#undef fabs
-#define fabs(d)			xf86fabs(d)
-#undef fclose
-#define fclose(FP)		xf86fclose(FP)
-#undef feof
-#define feof(FP)		xf86feof(FP)
-#undef ferror
-#define ferror(FP)		xf86ferror(FP)
-#undef fflush
-#define fflush(FP)		xf86fflush(FP)
-#undef fgetc
-#define fgetc(FP)		xf86fgetc(FP)
-#undef getc
-#define getc(FP)		xf86getc(FP)
-#undef fgetpos
-#define fgetpos(FP,fpp)		xf86fgetpos(FP,fpp)
-#undef fgets
-#define fgets(cp,i,FP)		xf86fgets(cp,i,FP)
-#undef finite
-#define finite(d)		xf86finite(d)
-#undef floor
-#define floor(d)		xf86floor(d)
-#undef fmod
-#define fmod(d1,d2)		xf86fmod(d1,d2)
-#undef fopen
-#define fopen(ccp1,ccp2)	xf86fopen(ccp1,ccp2)
-#undef printf
-#define printf			xf86printf
-#undef fprintf
-#define fprintf			xf86fprintf
-#undef fputc
-#define fputc(i,FP)		xf86fputc(i,FP)
-#undef fputs
-#define fputs(ccp,FP)		xf86fputs(ccp,FP)
-#undef fread
-#define fread(vp,I1,I2,FP)	xf86fread(vp,I1,I2,FP)
-#undef free
-#define free(vp)		xf86free(vp)
-#undef freopen
-#define freopen(ccp1,ccp2,FP)	xf86freopen(ccp1,ccp2,FP)
-#undef frexp
-#define frexp(x,exp)            xf86frexp(x,exp)
-#undef fscanf
-#define fscanf			xf86fscanf
-#undef fseek
-#define fseek(FP,l,i)		xf86fseek(FP,l,i)
-#undef fsetpos
-#define fsetpos(FP,cfpp)	xf86fsetpos(FP,cfpp)
-#undef ftell
-#define ftell(FP)		xf86ftell(FP)
-#undef fwrite
-#define fwrite(cvp,I1,I2,FP)	xf86fwrite(cvp,I1,I2,FP)
-#undef getenv
-#define getenv(ccp)		xf86getenv(ccp)
-#undef isalnum
-#define isalnum(i)		xf86isalnum(i)
-#undef isalpha
-#define isalpha(i)		xf86isalpha(i)
-#undef iscntrl
-#define iscntrl(i)		xf86iscntrl(i)
-#undef isdigit
-#define isdigit(i)		xf86isdigit(i)
-#undef isgraph
-#define isgraph(i)		xf86isgraph(i)
-#undef islower
-#define islower(i)		xf86islower(i)
-#undef isprint
-#define isprint(i)		xf86isprint(i)
-#undef ispunct
-#define ispunct(i)		xf86ispunct(i)
-#undef isspace
-#define isspace(i)		xf86isspace(i)
-#undef isupper
-#define isupper(i)		xf86isupper(i)
-#undef isxdigit
-#define isxdigit(i)		xf86isxdigit(i)
-#undef labs
-#define labs(l)			xf86labs(l)
-#undef ldexp
-#define ldexp(x, exp)           xf86ldexp(x, exp)
-#undef log
-#define log(d)			xf86log(d)
-#undef log10
-#define log10(d)		xf86log10(d)
-#undef malloc
-#define malloc(I)		xf86malloc(I)
-#undef memchr
-#define memchr(cvp,i,I)		xf86memchr(cvp,i,I)
-#undef memcmp
-#define memcmp(cvp1,cvp2,I)	xf86memcmp(cvp1,cvp2,I)
-#undef memcpy
-#define memcpy(vp,cvp,I)	xf86memcpy(vp,cvp,I)
-#undef memmove
-#define memmove(vp,cvp,I)	xf86memmove(vp,cvp,I)
-#undef memset
-#define memset(vp,int,I)	xf86memset(vp,int,I)
-#undef modf
-#define modf(d,dp)		xf86modf(d,dp)
-#undef perror
-#define perror(ccp)		xf86perror(ccp)
-#undef pow
-#define pow(d1,d2)		xf86pow(d1,d2)
-#undef random
-#define random()		xf86random()
-#undef realloc
-#define realloc(vp,I)		xf86realloc(vp,I)
-#undef remove
-#define remove(ccp)		xf86remove(ccp)
-#undef rename
-#define rename(ccp1,ccp2)	xf86rename(ccp1,ccp2)
-#undef rewind
-#define rewind(FP)		xf86rewind(FP)
-#undef setbuf
-#define setbuf(FP,cp)		xf86setbuf(FP,cp)
-#undef setvbuf
-#define setvbuf(FP,cp,i,I)	xf86setvbuf(FP,cp,i,I)
-#undef sin
-#define sin(d)			xf86sin(d)
-#undef snprintf
-#define snprintf		xf86snprintf
-#undef sprintf
-#define sprintf			xf86sprintf
-#undef sqrt
-#define sqrt(d)			xf86sqrt(d)
-#undef sscanf
-#define sscanf			xf86sscanf
-#undef strcat
-#define strcat(cp,ccp)		xf86strcat(cp,ccp)
-#undef strcmp
-#define strcmp(ccp1,ccp2)	xf86strcmp(ccp1,ccp2)
-#undef strcasecmp
-#define strcasecmp(ccp1,ccp2)	xf86strcasecmp(ccp1,ccp2)
-#undef strcpy
-#define strcpy(cp,ccp)		xf86strcpy(cp,ccp)
-#undef strcspn
-#define strcspn(ccp1,ccp2)	xf86strcspn(ccp1,ccp2)
-#undef strerror
-#define strerror(i)		xf86strerror(i)
-#undef strlcat
-#define strlcat(cp,ccp,I)	xf86strlcat(cp,ccp,I)
-#undef strlcpy
-#define strlcpy(cp,ccp,I)	xf86strlcpy(cp,ccp,I)
-#undef strlen
-#define strlen(ccp)		xf86strlen(ccp)
-#undef strncmp
-#define strncmp(ccp1,ccp2,I)	xf86strncmp(ccp1,ccp2,I)
-#undef strncasecmp
-#define strncasecmp(ccp1,ccp2,I) xf86strncasecmp(ccp1,ccp2,I)
-#undef strncpy
-#define strncpy(cp,ccp,I)	xf86strncpy(cp,ccp,I)
-#undef strpbrk
-#define strpbrk(ccp1,ccp2)	xf86strpbrk(ccp1,ccp2)
-#undef strchr
-#define strchr(ccp,i)		xf86strchr(ccp,i)
-#undef strrchr
-#define strrchr(ccp,i)		xf86strrchr(ccp,i)
-#undef strspn
-#define strspn(ccp1,ccp2)	xf86strspn(ccp1,ccp2)
-#undef strstr
-#define strstr(ccp1,ccp2)	xf86strstr(ccp1,ccp2)
-#undef srttod
-#define strtod(ccp,cpp)		xf86strtod(ccp,cpp)
-#undef strtok
-#define strtok(cp,ccp)		xf86strtok(cp,ccp)
-#undef strtol
-#define strtol(ccp,cpp,i)	xf86strtol(ccp,cpp,i)
-#undef strtoul
-#define strtoul(ccp,cpp,i)	xf86strtoul(ccp,cpp,i)
-#undef tan
-#define tan(d)			xf86tan(d)
-#undef tmpfile
-#define tmpfile()		xf86tmpfile()
-#undef tolower
-#define tolower(i)		xf86tolower(i)
-#undef toupper
-#define toupper(i)		xf86toupper(i)
-#undef ungetc
-#define ungetc(i,FP)		xf86ungetc(i,FP)
-#undef vfprintf
-#define vfprintf(p,f,a)		xf86vfprintf(p,f,a)
-#undef vsnprintf
-#define vsnprintf(s,n,f,a)	xf86vsnprintf(s,n,f,a)
-#undef vsprintf
-#define vsprintf(s,f,a)		xf86vsprintf(s,f,a)
-/* XXX Disable assert as if NDEBUG was defined */
-/* Some X headers defined this away too */
-#undef assert
-#define assert(a)		((void)0)
-#undef HUGE_VAL
-#define HUGE_VAL		xf86HUGE_VAL
-
-#undef hypot
-#define hypot(x,y)		xf86hypot(x,y)
-
-#undef qsort
-#define qsort(b, n, s, f)	xf86qsort(b, n, s, f)
-
-/* non-ANSI C functions */
-#undef opendir
-#define opendir(cp)		xf86opendir(cp)
-#undef closedir
-#define closedir(DP)		xf86closedir(DP)
-#undef readdir
-#define readdir(DP)		xf86readdir(DP)
-#undef rewinddir
-#define rewinddir(DP)		xf86rewinddir(DP)
-#undef bcopy
-#define bcopy(vp,cvp,I)		xf86memmove(cvp,vp,I)
-#undef ffs
-#define ffs(i)			xf86ffs(i)
-#undef strdup
-#define strdup(ccp)		xf86strdup(ccp)
-#undef bzero
-#define bzero(vp,ui)		xf86bzero(vp,ui)
-#undef execl
-#define execl	        	xf86execl
-#undef chmod
-#define chmod(a,b)              xf86chmod(a,b)
-#undef chown
-#define chown(a,b,c)            xf86chown(a,b,c)
-#undef geteuid
-#define geteuid                 xf86geteuid
-#undef getegid
-#define getegid                 xf86getegid
-#undef getpid
-#define getpid                  xf86getpid
-#undef mknod
-#define mknod(a,b,c)            xf86mknod(a,b,c)
-#undef sleep
-#define sleep(a)                xf86sleep(a)
-#undef mkdir
-#define mkdir(a,b)              xf86mkdir(a,b)
-#undef getpagesize
-#define getpagesize		xf86getpagesize
-#undef shmget
-#define shmget(a,b,c)		xf86shmget(a,b,c)
-#undef shmat
-#define shmat(a,b,c)		xf86shmat(a,b,c)
-#undef shmdt
-#define shmdt(a)		xf86shmdt(a)
-#undef shmctl
-#define shmctl(a,b,c)		xf86shmctl(a,b,c)
-
-#undef S_ISUID
-#define S_ISUID XF86_S_ISUID
-#undef S_ISGID
-#define S_ISGID XF86_S_ISGID
-#undef S_ISVTX
-#define S_ISVTX XF86_S_ISVTX
-#undef S_IRUSR
-#define S_IRUSR XF86_S_IRUSR
-#undef S_IWUSR
-#define S_IWUSR XF86_S_IWUSR
-#undef S_IXUSR
-#define S_IXUSR XF86_S_IXUSR
-#undef S_IRGRP
-#define S_IRGRP XF86_S_IRGRP
-#undef S_IWGRP
-#define S_IWGRP XF86_S_IWGRP
-#undef S_IXGRP
-#define S_IXGRP XF86_S_IXGRP
-#undef S_IROTH
-#define S_IROTH XF86_S_IROTH
-#undef S_IWOTH
-#define S_IWOTH XF86_S_IWOTH
-#undef S_IXOTH
-#define S_IXOTH XF86_S_IXOTH
-#undef S_IFREG
-#define S_IFREG XF86_S_IFREG
-#undef S_IFCHR
-#define S_IFCHR XF86_S_IFCHR
-#undef S_IFBLK
-#define S_IFBLK XF86_S_IFBLK
-#undef S_IFIFO
-#define S_IFIFO XF86_S_IFIFO
-
-/* some types */
-#undef FILE
-#define FILE			XF86FILE
-#undef fpos_t
-#define fpos_t			XF86fpos_t
-#undef DIR
-#define DIR			XF86DIR
-#undef DIRENT
-#define DIRENT			XF86DIRENT
-#undef size_t
-#define size_t			xf86size_t
-#undef ssize_t
-#define ssize_t			xf86ssize_t
-#undef dev_t
-#define dev_t                   xf86dev_t
-#undef mode_t
-#define mode_t                  xf86mode_t
-#undef uid_t
-#define uid_t                   xf86uid_t
-#undef gid_t
-#define gid_t                   xf86gid_t
-#undef stat_t
-#define stat_t			struct xf86stat
-
-#undef ulong
-#define ulong			unsigned long
-
-/*
- * There should be no need to #undef any of these.  If they are already
- * defined it is because some illegal header has been included.
- */
-
-/* some vars */
-#undef stdin
-#define	stdin			xf86stdin
-#undef stdout
-#define stdout			xf86stdout
-#undef stderr
-#define stderr			xf86stderr
-
-#undef SEEK_SET
-#define SEEK_SET		XF86_SEEK_SET
-#undef SEEK_CUR
-#define SEEK_CUR		XF86_SEEK_CUR
-#undef SEEK_END
-#define SEEK_END		XF86_SEEK_END
-
-/*
- * XXX Basic I/O functions BAD,BAD,BAD!
- */
-#define open			xf86open
-#define close(a)		xf86close(a)
-#define lseek(a,b,c)		xf86lseek(a,b,c)
-#if !defined(__DragonFly__)
-#define ioctl(a,b,c)		xf86ioctl(a,b,c)
-#endif
-#define read(a,b,c)		xf86read(a,b,c)
-#define write(a,b,c)		xf86write(a,b,c)
-#define mmap(a,b,c,d,e,f)	xf86mmap(a,b,c,d,e,f)
-#define munmap(a,b)		xf86munmap(a,b)
-#define stat(a,b)               xf86stat(a,b)
-#define fstat(a,b)              xf86fstat(a,b)
-#define access(a,b)             xf86access(a,b)
-#undef O_RDONLY
-#define O_RDONLY		XF86_O_RDONLY
-#undef O_WRONLY
-#define O_WRONLY		XF86_O_WRONLY
-#undef O_RDWR
-#define O_RDWR			XF86_O_RDWR
-#undef O_CREAT
-#define O_CREAT			XF86_O_CREAT
-#undef PROT_EXEC
-#define PROT_EXEC		XF86_PROT_EXEC
-#undef PROT_READ
-#define PROT_READ		XF86_PROT_READ
-#undef PROT_WRITE
-#define PROT_WRITE		XF86_PROT_WRITE
-#undef PROT_NONE
-#define PROT_NONE		XF86_PROT_NONE
-#undef MAP_FIXED
-#define MAP_FIXED		XF86_MAP_FIXED
-#undef MAP_SHARED
-#define MAP_SHARED		XF86_MAP_SHARED
-#undef MAP_PRIVATE
-#define MAP_PRIVATE		XF86_MAP_PRIVATE
-#undef MAP_FAILED
-#define MAP_FAILED		XF86_MAP_FAILED
-#undef R_OK
-#define R_OK                    XF86_R_OK
-#undef W_OK
-#define W_OK                    XF86_W_OK
-#undef X_OK
-#define X_OK                    XF86_X_OK
-#undef F_OK
-#define F_OK                    XF86_F_OK
-#undef errno
-#define errno			xf86errno
-#undef putchar
-#define putchar(i)		xf86fputc(i, xf86stdout)
-#undef puts
-#define puts(s)			xf86fputs(s, xf86stdout)
-
-#undef EACCES
-#define EACCES		xf86_EACCES
-#undef EAGAIN
-#define EAGAIN		xf86_EAGAIN
-#undef EBADF
-#define EBADF		xf86_EBADF
-#undef EEXIST
-#define EEXIST		xf86_EEXIST
-#undef EFAULT
-#define EFAULT		xf86_EFAULT
-#undef EINTR
-#define EINTR		xf86_EINTR
-#undef EINVAL
-#define EINVAL		xf86_EINVAL
-#undef EISDIR
-#define EISDIR		xf86_EISDIR
-#undef ELOOP
-#define ELOOP		xf86_ELOOP
-#undef EMFILE
-#define EMFILE		xf86_EMFILE
-#undef ENAMETOOLONG
-#define ENAMETOOLONG	xf86_ENAMETOOLONG
-#undef ENFILE
-#define ENFILE		xf86_ENFILE
-#undef ENOENT
-#define ENOENT		xf86_ENOENT
-#undef ENOMEM
-#define ENOMEM		xf86_ENOMEM
-#undef ENOSPC
-#define ENOSPC		xf86_ENOSPC
-#undef ENOTDIR
-#define ENOTDIR		xf86_ENOTDIR
-#undef EPIPE
-#define EPIPE		xf86_EPIPE
-#undef EROFS
-#define EROFS		xf86_EROFS
-#undef ETXTBSY
-#define ETXTBSY		xf86_ETXTBSY
-#undef ENOTTY
-#define ENOTTY		xf86_ENOTTY
-#undef ENOSYS
-#define ENOSYS		xf86_ENOSYS
-#undef EBUSY
-#define EBUSY		xf86_EBUSY
-#undef ENODEV
-#define ENODEV		xf86_ENODEV
-#undef EIO
-#define EIO		xf86_EIO
-
-/* IPC stuff */
-#undef SHM_RDONLY
-#define SHM_RDONLY XF86SHM_RDONLY
-#undef SHM_RND
-#define SHM_RND XF86SHM_RND
-#undef SHM_REMAP
-#define SHM_REMAP XF86SHM_REMAP
-#undef IPC_RMID
-#define IPC_RMID XF86IPC_RMID
-#undef IPC_CREAT
-#define IPC_CREAT XF86IPC_CREAT
-#undef IPC_EXCL
-#define IPC_EXCL XF86IPC_EXCL
-#undef PC_NOWAIT
-#define IPC_NOWAIT XF86IPC_NOWAIT
-#undef SHM_R
-#define SHM_R XF86SHM_R
-#undef SHM_W
-#define SHM_W XF86SHM_W
-#undef IPC_PRIVATE
-#define IPC_PRIVATE XF86IPC_PRIVATE
-
-/* Some ANSI macros */
-#undef FILENAME_MAX
-#define FILENAME_MAX		1024
-
-#if (defined(sun) && defined(__SVR4)) 
-# define _FILEDEFED /* Already have FILE defined, don't redefine it */
-#endif
-
-#endif /* !DONT_DEFINE_WRAPPERS */
-
-#if (!defined(DONT_DEFINE_WRAPPERS) || defined(DEFINE_SETJMP_WRAPPERS))
-#undef setjmp
-#define setjmp(a)               xf86setjmp_macro(a)
-#undef longjmp
-#define longjmp(a,b)            xf86longjmp(a,b) 
-#undef jmp_buf
-#define jmp_buf                 xf86jmp_buf
-#endif
-
-#endif /* XF86_LIBC_H */
diff --git a/hw/xfree86/utils/xorgcfg/Makefile.am b/hw/xfree86/utils/xorgcfg/Makefile.am
index e711303..31d1b3f 100644
--- a/hw/xfree86/utils/xorgcfg/Makefile.am
+++ b/hw/xfree86/utils/xorgcfg/Makefile.am
@@ -42,7 +42,6 @@ xorgcfg_LDADD = $(XORGCFG_DEP_LIBS) ../../parser/libxf86config.a $(LOADERLIB) \
 
 #if DoLoadableServer
 LDSRCS  = \
-	$(top_srcdir)/hw/xfree86/os-support/shared/libc_wrapper.c \
 	loader.c loadmod.c
 LOADERLIB = ../../loader/libloader.a
 #endif
diff --git a/os/Makefile.am b/os/Makefile.am
index 8ed12e4..16070f5 100644
--- a/os/Makefile.am
+++ b/os/Makefile.am
@@ -1,4 +1,4 @@
-noinst_LTLIBRARIES = libos.la libcwrapper.la
+noinst_LTLIBRARIES = libos.la
 
 AM_CFLAGS = $(DIX_CFLAGS)
 
@@ -41,13 +41,6 @@ if NEED_STRLCAT
 libos_la_SOURCES += $(STRLCAT_SRCS)
 endif
 
-libcwrapper_la_SOURCES = \
-	$(top_srcdir)/hw/xfree86/os-support/shared/libc_wrapper.c
-libcwrapper_la_CFLAGS = \
-	-DSELF_CONTAINED_WRAPPER \
-	-I$(top_srcdir)/hw/xfree86/os-support \
-	$(AM_CFLAGS)
-
 EXTRA_DIST = $(SECURERPC_SRCS) $(INTERNALMALLOC_SRCS) \
      $(XCSECURITY_SRCS) $(XDMCP_SRCS) $(STRLCAT_SRCS)
 
commit f4dc521b38560c8f93b614316a3a5511941a93a9
Author: Jeremy Huddleston <jeremy at tifa.local>
Date:   Sun Dec 2 18:21:40 2007 -0800

    Darwin: Added {/,/System/}Library/Fonts to DEFAULT_FONT_PATH
    (cherry picked from commit b0069b04dddaa2df6d4cdf86f96fd8a2a257e47e)

diff --git a/configure.ac b/configure.ac
index 5150c18..bea49a7 100644
--- a/configure.ac
+++ b/configure.ac
@@ -456,6 +456,9 @@ AC_ARG_WITH(fontdir,         AS_HELP_STRING([--with-fontdir=FONTDIR], [Path to t
                                 [ FONTDIR="$withval" ],
                                 [ FONTDIR="${libdir}/X11/fonts" ])
 DEFAULT_FONT_PATH="${FONTDIR}/misc/,${FONTDIR}/TTF/,${FONTDIR}/OTF,${FONTDIR}/Type1/,${FONTDIR}/100dpi/,${FONTDIR}/75dpi/"
+case $host_os in
+	darwin*)    DEFAULT_FONT_PATH="${DEFAULT_FONT_PATH},/Library/Fonts,/System/Library/Fonts" ;;
+esac
 AC_ARG_WITH(default-font-path, AS_HELP_STRING([--with-default-font-path=PATH], [Comma separated list of font dirs]),
 				[ FONTPATH="$withval" ],
 				[ FONTPATH="${DEFAULT_FONT_PATH}" ])
commit c26269d93621b8b96093d81a10f8900b957367d9
Author: Alan Hourihane <alanh at tungstengraphics.com>
Date:   Sun Dec 2 23:44:51 2007 +0000

    silence warning

diff --git a/dix/window.c b/dix/window.c
index f65fb84..27cdaca 100644
--- a/dix/window.c
+++ b/dix/window.c
@@ -127,6 +127,7 @@ Equipment Corporation.
 #include "appgroup.h"
 #endif
 #include "xace.h"
+#include "mi.h"
 
 /******
  * Window stuff for server 
commit 0fff01f5660fb3bb9284f97c45dc76154435d02b
Author: Adam Jackson <ajax at aspartame.nwnk.net>
Date:   Sun Dec 2 14:15:36 2007 -0500

    Fix swapped Xv dispatch under Xinerama.
    
    Same-endian dispatch was properly calling through the Xinerama wrapping,
    but other-endian dispatch wasn't.

diff --git a/Xext/xvdisp.c b/Xext/xvdisp.c
index 21d00aa..ee2e051 100644
--- a/Xext/xvdisp.c
+++ b/Xext/xvdisp.c
@@ -19,33 +19,8 @@ ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
 WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
 ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
 SOFTWARE.
-
 ******************************************************************/
 
-/*
-** File: 
-**
-**   xvdisp.c --- Xv server extension dispatch module.
-**
-** Author: 
-**
-**   David Carver (Digital Workstation Engineering/Project Athena)
-**
-** Revisions:
-**
-**   11.06.91 Carver
-**     - changed SetPortControl to SetPortAttribute
-**     - changed GetPortControl to GetPortAttribute
-**     - changed QueryBestSize
-**
-**   15.05.91 Carver
-**     - version 2.0 upgrade
-**
-**   24.01.91 Carver
-**     - version 1.4 upgrade
-**
-*/
-
 #ifdef HAVE_DIX_CONFIG_H
 #include <dix-config.h>
 #endif
@@ -78,81 +53,246 @@ SOFTWARE.
 #include "panoramiXsrv.h"
 
 unsigned long XvXRTPort;
-
-#ifdef MITSHM
-static int XineramaXvShmPutImage(ClientPtr);
-#endif
-static int XineramaXvPutImage(ClientPtr);
-static int XineramaXvPutVideo(ClientPtr);
-static int XineramaXvPutStill(ClientPtr);
-static int XineramaXvSetPortAttribute(ClientPtr);
-static int XineramaXvStopVideo(ClientPtr);
 #endif
 
-/* INTERNAL */
-
-static int ProcXvQueryExtension(ClientPtr);
-static int ProcXvQueryAdaptors(ClientPtr);
-static int ProcXvQueryEncodings(ClientPtr);
-static int ProcXvPutVideo(ClientPtr);
-static int ProcXvPutStill(ClientPtr);
-static int ProcXvGetVideo(ClientPtr);
-static int ProcXvGetStill(ClientPtr);
-static int ProcXvGrabPort(ClientPtr);
-static int ProcXvUngrabPort(ClientPtr);
-static int ProcXvSelectVideoNotify(ClientPtr);
-static int ProcXvSelectPortNotify(ClientPtr);
-static int ProcXvStopVideo(ClientPtr);
-static int ProcXvSetPortAttribute(ClientPtr);
-static int ProcXvGetPortAttribute(ClientPtr);
-static int ProcXvQueryBestSize(ClientPtr);
-static int ProcXvQueryPortAttributes(ClientPtr);
-static int ProcXvPutImage(ClientPtr);
-#ifdef MITSHM
-static int ProcXvShmPutImage(ClientPtr);
-#endif
-static int ProcXvQueryImageAttributes(ClientPtr);
-static int ProcXvListImageFormats(ClientPtr);
-
-static int SProcXvQueryExtension(ClientPtr);
-static int SProcXvQueryAdaptors(ClientPtr);
-static int SProcXvQueryEncodings(ClientPtr);
-static int SProcXvPutVideo(ClientPtr);
-static int SProcXvPutStill(ClientPtr);
-static int SProcXvGetVideo(ClientPtr);
-static int SProcXvGetStill(ClientPtr);
-static int SProcXvGrabPort(ClientPtr);
-static int SProcXvUngrabPort(ClientPtr);
-static int SProcXvSelectVideoNotify(ClientPtr);
-static int SProcXvSelectPortNotify(ClientPtr);
-static int SProcXvStopVideo(ClientPtr);
-static int SProcXvSetPortAttribute(ClientPtr);
-static int SProcXvGetPortAttribute(ClientPtr);
-static int SProcXvQueryBestSize(ClientPtr);
-static int SProcXvQueryPortAttributes(ClientPtr);
-static int SProcXvPutImage(ClientPtr);
-#ifdef MITSHM
-static int SProcXvShmPutImage(ClientPtr);
-#endif
-static int SProcXvQueryImageAttributes(ClientPtr);
-static int SProcXvListImageFormats(ClientPtr);
-
-static int SWriteQueryAdaptorsReply(ClientPtr, xvQueryAdaptorsReply *);
-static int SWriteQueryExtensionReply(ClientPtr, xvQueryExtensionReply *);
-static int SWriteQueryEncodingsReply(ClientPtr, xvQueryEncodingsReply *);
-static int SWriteAdaptorInfo(ClientPtr, xvAdaptorInfo *);
-static int SWriteEncodingInfo(ClientPtr, xvEncodingInfo *);
-static int SWriteFormat(ClientPtr, xvFormat *);
-static int SWriteAttributeInfo(ClientPtr, xvAttributeInfo *);
-static int SWriteGrabPortReply(ClientPtr, xvGrabPortReply *);
-static int SWriteGetPortAttributeReply(ClientPtr, xvGetPortAttributeReply *);
-static int SWriteQueryBestSizeReply(ClientPtr, xvQueryBestSizeReply *);
-static int SWriteQueryPortAttributesReply(
-		ClientPtr, xvQueryPortAttributesReply *);
-static int SWriteQueryImageAttributesReply(
-		ClientPtr, xvQueryImageAttributesReply*);
-static int SWriteListImageFormatsReply(ClientPtr, xvListImageFormatsReply*);
-static int SWriteImageFormatInfo(ClientPtr, xvImageFormatInfo*);
+static int
+SWriteQueryExtensionReply(
+   ClientPtr client,
+   xvQueryExtensionReply *rep
+){
+  char n;
+
+  swaps(&rep->sequenceNumber, n);
+  swapl(&rep->length, n);
+  swaps(&rep->version, n);
+  swaps(&rep->revision, n);
+  
+  (void)WriteToClient(client, sz_xvQueryExtensionReply, (char *)&rep);
+
+  return Success;
+}
+
+static int
+SWriteQueryAdaptorsReply(
+   ClientPtr client,
+   xvQueryAdaptorsReply *rep
+){
+  char n;
+
+  swaps(&rep->sequenceNumber, n);
+  swapl(&rep->length, n);
+  swaps(&rep->num_adaptors, n);
+  
+  (void)WriteToClient(client, sz_xvQueryAdaptorsReply, (char *)&rep);
+
+  return Success;
+}
+
+static int
+SWriteQueryEncodingsReply(
+   ClientPtr client,
+   xvQueryEncodingsReply *rep
+){
+  char n;
+
+  swaps(&rep->sequenceNumber, n);
+  swapl(&rep->length, n);
+  swaps(&rep->num_encodings, n);
+  
+  (void)WriteToClient(client, sz_xvQueryEncodingsReply, (char *)&rep);
+
+  return Success;
+}
+
+static int
+SWriteAdaptorInfo(
+   ClientPtr client,
+   xvAdaptorInfo *pAdaptor
+){
+  char n;
+
+  swapl(&pAdaptor->base_id, n);
+  swaps(&pAdaptor->name_size, n);
+  swaps(&pAdaptor->num_ports, n);
+  swaps(&pAdaptor->num_formats, n);
+
+  (void)WriteToClient(client, sz_xvAdaptorInfo, (char *)pAdaptor);
+
+  return Success;
+}
+
+static int
+SWriteEncodingInfo(
+   ClientPtr client,
+   xvEncodingInfo *pEncoding
+){
+  char n;
+  
+  swapl(&pEncoding->encoding, n);
+  swaps(&pEncoding->name_size, n);
+  swaps(&pEncoding->width, n);
+  swaps(&pEncoding->height, n);
+  swapl(&pEncoding->rate.numerator, n);
+  swapl(&pEncoding->rate.denominator, n);
+  (void)WriteToClient(client, sz_xvEncodingInfo, (char *)pEncoding);
+
+  return Success;
+}
+
+static int
+SWriteFormat(
+   ClientPtr client,
+   xvFormat *pFormat
+){
+  char n;
+
+  swapl(&pFormat->visual, n);
+  (void)WriteToClient(client, sz_xvFormat, (char *)pFormat);
+
+  return Success;
+}
+
+static int
+SWriteAttributeInfo(
+   ClientPtr client,
+   xvAttributeInfo *pAtt
+){
+  char n;
+
+  swapl(&pAtt->flags, n);
+  swapl(&pAtt->size, n);
+  swapl(&pAtt->min, n);
+  swapl(&pAtt->max, n);
+  (void)WriteToClient(client, sz_xvAttributeInfo, (char *)pAtt);
+
+  return Success;
+}
+
+static int
+SWriteImageFormatInfo(
+   ClientPtr client,
+   xvImageFormatInfo *pImage
+){
+  char n;
+
+  swapl(&pImage->id, n);
+  swapl(&pImage->red_mask, n);
+  swapl(&pImage->green_mask, n);
+  swapl(&pImage->blue_mask, n);
+  swapl(&pImage->y_sample_bits, n);
+  swapl(&pImage->u_sample_bits, n);
+  swapl(&pImage->v_sample_bits, n);
+  swapl(&pImage->horz_y_period, n);
+  swapl(&pImage->horz_u_period, n);
+  swapl(&pImage->horz_v_period, n);
+  swapl(&pImage->vert_y_period, n);
+  swapl(&pImage->vert_u_period, n);
+  swapl(&pImage->vert_v_period, n);
+
+  (void)WriteToClient(client, sz_xvImageFormatInfo, (char *)pImage);
+
+  return Success;
+}
+
+static int
+SWriteGrabPortReply(
+   ClientPtr client,
+   xvGrabPortReply *rep
+){
+  char n;
+
+  swaps(&rep->sequenceNumber, n);
+  swapl(&rep->length, n);
+
+  (void)WriteToClient(client, sz_xvGrabPortReply, (char *)&rep);
+
+  return Success;
+}
+
+static int
+SWriteGetPortAttributeReply(
+   ClientPtr client,
+   xvGetPortAttributeReply *rep
+){
+  char n;
+
+  swaps(&rep->sequenceNumber, n);
+  swapl(&rep->length, n);
+  swapl(&rep->value, n);
+
+  (void)WriteToClient(client, sz_xvGetPortAttributeReply, (char *)&rep);
+
+  return Success;
+}
+
+static int
+SWriteQueryBestSizeReply(
+   ClientPtr client,
+   xvQueryBestSizeReply *rep
+){
+  char n;
+
+  swaps(&rep->sequenceNumber, n);
+  swapl(&rep->length, n);
+  swaps(&rep->actual_width, n);
+  swaps(&rep->actual_height, n);
+
+  (void)WriteToClient(client, sz_xvQueryBestSizeReply, (char *)&rep);
+
+  return Success;
+}
+
+static int
+SWriteQueryPortAttributesReply(
+   ClientPtr client,
+   xvQueryPortAttributesReply *rep
+){
+  char n;
+
+  swaps(&rep->sequenceNumber, n);
+  swapl(&rep->length, n);
+  swapl(&rep->num_attributes, n);
+  swapl(&rep->text_size, n);
+
+  (void)WriteToClient(client, sz_xvQueryPortAttributesReply, (char *)&rep);
+
+  return Success;
+}
+
+static int
+SWriteQueryImageAttributesReply(
+   ClientPtr client,
+   xvQueryImageAttributesReply *rep
+){
+  char n;
+
+  swaps(&rep->sequenceNumber, n);
+  swapl(&rep->length, n);
+  swapl(&rep->num_planes, n);
+  swapl(&rep->data_size, n);
+  swaps(&rep->width, n);
+  swaps(&rep->height, n);
+
+  (void)WriteToClient(client, sz_xvQueryImageAttributesReply, (char *)&rep);
+
+  return Success;
+}
+
+static int
+SWriteListImageFormatsReply(
+   ClientPtr client,
+   xvListImageFormatsReply *rep
+){
+  char n;
+
+  swaps(&rep->sequenceNumber, n);
+  swapl(&rep->length, n);
+  swapl(&rep->num_formats, n);
+
+  (void)WriteToClient(client, sz_xvListImageFormatsReply, (char *)&rep);
+
+  return Success;
+}
 
 #define _WriteQueryAdaptorsReply(_c,_d) \
   if ((_c)->swapped) SWriteQueryAdaptorsReply(_c, _d); \
@@ -213,141 +353,6 @@ static int SWriteImageFormatInfo(ClientPtr, xvImageFormatInfo*);
 #define _AllocatePort(_i,_p) \
   ((_p)->id != _i) ? (* (_p)->pAdaptor->ddAllocatePort)(_i,_p,&_p) : Success
 
-/*
-** ProcXvDispatch
-**
-**
-**
-*/
-
-int
-ProcXvDispatch(ClientPtr client)
-{
-  REQUEST(xReq);
-
-  UpdateCurrentTime();
-
-  switch (stuff->data) 
-    {
-    case xv_QueryExtension: return(ProcXvQueryExtension(client));
-    case xv_QueryAdaptors: return(ProcXvQueryAdaptors(client));
-    case xv_QueryEncodings: return(ProcXvQueryEncodings(client));
-    case xv_PutVideo:
-#ifdef PANORAMIX
-        if(!noPanoramiXExtension)
-            return(XineramaXvPutVideo(client));
-        else
-#endif
-            return(ProcXvPutVideo(client));
-    case xv_PutStill:
-#ifdef PANORAMIX
-        if(!noPanoramiXExtension)
-            return(XineramaXvPutStill(client));
-        else
-#endif
-    	    return(ProcXvPutStill(client));
-    case xv_GetVideo: return(ProcXvGetVideo(client));
-    case xv_GetStill: return(ProcXvGetStill(client));
-    case xv_GrabPort: return(ProcXvGrabPort(client));
-    case xv_UngrabPort: return(ProcXvUngrabPort(client));
-    case xv_SelectVideoNotify: return(ProcXvSelectVideoNotify(client));
-    case xv_SelectPortNotify: return(ProcXvSelectPortNotify(client));
-    case xv_StopVideo: 
-#ifdef PANORAMIX
-        if(!noPanoramiXExtension)
-	    return(XineramaXvStopVideo(client));
-	else
-#endif
-	    return(ProcXvStopVideo(client));
-    case xv_SetPortAttribute: 
-#ifdef PANORAMIX
-        if(!noPanoramiXExtension)
-	    return(XineramaXvSetPortAttribute(client));
-	else
-#endif
-	    return(ProcXvSetPortAttribute(client));
-    case xv_GetPortAttribute: return(ProcXvGetPortAttribute(client));
-    case xv_QueryBestSize: return(ProcXvQueryBestSize(client));
-    case xv_QueryPortAttributes: return(ProcXvQueryPortAttributes(client));
-    case xv_PutImage:
-#ifdef PANORAMIX
-        if(!noPanoramiXExtension)
-	    return(XineramaXvPutImage(client));
-	else
-#endif
-	    return(ProcXvPutImage(client));
-#ifdef MITSHM
-    case xv_ShmPutImage: 
-#ifdef PANORAMIX
-        if(!noPanoramiXExtension)
-	    return(XineramaXvShmPutImage(client));
-	else
-#endif
-	    return(ProcXvShmPutImage(client));
-#endif
-    case xv_QueryImageAttributes: return(ProcXvQueryImageAttributes(client));
-    case xv_ListImageFormats: return(ProcXvListImageFormats(client));
-    default:
-      if (stuff->data < xvNumRequests)
-	{
-	  SendErrorToClient(client, XvReqCode, stuff->data, 0, 
-			    BadImplementation);
-	  return(BadImplementation);
-	}
-      else
-	{
-	  SendErrorToClient(client, XvReqCode, stuff->data, 0, BadRequest);
-	  return(BadRequest);
-	}
-    }
-}
-
-int
-SProcXvDispatch(ClientPtr client)
-{
-  REQUEST(xReq);
-
-  UpdateCurrentTime();
-
-  switch (stuff->data) 
-    {
-    case xv_QueryExtension: return(SProcXvQueryExtension(client));
-    case xv_QueryAdaptors: return(SProcXvQueryAdaptors(client));
-    case xv_QueryEncodings: return(SProcXvQueryEncodings(client));
-    case xv_PutVideo: return(SProcXvPutVideo(client));
-    case xv_PutStill: return(SProcXvPutStill(client));
-    case xv_GetVideo: return(SProcXvGetVideo(client));
-    case xv_GetStill: return(SProcXvGetStill(client));
-    case xv_GrabPort: return(SProcXvGrabPort(client));
-    case xv_UngrabPort: return(SProcXvUngrabPort(client));
-    case xv_SelectVideoNotify: return(SProcXvSelectVideoNotify(client));
-    case xv_SelectPortNotify: return(SProcXvSelectPortNotify(client));
-    case xv_StopVideo: return(SProcXvStopVideo(client));
-    case xv_SetPortAttribute: return(SProcXvSetPortAttribute(client));
-    case xv_GetPortAttribute: return(SProcXvGetPortAttribute(client));
-    case xv_QueryBestSize: return(SProcXvQueryBestSize(client));
-    case xv_QueryPortAttributes: return(SProcXvQueryPortAttributes(client));
-    case xv_PutImage: return(SProcXvPutImage(client));
-#ifdef MITSHM
-    case xv_ShmPutImage: return(SProcXvShmPutImage(client));
-#endif
-    case xv_QueryImageAttributes: return(SProcXvQueryImageAttributes(client));
-    case xv_ListImageFormats: return(SProcXvListImageFormats(client));
-    default:
-      if (stuff->data < xvNumRequests)
-	{
-	  SendErrorToClient(client, XvReqCode, stuff->data, 0, 
-			    BadImplementation);
-	  return(BadImplementation);
-	}
-      else
-	{
-	  SendErrorToClient(client, XvReqCode, stuff->data, 0, BadRequest);
-	  return(BadRequest);
-	}
-    }
-}
-
 static int
 ProcXvQueryExtension(ClientPtr client)
 {
@@ -364,7 +369,6 @@ ProcXvQueryExtension(ClientPtr client)
   _WriteQueryExtensionReply(client, &rep);
 
   return Success;
-
 }
 
 static int
@@ -457,7 +461,6 @@ ProcXvQueryAdaptors(ClientPtr client)
     }
 
   return (client->noClientException);
-
 }
 
 static int
@@ -521,7 +524,6 @@ ProcXvQueryEncodings(ClientPtr client)
     }
 
   return (client->noClientException);
-
 }
 
 static int
@@ -567,7 +569,6 @@ ProcXvPutVideo(ClientPtr client)
 			    stuff->vid_w, stuff->vid_h,
 			    stuff->drw_x, stuff->drw_y,
 			    stuff->drw_w, stuff->drw_h);
-
 }
 
 static int
@@ -613,10 +614,8 @@ ProcXvPutStill(ClientPtr client)
 			    stuff->vid_w, stuff->vid_h,
 			    stuff->drw_x, stuff->drw_y,
 			    stuff->drw_w, stuff->drw_h);
-
 }
 
-
 static int
 ProcXvGetVideo(ClientPtr client)
 {
@@ -660,10 +659,8 @@ ProcXvGetVideo(ClientPtr client)
 			    stuff->vid_w, stuff->vid_h,
 			    stuff->drw_x, stuff->drw_y,
 			    stuff->drw_w, stuff->drw_h);
-
 }
 
-
 static int
 ProcXvGetStill(ClientPtr client)
 {
@@ -707,7 +704,6 @@ ProcXvGetStill(ClientPtr client)
 			    stuff->vid_w, stuff->vid_h,
 			    stuff->drw_x, stuff->drw_y,
 			    stuff->drw_w, stuff->drw_h);
-
 }
 
 static int
@@ -723,7 +719,6 @@ ProcXvSelectVideoNotify(ClientPtr client)
     return rc;
 
   return XVCALL(diSelectVideoNotify)(client, pDraw, stuff->onoff);
-
 }
 
 static int
@@ -747,7 +742,6 @@ ProcXvSelectPortNotify(ClientPtr client)
     }
 
   return XVCALL(diSelectPortNotify)(client, pPort, stuff->onoff);
-
 }
 
 static int
@@ -786,7 +780,6 @@ ProcXvGrabPort(ClientPtr client)
   _WriteGrabPortReply(client, &rep);
 
   return Success;
-
 }
 
 static int
@@ -810,10 +803,8 @@ ProcXvUngrabPort(ClientPtr client)
     }
 
   return XVCALL(diUngrabPort)(client, pPort, stuff->time);
-
 }
 
-
 static int
 ProcXvStopVideo(ClientPtr client)
 {
@@ -840,7 +831,6 @@ ProcXvStopVideo(ClientPtr client)
     return rc;
 
   return XVCALL(diStopVideo)(client, pPort, pDraw);
-
 }
 
 static int
@@ -1021,8 +1011,6 @@ ProcXvQueryPortAttributes(ClientPtr client)
   return Success;
 }
 
-
-
 static int 
 ProcXvPutImage(ClientPtr client)
 {
@@ -1200,6 +1188,13 @@ ProcXvShmPutImage(ClientPtr client)
 
   return status;
 }
+#else /* !MITSHM */
+static int
+ProcXvShmPutImage(ClientPtr client)
+{
+    SendErrorToClient(client, XvReqCode, xv_ShmPutImage, 0, BadImplementation);
+    return(BadImplementation);
+}
 #endif
 
 #ifdef XvMCExtension
@@ -1327,65 +1322,101 @@ ProcXvListImageFormats(ClientPtr client)
   return Success;
 }
 
+static int (*XvProcVector[xvNumRequests])(ClientPtr) = {
+    ProcXvQueryExtension,
+    ProcXvQueryAdaptors,
+    ProcXvQueryEncodings,
+    ProcXvGrabPort,
+    ProcXvUngrabPort,
+    ProcXvPutVideo,
+    ProcXvPutStill,
+    ProcXvGetVideo,
+    ProcXvGetStill,
+    ProcXvStopVideo,
+    ProcXvSelectVideoNotify,
+    ProcXvSelectPortNotify,
+    ProcXvQueryBestSize,
+    ProcXvSetPortAttribute,
+    ProcXvGetPortAttribute,
+    ProcXvQueryPortAttributes,
+    ProcXvListImageFormats,
+    ProcXvQueryImageAttributes,
+    ProcXvPutImage,
+    ProcXvShmPutImage,
+};
 
+int
+ProcXvDispatch(ClientPtr client)
+{
+  REQUEST(xReq);
+
+  UpdateCurrentTime();
+
+  if (stuff->data > xvNumRequests) {
+    SendErrorToClient(client, XvReqCode, stuff->data, 0, BadRequest);
+    return(BadRequest);
+  }
+
+  return XvProcVector[stuff->data](client);
+}
 
 /* Swapped Procs */
 
 static int
 SProcXvQueryExtension(ClientPtr client)
 {
-  register char n;
+  char n;
   REQUEST(xvQueryExtensionReq);
   swaps(&stuff->length, n);
-  return ProcXvQueryExtension(client);
+  return XvProcVector[xv_QueryExtension](client);
 }
 
 static int
 SProcXvQueryAdaptors(ClientPtr client)
 {
-  register char n;
+  char n;
   REQUEST(xvQueryAdaptorsReq);
   swaps(&stuff->length, n);
   swapl(&stuff->window, n);
-  return ProcXvQueryAdaptors(client);
+  return XvProcVector[xv_QueryAdaptors](client);
 }
 
 static int
 SProcXvQueryEncodings(ClientPtr client)
 {
-  register char n;
+  char n;
   REQUEST(xvQueryEncodingsReq);
   swaps(&stuff->length, n);
   swapl(&stuff->port, n);
-  return ProcXvQueryEncodings(client);
+  return XvProcVector[xv_QueryEncodings](client);
 }
 
 static int
 SProcXvGrabPort(ClientPtr client)
 {
-  register char n;
+  char n;
   REQUEST(xvGrabPortReq);
   swaps(&stuff->length, n);
   swapl(&stuff->port, n);
   swapl(&stuff->time, n);
-  return ProcXvGrabPort(client);
+  return XvProcVector[xv_GrabPort](client);
 }
 
 static int
 SProcXvUngrabPort(ClientPtr client)
 {
-  register char n;
+  char n;
   REQUEST(xvUngrabPortReq);
   swaps(&stuff->length, n);
   swapl(&stuff->port, n);
   swapl(&stuff->time, n);
-  return ProcXvUngrabPort(client);
+  return XvProcVector[xv_UngrabPort](client);
 }
 
 static int
 SProcXvPutVideo(ClientPtr client)
 {
-  register char n;
+  char n;
   REQUEST(xvPutVideoReq);
   swaps(&stuff->length, n);
   swapl(&stuff->port, n);
@@ -1399,13 +1430,13 @@ SProcXvPutVideo(ClientPtr client)
   swaps(&stuff->drw_y, n);
   swaps(&stuff->drw_w, n);
   swaps(&stuff->drw_h, n);
-  return ProcXvPutVideo(client);
+  return XvProcVector[xv_PutVideo](client);
 }
 
 static int
 SProcXvPutStill(ClientPtr client)
 {
-  register char n;
+  char n;
   REQUEST(xvPutStillReq);
   swaps(&stuff->length, n);
   swapl(&stuff->port, n);
@@ -1419,13 +1450,13 @@ SProcXvPutStill(ClientPtr client)
   swaps(&stuff->drw_y, n);
   swaps(&stuff->drw_w, n);
   swaps(&stuff->drw_h, n);
-  return ProcXvPutStill(client);
+  return XvProcVector[xv_PutStill](client);
 }
 
 static int
 SProcXvGetVideo(ClientPtr client)
 {
-  register char n;
+  char n;
   REQUEST(xvGetVideoReq);
   swaps(&stuff->length, n);
   swapl(&stuff->port, n);
@@ -1439,13 +1470,13 @@ SProcXvGetVideo(ClientPtr client)
   swaps(&stuff->drw_y, n);
   swaps(&stuff->drw_w, n);
   swaps(&stuff->drw_h, n);
-  return ProcXvGetVideo(client);
+  return XvProcVector[xv_GetVideo](client);
 }
 
 static int
 SProcXvGetStill(ClientPtr client)
 {
-  register char n;
+  char n;
   REQUEST(xvGetStillReq);
   swaps(&stuff->length, n);
   swapl(&stuff->port, n);
@@ -1459,13 +1490,13 @@ SProcXvGetStill(ClientPtr client)
   swaps(&stuff->drw_y, n);
   swaps(&stuff->drw_w, n);
   swaps(&stuff->drw_h, n);
-  return ProcXvGetStill(client);
+  return XvProcVector[xv_GetStill](client);
 }
 
 static int
 SProcXvPutImage(ClientPtr client)
 {
-  register char n;
+  char n;
   REQUEST(xvPutImageReq);
   swaps(&stuff->length, n);
   swapl(&stuff->port, n);
@@ -1482,14 +1513,14 @@ SProcXvPutImage(ClientPtr client)
   swaps(&stuff->drw_h, n);
   swaps(&stuff->width, n);
   swaps(&stuff->height, n);
-  return ProcXvPutImage(client);
+  return XvProcVector[xv_PutImage](client);
 }
 
 #ifdef MITSHM
 static int
 SProcXvShmPutImage(ClientPtr client)
 {
-  register char n;
+  char n;
   REQUEST(xvShmPutImageReq);
   swaps(&stuff->length, n);
   swapl(&stuff->port, n);
@@ -1508,68 +1539,69 @@ SProcXvShmPutImage(ClientPtr client)
   swaps(&stuff->offset, n);
   swaps(&stuff->width, n);
   swaps(&stuff->height, n);
-  return ProcXvShmPutImage(client);
+  return XvProcVector[xv_ShmPutImage](client);
 }
+#else /* MITSHM */
+#define SProcXvShmPutImage ProcXvShmPutImage
 #endif
 
-
 static int
 SProcXvSelectVideoNotify(ClientPtr client)
 {
-  register char n;
+  char n;
   REQUEST(xvSelectVideoNotifyReq);
   swaps(&stuff->length, n);
   swapl(&stuff->drawable, n);
-  return ProcXvSelectVideoNotify(client);
+  return XvProcVector[xv_SelectVideoNotify](client);
 }
 
 static int
 SProcXvSelectPortNotify(ClientPtr client)
 {
-  register char n;
+  char n;
   REQUEST(xvSelectPortNotifyReq);
   swaps(&stuff->length, n);
   swapl(&stuff->port, n);
-  return ProcXvSelectPortNotify(client);
+  return XvProcVector[xv_SelectPortNotify](client);
 }
 
 static int
 SProcXvStopVideo(ClientPtr client)
 {
-  register char n;
+  char n;
   REQUEST(xvStopVideoReq);
   swaps(&stuff->length, n);
   swapl(&stuff->port, n);
   swapl(&stuff->drawable, n);
-  return ProcXvStopVideo(client);
+  return XvProcVector[xv_StopVideo](client);
 }
 
 static int
 SProcXvSetPortAttribute(ClientPtr client)
 {
-  register char n;
+  char n;
   REQUEST(xvSetPortAttributeReq);
   swaps(&stuff->length, n);
   swapl(&stuff->port, n);
   swapl(&stuff->attribute, n);
-  return ProcXvSetPortAttribute(client);
+  return XvProcVector[xv_SetPortAttribute](client);
 }
 
 static int
 SProcXvGetPortAttribute(ClientPtr client)
 {
-  register char n;
+  char n;
   REQUEST(xvGetPortAttributeReq);
   swaps(&stuff->length, n);
   swapl(&stuff->port, n);
   swapl(&stuff->attribute, n);
-  return ProcXvGetPortAttribute(client);
+  return XvProcVector[xv_GetPortAttribute](client);
 }
 
 static int
 SProcXvQueryBestSize(ClientPtr client)
 {
-  register char n;
+  char n;
   REQUEST(xvQueryBestSizeReq);
   swaps(&stuff->length, n);
   swapl(&stuff->port, n);
@@ -1577,290 +1609,80 @@ SProcXvQueryBestSize(ClientPtr client)
   swaps(&stuff->vid_h, n);
   swaps(&stuff->drw_w, n);
   swaps(&stuff->drw_h, n);
-  return ProcXvQueryBestSize(client);
+  return XvProcVector[xv_QueryBestSize](client);
 }
 
 static int
 SProcXvQueryPortAttributes(ClientPtr client)
 {
-  register char n;
+  char n;
   REQUEST(xvQueryPortAttributesReq);
   swaps(&stuff->length, n);
   swapl(&stuff->port, n);
-  return ProcXvQueryPortAttributes(client);
+  return XvProcVector[xv_QueryPortAttributes](client);
 }
 
 static int
 SProcXvQueryImageAttributes(ClientPtr client)
 {
-  register char n;
+  char n;
   REQUEST(xvQueryImageAttributesReq);
   swaps(&stuff->length, n);
   swapl(&stuff->id, n);
   swaps(&stuff->width, n);
   swaps(&stuff->width, n);
-  return ProcXvQueryImageAttributes(client);
+  return XvProcVector[xv_QueryImageAttributes](client);
 }
 
 static int
 SProcXvListImageFormats(ClientPtr client)
 {
-  register char n;
+  char n;
   REQUEST(xvListImageFormatsReq);
   swaps(&stuff->length, n);
   swapl(&stuff->port, n);
-  return ProcXvListImageFormats(client);
-}
-
-
-static int
-SWriteQueryExtensionReply(
-   ClientPtr client,
-   xvQueryExtensionReply *rep
-){
-  register char n;
-
-  swaps(&rep->sequenceNumber, n);
-  swapl(&rep->length, n);
-  swaps(&rep->version, n);
-  swaps(&rep->revision, n);
-  
-  (void)WriteToClient(client, sz_xvQueryExtensionReply, (char *)&rep);
-
-  return Success;
-}
-
-static int
-SWriteQueryAdaptorsReply(
-   ClientPtr client,
-   xvQueryAdaptorsReply *rep
-){
-  register char n;
-
-  swaps(&rep->sequenceNumber, n);
-  swapl(&rep->length, n);
-  swaps(&rep->num_adaptors, n);
-  
-  (void)WriteToClient(client, sz_xvQueryAdaptorsReply, (char *)&rep);
-
-  return Success;
-}
-
-static int
-SWriteQueryEncodingsReply(
-   ClientPtr client,
-   xvQueryEncodingsReply *rep
-){
-  register char n;
-
-  swaps(&rep->sequenceNumber, n);
-  swapl(&rep->length, n);
-  swaps(&rep->num_encodings, n);
-  
-  (void)WriteToClient(client, sz_xvQueryEncodingsReply, (char *)&rep);
-
-  return Success;
-}
-
-static int
-SWriteAdaptorInfo(
-   ClientPtr client,
-   xvAdaptorInfo *pAdaptor
-){
-  register char n;
-
-  swapl(&pAdaptor->base_id, n);
-  swaps(&pAdaptor->name_size, n);
-  swaps(&pAdaptor->num_ports, n);
-  swaps(&pAdaptor->num_formats, n);
-
-  (void)WriteToClient(client, sz_xvAdaptorInfo, (char *)pAdaptor);
-
-  return Success;
-}
-
-static int
-SWriteEncodingInfo(
-   ClientPtr client,
-   xvEncodingInfo *pEncoding
-){
-  register char n;
-  
-  swapl(&pEncoding->encoding, n);
-  swaps(&pEncoding->name_size, n);
-  swaps(&pEncoding->width, n);
-  swaps(&pEncoding->height, n);
-  swapl(&pEncoding->rate.numerator, n);
-  swapl(&pEncoding->rate.denominator, n);
-  (void)WriteToClient(client, sz_xvEncodingInfo, (char *)pEncoding);
-
-  return Success;
-}
-
-static int
-SWriteFormat(
-   ClientPtr client,
-   xvFormat *pFormat
-){
-  register char n;
-
-  swapl(&pFormat->visual, n);
-  (void)WriteToClient(client, sz_xvFormat, (char *)pFormat);
-
-  return Success;
-}
-
-static int
-SWriteAttributeInfo(
-   ClientPtr client,
-   xvAttributeInfo *pAtt
-){
-  register char n;
-
-  swapl(&pAtt->flags, n);
-  swapl(&pAtt->size, n);
-  swapl(&pAtt->min, n);
-  swapl(&pAtt->max, n);
-  (void)WriteToClient(client, sz_xvAttributeInfo, (char *)pAtt);
-
-  return Success;
-}
-
-static int
-SWriteImageFormatInfo(
-   ClientPtr client,
-   xvImageFormatInfo *pImage
-){
-  register char n;
-
-  swapl(&pImage->id, n);
-  swapl(&pImage->red_mask, n);
-  swapl(&pImage->green_mask, n);
-  swapl(&pImage->blue_mask, n);
-  swapl(&pImage->y_sample_bits, n);
-  swapl(&pImage->u_sample_bits, n);
-  swapl(&pImage->v_sample_bits, n);
-  swapl(&pImage->horz_y_period, n);
-  swapl(&pImage->horz_u_period, n);
-  swapl(&pImage->horz_v_period, n);
-  swapl(&pImage->vert_y_period, n);
-  swapl(&pImage->vert_u_period, n);
-  swapl(&pImage->vert_v_period, n);
-
-  (void)WriteToClient(client, sz_xvImageFormatInfo, (char *)pImage);
-
-  return Success;
-}
-
-
-
-static int
-SWriteGrabPortReply(
-   ClientPtr client,
-   xvGrabPortReply *rep
-){
-  register char n;
-
-  swaps(&rep->sequenceNumber, n);
-  swapl(&rep->length, n);
-
-  (void)WriteToClient(client, sz_xvGrabPortReply, (char *)&rep);
-
-  return Success;
-}
-
-static int
-SWriteGetPortAttributeReply(
-   ClientPtr client,
-   xvGetPortAttributeReply *rep
-){
-  register char n;
-
-  swaps(&rep->sequenceNumber, n);
-  swapl(&rep->length, n);
-  swapl(&rep->value, n);
-
-  (void)WriteToClient(client, sz_xvGetPortAttributeReply, (char *)&rep);
-
-  return Success;
-}
-
-static int
-SWriteQueryBestSizeReply(
-   ClientPtr client,
-   xvQueryBestSizeReply *rep
-){
-  register char n;
-
-  swaps(&rep->sequenceNumber, n);
-  swapl(&rep->length, n);
-  swaps(&rep->actual_width, n);
-  swaps(&rep->actual_height, n);
-
-  (void)WriteToClient(client, sz_xvQueryBestSizeReply, (char *)&rep);
-
-  return Success;
+  return XvProcVector[xv_ListImageFormats](client);
 }
 
-static int
-SWriteQueryPortAttributesReply(
-   ClientPtr client,
-   xvQueryPortAttributesReply *rep
-){
-  register char n;
-
-  swaps(&rep->sequenceNumber, n);
-  swapl(&rep->length, n);
-  swapl(&rep->num_attributes, n);
-  swapl(&rep->text_size, n);
+static int (*SXvProcVector[xvNumRequests])(ClientPtr) = {
+    SProcXvQueryExtension,
+    SProcXvQueryAdaptors,
+    SProcXvQueryEncodings,
+    SProcXvGrabPort,
+    SProcXvUngrabPort,
+    SProcXvPutVideo,
+    SProcXvPutStill,
+    SProcXvGetVideo,
+    SProcXvGetStill,
+    SProcXvStopVideo,
+    SProcXvSelectVideoNotify,
+    SProcXvSelectPortNotify,
+    SProcXvQueryBestSize,
+    SProcXvSetPortAttribute,
+    SProcXvGetPortAttribute,
+    SProcXvQueryPortAttributes,
+    SProcXvListImageFormats,
+    SProcXvQueryImageAttributes,
+    SProcXvPutImage,
+    SProcXvShmPutImage,
+};
 
-  (void)WriteToClient(client, sz_xvQueryPortAttributesReply, (char *)&rep);
-
-  return Success;
-}
-
-static int
-SWriteQueryImageAttributesReply(
-   ClientPtr client,
-   xvQueryImageAttributesReply *rep
-){
-  register char n;
-
-  swaps(&rep->sequenceNumber, n);
-  swapl(&rep->length, n);
-  swapl(&rep->num_planes, n);
-  swapl(&rep->data_size, n);
-  swaps(&rep->width, n);
-  swaps(&rep->height, n);
-
-  (void)WriteToClient(client, sz_xvQueryImageAttributesReply, (char *)&rep);
-
-  return Success;
-}
-
-
-static int
-SWriteListImageFormatsReply(
-   ClientPtr client,
-   xvListImageFormatsReply *rep
-){
-  register char n;
+int
+SProcXvDispatch(ClientPtr client)
+{
+  REQUEST(xReq);
 
-  swaps(&rep->sequenceNumber, n);
-  swapl(&rep->length, n);
-  swapl(&rep->num_formats, n);
+  UpdateCurrentTime();
 
-  (void)WriteToClient(client, sz_xvListImageFormatsReply, (char *)&rep);
+  if (stuff->data > xvNumRequests) {
+    SendErrorToClient(client, XvReqCode, stuff->data, 0, BadRequest);
+    return(BadRequest);
+  }
 
-  return Success;
+  return SXvProcVector[stuff->data](client);
 }
 
-
 #ifdef PANORAMIX
-
-
-
-
 static int
 XineramaXvStopVideo(ClientPtr client)
 {
@@ -1910,7 +1732,6 @@ XineramaXvSetPortAttribute(ClientPtr client)
     return result;
 }
 
-
 #ifdef MITSHM
 static int 
 XineramaXvShmPutImage(ClientPtr client)
@@ -1958,6 +1779,8 @@ XineramaXvShmPutImage(ClientPtr client)
     }
     return result;
 }
+#else
+#define XineramaXvShmPutImage ProcXvShmPutImage
 #endif
 
 static int 
@@ -2095,7 +1918,6 @@ XineramaXvPutStill(ClientPtr client)
     return result;
 }
 
-
 void XineramifyXv(void)
 {
    ScreenPtr pScreen, screen0 = screenInfo.screens[0];
@@ -2201,6 +2023,26 @@ void XineramifyXv(void)
 	 } 
       }
    }
+
+   /* munge the dispatch vector */
+   XvProcVector[xv_PutVideo]		= XineramaXvPutVideo;
+   XvProcVector[xv_PutStill]		= XineramaXvPutStill;
+   XvProcVector[xv_StopVideo]		= XineramaXvStopVideo;
+   XvProcVector[xv_SetPortAttribute]	= XineramaXvSetPortAttribute;
+   XvProcVector[xv_PutImage]		= XineramaXvPutImage;
+   XvProcVector[xv_ShmPutImage]		= XineramaXvShmPutImage;
 }
+#endif /* PANORAMIX */
 
+void
+XvResetProcVector(void)
+{
+#ifdef PANORAMIX
+   XvProcVector[xv_PutVideo]		= ProcXvPutVideo;
+   XvProcVector[xv_PutStill]		= ProcXvPutStill;
+   XvProcVector[xv_StopVideo]		= ProcXvStopVideo;
+   XvProcVector[xv_SetPortAttribute]	= ProcXvSetPortAttribute;
+   XvProcVector[xv_PutImage]		= ProcXvPutImage;
+   XvProcVector[xv_ShmPutImage]		= ProcXvShmPutImage;
 #endif
+}
diff --git a/Xext/xvdisp.h b/Xext/xvdisp.h
index 75cacdd..298d395 100644
--- a/Xext/xvdisp.h
+++ b/Xext/xvdisp.h
@@ -1 +1,2 @@
 extern void XineramifyXv(void);
+extern void XvResetProcVector(void);
diff --git a/Xext/xvmain.c b/Xext/xvmain.c
index ddf3d1d..1b80bc8 100644
--- a/Xext/xvmain.c
+++ b/Xext/xvmain.c
@@ -102,8 +102,8 @@ SOFTWARE.
 #ifdef PANORAMIX
 #include "panoramiX.h"
 #include "panoramiXsrv.h"
-#include "xvdisp.h"
 #endif
+#include "xvdisp.h"
 
 int  XvScreenIndex = -1;
 unsigned long XvExtensionGeneration = 0;
@@ -326,12 +326,12 @@ XvCloseScreen(
   pScreen->devPrivates[XvScreenIndex].ptr = (pointer)NULL;
 
   return (*pScreen->CloseScreen)(ii, pScreen);
-
 }
 
 static void
 XvResetProc(ExtensionEntry* extEntry)
 {
+    XvResetProcVector();
 }
 
 _X_EXPORT int
commit fa47910045c3700d8d668b5e214e5ffc1e8dc3e7
Author: Adam Jackson <ajax at redhat.com>
Date:   Sun Dec 2 12:39:05 2007 -0500

    Clean up many #if 0.

diff --git a/Xext/EVI.c b/Xext/EVI.c
index 8fe3481..4bd050c 100644
--- a/Xext/EVI.c
+++ b/Xext/EVI.c
@@ -35,9 +35,6 @@ THE USE OR PERFORMANCE OF THIS SOFTWARE.
 #include "EVIstruct.h"
 #include "modinit.h"
 
-#if 0
-static unsigned char XEVIReqCode = 0;
-#endif
 static EviPrivPtr eviPriv;
 
 static int
@@ -182,19 +179,9 @@ EVIResetProc(ExtensionEntry *extEntry)
 void
 EVIExtensionInit(INITARGS)
 {
-#if 0
-    ExtensionEntry *extEntry;
-
-    if ((extEntry = AddExtension(EVINAME, 0, 0,
-				ProcEVIDispatch,
-				SProcEVIDispatch,
-				EVIResetProc, StandardMinorOpcode))) {
-	XEVIReqCode = (unsigned char)extEntry->base;
-#else
     if (AddExtension(EVINAME, 0, 0,
 		     ProcEVIDispatch, SProcEVIDispatch,
 		     EVIResetProc, StandardMinorOpcode)) {
-#endif
 	eviPriv = eviDDXInit();
     }
 }
diff --git a/Xext/bigreq.c b/Xext/bigreq.c
index fcd848a..e7d4102 100644
--- a/Xext/bigreq.c
+++ b/Xext/bigreq.c
@@ -41,10 +41,6 @@ from The Open Group.
 #include "opaque.h"
 #include "modinit.h"
 
-#if 0
-static unsigned char XBigReqCode;
-#endif
-
 static void BigReqResetProc(
     ExtensionEntry * /* extEntry */
 );
@@ -54,18 +50,9 @@ static DISPATCH_PROC(ProcBigReqDispatch);
 void
 BigReqExtensionInit(INITARGS)
 {
-#if 0
-    ExtensionEntry *extEntry;
-
-    if ((extEntry = AddExtension(XBigReqExtensionName, 0, 0,
-				 ProcBigReqDispatch, ProcBigReqDispatch,
-				 BigReqResetProc, StandardMinorOpcode)) != 0)
-	XBigReqCode = (unsigned char)extEntry->base;
-#else
     (void) AddExtension(XBigReqExtensionName, 0, 0,
 			ProcBigReqDispatch, ProcBigReqDispatch,
 			BigReqResetProc, StandardMinorOpcode);
-#endif
 
     DeclareExtensionSecurity(XBigReqExtensionName, TRUE);
 }
diff --git a/Xext/cup.c b/Xext/cup.c
index 6bfa278..0a83855 100644
--- a/Xext/cup.c
+++ b/Xext/cup.c
@@ -51,11 +51,6 @@ static int		ProcDispatch(ClientPtr client);
 static int              SProcDispatch(ClientPtr client);
 static void		ResetProc(ExtensionEntry* extEntry);
 
-#if 0
-static unsigned char	ReqCode = 0;
-static int		ErrorBase;
-#endif
-
 #if defined(WIN32) || defined(TESTWIN32)
 #define HAVE_SPECIAL_DESKTOP_COLORS
 #endif
@@ -128,20 +123,6 @@ static xColorItem citems[] = {
 void
 XcupExtensionInit (INITARGS)
 {
-#if 0
-    ExtensionEntry* extEntry;
-
-    if ((extEntry = AddExtension (XCUPNAME,
-				0,
-				XcupNumberErrors,
-				ProcDispatch,
-				SProcDispatch,
-				ResetProc,
-				StandardMinorOpcode))) {
-	ReqCode = (unsigned char)extEntry->base;
-	ErrorBase = extEntry->errorBase;
-    }
-#else
     (void) AddExtension (XCUPNAME,
 			0,
 			XcupNumberErrors,
@@ -149,7 +130,6 @@ XcupExtensionInit (INITARGS)
 			SProcDispatch,
 			ResetProc,
 			StandardMinorOpcode);
-#endif
 
     /* PC servers initialize the desktop colors (citems) here! */
 }
diff --git a/Xext/dpms.c b/Xext/dpms.c
index aced406..b062b53 100644
--- a/Xext/dpms.c
+++ b/Xext/dpms.c
@@ -50,9 +50,6 @@ Equipment Corporation.
 #include "dpmsproc.h"
 #include "modinit.h"
 
-#if 0
-static unsigned char DPMSCode;
-#endif
 static DISPATCH_PROC(ProcDPMSDispatch);
 static DISPATCH_PROC(SProcDPMSDispatch);
 static DISPATCH_PROC(ProcDPMSGetVersion);
@@ -76,18 +73,9 @@ static void DPMSResetProc(ExtensionEntry* extEntry);
 void
 DPMSExtensionInit(INITARGS)
 {
-#if 0
-    ExtensionEntry *extEntry;
-    
-    if ((extEntry = AddExtension(DPMSExtensionName, 0, 0,
-				ProcDPMSDispatch, SProcDPMSDispatch,
-				DPMSResetProc, StandardMinorOpcode)))
-	DPMSCode = (unsigned char)extEntry->base;
-#else
     (void) AddExtension(DPMSExtensionName, 0, 0,
 			ProcDPMSDispatch, SProcDPMSDispatch,
 			DPMSResetProc, StandardMinorOpcode);
-#endif
 }
 
 /*ARGSUSED*/
diff --git a/Xext/fontcache.c b/Xext/fontcache.c
index c54340b..0338d4a 100644
--- a/Xext/fontcache.c
+++ b/Xext/fontcache.c
@@ -67,10 +67,6 @@ static DISPATCH_PROC(SProcFontCacheGetCacheStatistics);
 static DISPATCH_PROC(SProcFontCacheQueryVersion);
 static DISPATCH_PROC(SProcFontCacheChangeCacheSettings);
 
-#if 0
-static unsigned char FontCacheReqCode = 0;
-#endif
-
 void
 FontCacheExtensionInit(INITARGS)
 {
@@ -84,9 +80,6 @@ FontCacheExtensionInit(INITARGS)
 				SProcFontCacheDispatch,
 				FontCacheResetProc,
 				StandardMinorOpcode))) {
-#if 0
-	FontCacheReqCode = (unsigned char)extEntry->base;
-#endif
 	miscErrorBase = extEntry->errorBase;
     }
 }
diff --git a/Xext/mbuf.c b/Xext/mbuf.c
index 7296560..e646a7d 100644
--- a/Xext/mbuf.c
+++ b/Xext/mbuf.c
@@ -59,9 +59,6 @@ in this Software without prior written authorization from The Open Group.
 
 #define ValidEventMasks (ExposureMask|MultibufferClobberNotifyMask|MultibufferUpdateNotifyMask)
 
-#if 0
-static unsigned char	MultibufferReqCode;
-#endif
 static int		MultibufferEventBase;
 static int		MultibufferErrorBase;
 int			MultibufferScreenIndex = -1;
@@ -247,9 +244,6 @@ MultibufferExtensionInit()
 				 ProcMultibufferDispatch, SProcMultibufferDispatch,
 				 MultibufferResetProc, StandardMinorOpcode)))
     {
-#if 0
-	MultibufferReqCode = (unsigned char)extEntry->base;
-#endif
 	MultibufferEventBase = extEntry->eventBase;
 	MultibufferErrorBase = extEntry->errorBase;
 	EventSwapVector[MultibufferEventBase + MultibufferClobberNotify] = (EventSwapPtr) SClobberNotifyEvent;
diff --git a/Xext/mitmisc.c b/Xext/mitmisc.c
index 924b880..f89ee0c 100644
--- a/Xext/mitmisc.c
+++ b/Xext/mitmisc.c
@@ -42,10 +42,6 @@ in this Software without prior written authorization from The Open Group.
 #include <X11/extensions/mitmiscstr.h>
 #include "modinit.h"
 
-#if 0
-static unsigned char MITReqCode;
-#endif
-
 static void MITResetProc(
     ExtensionEntry * /* extEntry */
 );
@@ -60,18 +56,9 @@ static DISPATCH_PROC(SProcMITSetBugMode);
 void
 MITMiscExtensionInit(INITARGS)
 {
-#if 0
-    ExtensionEntry *extEntry;
-
-    if ((extEntry = AddExtension(MITMISCNAME, 0, 0,
-				 ProcMITDispatch, SProcMITDispatch,
-				 MITResetProc, StandardMinorOpcode)) != 0)
-	MITReqCode = (unsigned char)extEntry->base;
-#else
     (void) AddExtension(MITMISCNAME, 0, 0,
 			ProcMITDispatch, SProcMITDispatch,
 			MITResetProc, StandardMinorOpcode);
-#endif
 }
 
 /*ARGSUSED*/
diff --git a/Xext/panoramiX.c b/Xext/panoramiX.c
index 95df043..d054cf8 100644
--- a/Xext/panoramiX.c
+++ b/Xext/panoramiX.c
@@ -65,9 +65,6 @@ extern VisualPtr glxMatchVisual(ScreenPtr pScreen,
 				ScreenPtr pMatchScreen);
 #endif
 
-#if 0
-static unsigned char PanoramiXReqCode = 0;
-#endif
 /*
  *	PanoramiX data declarations
  */
@@ -471,10 +468,6 @@ void PanoramiXExtensionInit(int argc, char *argv[])
 	    break;
  	}
 
-#if 0
-	PanoramiXReqCode = (unsigned char)extEntry->base;
-#endif
-
 	/*
 	 *	First make sure all the basic allocations succeed.  If not,
 	 *	run in non-PanoramiXeen mode.
diff --git a/Xext/panoramiXSwap.c b/Xext/panoramiXSwap.c
index da445ff..cc9f614 100644
--- a/Xext/panoramiXSwap.c
+++ b/Xext/panoramiXSwap.c
@@ -41,10 +41,6 @@ Equipment Corporation.
 #include "window.h"
 #include "windowstr.h"
 #include "pixmapstr.h"
-#if 0
-#include <sys/workstation.h>
-#include <X11/Xserver/ws.h> 
-#endif
 #include "panoramiX.h"
 #include <X11/extensions/panoramiXproto.h>
 #include "panoramiXsrv.h"
diff --git a/Xext/panoramiXprocs.c b/Xext/panoramiXprocs.c
index f51f656..4bd5257 100644
--- a/Xext/panoramiXprocs.c
+++ b/Xext/panoramiXprocs.c
@@ -54,16 +54,6 @@ Equipment Corporation.
 #define INPUTONLY_LEGAL_MASK (CWWinGravity | CWEventMask | \
                               CWDontPropagate | CWOverrideRedirect | CWCursor )
 
-#if 0
-extern void (* EventSwapVector[128]) (fsError *, fsError *);
-
-extern void Swap32Write();
-extern void SLHostsExtend();
-extern void SQColorsExtend();
-WriteSConnectionInfo();
-extern void WriteSConnSetupPrefix();
-#endif
-
 /* Various of the DIX function interfaces were not designed to allow
  * the client->errorValue to be set on BadValue and other errors.
  * Rather than changing interfaces and breaking untold code we introduce
diff --git a/Xext/saver.c b/Xext/saver.c
index a590583..44689fc 100644
--- a/Xext/saver.c
+++ b/Xext/saver.c
@@ -61,9 +61,6 @@ in this Software without prior written authorization from the X Consortium.
 
 #include "modinit.h"
 
-#if 0
-static unsigned char ScreenSaverReqCode = 0;
-#endif
 static int ScreenSaverEventBase = 0;
 
 static DISPATCH_PROC(ProcScreenSaverQueryInfo);
@@ -272,9 +269,6 @@ ScreenSaverExtensionInit(INITARGS)
 				 ProcScreenSaverDispatch, SProcScreenSaverDispatch,
 				 ScreenSaverResetProc, StandardMinorOpcode)))
     {
-#if 0
-	ScreenSaverReqCode = (unsigned char)extEntry->base;
-#endif
 	ScreenSaverEventBase = extEntry->eventBase;
 	EventSwapVector[ScreenSaverEventBase] = (EventSwapPtr) SScreenSaverNotifyEvent;
     }
diff --git a/Xext/shape.c b/Xext/shape.c
index 6515a10..9c765f2 100644
--- a/Xext/shape.c
+++ b/Xext/shape.c
@@ -111,9 +111,6 @@ static DISPATCH_PROC(SProcShapeSelectInput);
 #include "panoramiXsrv.h"
 #endif
 
-#if 0
-static unsigned char ShapeReqCode = 0;
-#endif
 static int ShapeEventBase = 0;
 static RESTYPE ClientType, EventType; /* resource types for event masks */
 
@@ -154,9 +151,6 @@ ShapeExtensionInit(void)
 				 ProcShapeDispatch, SProcShapeDispatch,
 				 ShapeResetProc, StandardMinorOpcode)))
     {
-#if 0
-	ShapeReqCode = (unsigned char)extEntry->base;
-#endif
 	ShapeEventBase = extEntry->eventBase;
 	EventSwapVector[ShapeEventBase] = (EventSwapPtr) SShapeNotifyEvent;
     }
diff --git a/Xext/xcmisc.c b/Xext/xcmisc.c
index 8c7a86e..a3d40e3 100644
--- a/Xext/xcmisc.c
+++ b/Xext/xcmisc.c
@@ -48,10 +48,6 @@ from The Open Group.
 #define UINT32_MAX 0xffffffffU
 #endif
 
-#if 0
-static unsigned char XCMiscCode;
-#endif
-
 static void XCMiscResetProc(
     ExtensionEntry * /* extEntry */
 );
@@ -68,18 +64,9 @@ static DISPATCH_PROC(SProcXCMiscGetXIDRange);
 void
 XCMiscExtensionInit(INITARGS)
 {
-#if 0
-    ExtensionEntry *extEntry;
-
-    if ((extEntry = AddExtension(XCMiscExtensionName, 0, 0,
-				ProcXCMiscDispatch, SProcXCMiscDispatch,
-				XCMiscResetProc, StandardMinorOpcode)) != 0)
-	XCMiscCode = (unsigned char)extEntry->base;
-#else
     (void) AddExtension(XCMiscExtensionName, 0, 0,
 			ProcXCMiscDispatch, SProcXCMiscDispatch,
 			XCMiscResetProc, StandardMinorOpcode);
-#endif
 
     DeclareExtensionSecurity(XCMiscExtensionName, TRUE);
 }
diff --git a/Xext/xf86bigfont.c b/Xext/xf86bigfont.c
index b20e82d..f26605e 100644
--- a/Xext/xf86bigfont.c
+++ b/Xext/xf86bigfont.c
@@ -86,10 +86,6 @@ static DISPATCH_PROC(SProcXF86BigfontDispatch);
 static DISPATCH_PROC(SProcXF86BigfontQueryVersion);
 static DISPATCH_PROC(SProcXF86BigfontQueryFont);
 
-#if 0
-static unsigned char XF86BigfontReqCode;
-#endif
-
 #ifdef HAS_SHM
 
 /* A random signature, transmitted to the clients so they can verify that the
@@ -149,18 +145,6 @@ CheckForShmSyscall(void)
 void
 XFree86BigfontExtensionInit()
 {
-#if 0
-    ExtensionEntry* extEntry;
-
-    if ((extEntry = AddExtension(XF86BIGFONTNAME,
-				 XF86BigfontNumberEvents,
-				 XF86BigfontNumberErrors,
-				 ProcXF86BigfontDispatch,
-				 SProcXF86BigfontDispatch,
-				 XF86BigfontResetProc,
-				 StandardMinorOpcode))) {
-	XF86BigfontReqCode = (unsigned char) extEntry->base;
-#else
     if (AddExtension(XF86BIGFONTNAME,
 		     XF86BigfontNumberEvents,
 		     XF86BigfontNumberErrors,
@@ -168,7 +152,6 @@ XFree86BigfontExtensionInit()
 		     SProcXF86BigfontDispatch,
 		     XF86BigfontResetProc,
 		     StandardMinorOpcode)) {
-#endif
 #ifdef HAS_SHM
 #ifdef MUST_CHECK_FOR_SHM_SYSCALL
 	/*
diff --git a/Xext/xprint.c b/Xext/xprint.c
index 4ac13e6..42c6e6a 100644
--- a/Xext/xprint.c
+++ b/Xext/xprint.c
@@ -389,25 +389,6 @@ XpCloseScreen(int index, ScreenPtr pScreen)
     return (*CloseScreen)(index, pScreen);
 }
 
-#if 0 /* NOT USED */
-static void
-FreeScreenEntry(XpScreenPtr pScreenEntry)
-{
-    XpDriverPtr pDriver;
-
-    pDriver = pScreenEntry->drivers; 
-    while(pDriver != (XpDriverPtr)NULL)
-    {
-	XpDriverPtr tmp;
-
-	tmp = pDriver->next;
-	xfree(pDriver);
-	pDriver = tmp;
-    }
-    xfree(pScreenEntry);
-}
-#endif
-
 /*
  * XpRegisterInitFunc tells the print extension which screens
  * are printers as opposed to displays, and what drivers are
diff --git a/Xext/xtest.c b/Xext/xtest.c
index 94d8974..96ae182 100644
--- a/Xext/xtest.c
+++ b/Xext/xtest.c
@@ -54,10 +54,6 @@ from The Open Group.
 
 #include "modinit.h"
 
-#if 0
-static unsigned char XTestReqCode;
-#endif
-
 #ifdef XINPUT
 extern int DeviceValuator;
 #endif /* XINPUT */
@@ -89,18 +85,9 @@ static DISPATCH_PROC(SProcXTestGrabControl);
 void
 XTestExtensionInit(INITARGS)
 {
-#if 0
-    ExtensionEntry *extEntry;
-
-    if ((extEntry = AddExtension(XTestExtensionName, 0, 0,
-				 ProcXTestDispatch, SProcXTestDispatch,
-				 XTestResetProc, StandardMinorOpcode)) != 0)
-	XTestReqCode = (unsigned char)extEntry->base;
-#else
     (void) AddExtension(XTestExtensionName, 0, 0,
 			ProcXTestDispatch, SProcXTestDispatch,
 			XTestResetProc, StandardMinorOpcode);
-#endif
 }
 
 /*ARGSUSED*/
diff --git a/cfb/Makefile.am b/cfb/Makefile.am
index d24f027..901fc95 100644
--- a/cfb/Makefile.am
+++ b/cfb/Makefile.am
@@ -16,7 +16,6 @@ INCLUDES = $(CFB_INCLUDES) -I$(top_srcdir)/hw/xfree86/os-support  -I$(top_srcdir
 EXTRA_DIST = cfbline.c cfbfillarc.c cfbzerarc.c cfbblt.c cfbsolid.c \
              cfbtileodd.c cfbtile32.c cfb8line.c cfbply1rct.c cfbglblt8.c \
 	     cfb16.h cfb24.h cfb32.h cfb8bit.h cfbrrop.h \
-	     cfbtab.h \
 	     stip68kgnu.h stipmips.s stipsparc.s stipsprc32.s
 
 sdk_HEADERS = cfb.h cfb32.h cfb16.h cfbmap.h cfbunmap.h cfbmskbits.h
diff --git a/cfb/cfbcppl.c b/cfb/cfbcppl.c
index c13baf1..00714cb 100644
--- a/cfb/cfbcppl.c
+++ b/cfb/cfbcppl.c
@@ -42,9 +42,7 @@ in this Software without prior written authorization from The Open Group.
 #include "maskbits.h"
 #define PSZ 8
 #include "mergerop.h"
-#else /* PSZ==8 */
-#include "cfbtab.h" /* provides starttab, endttab, partmasks */
-#endif /* PSZ==8 */
+#endif
 
 
 void
diff --git a/cfb/cfbmap.h b/cfb/cfbmap.h
index 2e709b1..d6d4475 100644
--- a/cfb/cfbmap.h
+++ b/cfb/cfbmap.h
@@ -30,132 +30,6 @@ in this Software without prior written authorization from The Open Group.
  * Map names around so that multiple depths can be supported simultaneously
  */
 
-#if 0
-#undef QuartetBitsTable
-#undef QuartetPixelMaskTable
-#undef cfb8ClippedLineCopy
-#undef cfb8ClippedLineGeneral 
-#undef cfb8ClippedLineXor
-#undef cfb8LineSS1Rect
-#undef cfb8LineSS1RectCopy
-#undef cfb8LineSS1RectGeneral 
-#undef cfb8LineSS1RectPreviousCopy
-#undef cfb8LineSS1RectXor
-#undef cfb8SegmentSS1Rect
-#undef cfb8SegmentSS1RectCopy
-#undef cfb8SegmentSS1RectGeneral 
-#undef cfb8SegmentSS1RectShiftCopy
-#undef cfb8SegmentSS1RectXor
-#undef cfbAllocatePrivates
-#undef cfbBSFuncRec
-#undef cfbBitBlt
-#undef cfbBresD
-#undef cfbBresS
-#undef cfbChangeWindowAttributes
-#undef cfbCloseScreen
-#undef cfbCopyArea
-#undef cfbCopyImagePlane
-#undef cfbCopyPixmap
-#undef cfbCopyPlane
-#undef cfbCopyPlaneReduce
-#undef cfbCopyRotatePixmap
-#undef cfbCopyWindow
-#undef cfbCreateGC
-#undef cfbCreatePixmap
-#undef cfbCreateScreenResources
-#undef cfbCreateWindow
-#undef cfbDestroyPixmap
-#undef cfbDestroyWindow
-#undef cfbDoBitblt
-#undef cfbDoBitbltCopy
-#undef cfbDoBitbltGeneral
-#undef cfbDoBitbltOr
-#undef cfbDoBitbltXor
-#undef cfbFillBoxTile32sCopy
-#undef cfbFillBoxTile32sGeneral
-#undef cfbFillBoxTileOdd
-#undef cfbFillBoxTileOddCopy
-#undef cfbFillBoxTileOddGeneral
-#undef cfbFillPoly1RectCopy
-#undef cfbFillPoly1RectGeneral
-#undef cfbFillRectSolidCopy
-#undef cfbFillRectSolidGeneral
-#undef cfbFillRectSolidXor
-#undef cfbFillRectTile32Copy
-#undef cfbFillRectTile32General
-#undef cfbFillRectTileOdd
-#undef cfbFillSpanTile32sCopy
-#undef cfbFillSpanTile32sGeneral
-#undef cfbFillSpanTileOddCopy
-#undef cfbFillSpanTileOddGeneral
-#undef cfbFinishScreenInit
-#undef cfbGCFuncs
-#undef cfbGCPrivateIndex
-#undef cfbGetImage
-#undef cfbGetScreenPixmap
-#undef cfbGetSpans
-#undef cfbHorzS
-#undef cfbImageGlyphBlt8
-#undef cfbInitializeColormap
-#undef cfbInstallColormap
-#undef cfbLineSD
-#undef cfbLineSS
-#undef cfbListInstalledColormaps
-#undef cfbMapWindow
-#undef cfbMatchCommon
-#undef cfbNonTEOps
-#undef cfbNonTEOps1Rect
-#undef cfbPadPixmap
-#undef cfbPolyFillArcSolidCopy
-#undef cfbPolyFillArcSolidGeneral
-#undef cfbPolyFillRect
-#undef cfbPolyGlyphBlt8
-#undef cfbPolyGlyphRop8
-#undef cfbPolyPoint
-#undef cfbPositionWindow
-#undef cfbPutImage
-#undef cfbReduceRasterOp
-#undef cfbResolveColor
-#undef cfbRestoreAreas
-#undef cfbSaveAreas
-#undef cfbScreenInit
-#undef cfbScreenPrivateIndex
-#undef cfbSegmentSD
-#undef cfbSegmentSS
-#undef cfbSetScanline
-#undef cfbSetScreenPixmap
-#undef cfbSetSpans
-#undef cfbSetupScreen
-#undef cfbSolidSpansCopy
-#undef cfbSolidSpansGeneral
-#undef cfbSolidSpansXor
-#undef cfbStippleStack
-#undef cfbStippleStackTE
-#undef cfbTEGlyphBlt
-#undef cfbTEOps
-#undef cfbTEOps1Rect
-#undef cfbTile32FSCopy
-#undef cfbTile32FSGeneral
-#undef cfbUninstallColormap
-#undef cfbUnmapWindow
-#undef cfbUnnaturalStippleFS
-#undef cfbUnnaturalTileFS
-#undef cfbValidateGC
-#undef cfbVertS
-#undef cfbWindowPrivateIndex
-#undef cfbXRotatePixmap
-#undef cfbYRotatePixmap
-#undef cfbZeroPolyArcSS8Copy
-#undef cfbZeroPolyArcSS8General
-#undef cfbZeroPolyArcSS8Xor
-#undef cfbendpartial
-#undef cfbendtab
-#undef cfbmask
-#undef cfbrmask
-#undef cfbstartpartial
-#undef cfbstarttab
-#endif
-
 /* a losing vendor cpp dumps core if we define CFBNAME in terms of CATNAME */
 
 #if PSZ != 8
diff --git a/cfb/cfbmskbits.h b/cfb/cfbmskbits.h
index 6076269..5ee9125 100644
--- a/cfb/cfbmskbits.h
+++ b/cfb/cfbmskbits.h
@@ -831,42 +831,6 @@ if ((x) + (w) <= PPW) {\
     *(destpix) = (*(psrcpix)) & QuartetPixelMaskTable[q]; \
 }
 #if PSZ == 24
-# if 0
-#define getstipplepixels24(psrcstip,xt,w,ones,psrcpix,destpix,stipindex,srcindex,dstindex) \
-{ \
-    PixelGroup q; \
-    CfbBits src; \
-    register unsigned int sidx; \
-    register unsigned int didx; \
-    sidx = ((srcindex) & 3)<<1; \
-    didx = ((dstindex) & 3)<<1; \
-    q = *(psrcstip) >> (xt); \
-/*    if((srcindex)!=0)*/ \
-/*    src = (((*(psrcpix)) << cfb24Shift[sidx]) & (cfbmask[sidx])) |*/ \
-/*	(((*((psrcpix)+1)) << cfb24Shift[sidx+1]) & (cfbmask[sidx+1])); */\
-/*    else */\
-	src = (*(psrcpix))&0xFFFFFF; \
-    if ( ((xt)+(w)) > PGSZ ) \
-        q |= (*((psrcstip)+1)) << (PGSZ -(xt)); \
-    q = QuartetBitsTable[(w)] & ((ones) ? q : ~q); \
-    src &= QuartetPixelMaskTable[q]; \
-    *(destpix) &= cfbrmask[didx]; \
-    switch(didx) {\
-	case 0: \
-		*(destpix) |= (src &cfbmask[didx]); \
-		break; \
-	case 2: \
-	case 4: \
-		destpix++;didx++; \
-		*(destpix) = ((*(destpix)) & (cfbrmask[didx]))| \
-			(BitLeft(src, cfb24Shift[didx]) & (cfbmask[didx])); \
-		destpix--; didx--;\
-	case 6: \
-		*(destpix) |= (BitRight(src, cfb24Shift[didx]) & cfbmask[didx]); \
-		break; \
-	}; \
-}
-# else
 #define getstipplepixels24(psrcstip,xt,ones,psrcpix,destpix,stipindex) \
 { \
     PixelGroup q; \
@@ -874,7 +838,6 @@ if ((x) + (w) <= PPW) {\
     q = ((ones) ? q : ~q) & 1; \
     *(destpix) = (*(psrcpix)) & QuartetPixelMaskTable[q]; \
 }
-# endif
 #endif /* PSZ == 24 */
 #endif
 
diff --git a/cfb/cfbtab.h b/cfb/cfbtab.h
deleted file mode 100644
index 60d203f..0000000
--- a/cfb/cfbtab.h
+++ /dev/null
@@ -1,14 +0,0 @@
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#ifndef _CFBTAB_H_
-#define _CFBTAB_H_
-
-/* prototypes */
-#if 0
-extern int starttab[32], endtab[32];
-extern unsigned int partmasks[32][32];
-#endif
-
-#endif /* _CFBTAB_H_ */
diff --git a/dbe/dbe.c b/dbe/dbe.c
index d63620d..cded2bd 100644
--- a/dbe/dbe.c
+++ b/dbe/dbe.c
@@ -163,26 +163,6 @@ DbeAllocWinPriv(ScreenPtr pScreen)
 
 /******************************************************************************
  *
- * DBE DIX Procedure: DbeFallbackAllocWinPriv
- *
- * Description:
- *
- *     This is a fallback function for AllocWinPriv().
- *
- *****************************************************************************/
-
-#if 0 /* NOT USED */
-static DbeWindowPrivPtr
-DbeFallbackAllocWinPriv(pScreen)
-    ScreenPtr	pScreen;
-{
-    return (NULL);
-} /* DbeFallbackAllocWinPriv() */
-#endif
-
-
-/******************************************************************************
- *
  * DBE DIX Procedure: DbeAllocWinPrivPrivIndex
  *
  * Description:
diff --git a/dix/window.c b/dix/window.c
index f65fb84..129ebc6 100644
--- a/dix/window.c
+++ b/dix/window.c
@@ -145,13 +145,6 @@ _X_EXPORT int screenIsSaved = SCREEN_SAVER_OFF;
 
 _X_EXPORT ScreenSaverStuffRec savedScreenInfo[MAXSCREENS];
 
-#if 0
-extern void DeleteWindowFromAnyEvents();
-extern Mask EventMaskForClient();
-extern void WindowHasNewCursor();
-extern void RecalculateDeliverableEvents();
-#endif
-
 static Bool TileScreenSaver(int i, int kind);
 
 
diff --git a/fb/fbblt.c b/fb/fbblt.c
index 837c3a2..38271c0 100644
--- a/fb/fbblt.c
+++ b/fb/fbblt.c
@@ -825,9 +825,6 @@ fbBltOdd24 (FbBits	*srcLine,
 	    even = TRUE;
 	}
     }
-#if 0
-    fprintf (stderr, "\n");
-#endif
 }
 #endif
 
diff --git a/include/dixevents.h b/include/dixevents.h
index 62c8672..77b37c8 100644
--- a/include/dixevents.h
+++ b/include/dixevents.h
@@ -41,28 +41,6 @@ extern int MaybeDeliverEventsToClient(
 
 extern int ProcWarpPointer(ClientPtr /* client */);
 
-#if 0
-extern void
-#ifdef XKB
-CoreProcessKeyboardEvent (
-#else
-ProcessKeyboardEvent (
-#endif
-	xEvent *               /* xE */,
-	DeviceIntPtr           /* keybd */,
-	int                    /* count */);
-
-extern void
-#ifdef XKB
-CoreProcessPointerEvent (
-#else
-ProcessPointerEvent (
-#endif
-	xEvent *               /* xE */,
-	DeviceIntPtr           /* mouse */,
-	int                    /* count */);
-#endif
-
 extern int EventSelectForWindow(
 	WindowPtr              /* pWin */,
 	ClientPtr              /* client */,
diff --git a/include/swapreq.h b/include/swapreq.h
index 9c785fe..83e524b 100644
--- a/include/swapreq.h
+++ b/include/swapreq.h
@@ -26,17 +26,6 @@ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
 #ifndef SWAPREQ_H
 #define SWAPREQ_H 1
 
-/* The first two are in misc.h */
-#if 0
-extern void SwapLongs (
-    CARD32 * /* list */,
-    unsigned long /* count */);
-
-extern void SwapShorts (
-    short * /* list */,
-    unsigned long  /* count */);
-#endif
-
 extern void SwapColorItem(
     xColorItem	* /* pItem */);
 
diff --git a/mi/midispcur.c b/mi/midispcur.c
index 7b203f7..918e401 100644
--- a/mi/midispcur.c
+++ b/mi/midispcur.c
@@ -182,9 +182,6 @@ miDCCloseScreen (index, pScreen)
     tossPix (pScreenPriv->pSave);
     tossPix (pScreenPriv->pTemp);
 #ifdef ARGB_CURSOR
-#if 0				/* This has been free()d before */
-    tossPict (pScreenPriv->pRootPicture);
-#endif 
     tossPict (pScreenPriv->pTempPicture);
 #endif
     xfree ((pointer) pScreenPriv);
diff --git a/miext/damage/damage.c b/miext/damage/damage.c
index 17425ae..8f1e3b7 100755
--- a/miext/damage/damage.c
+++ b/miext/damage/damage.c
@@ -243,9 +243,6 @@ damageDamageRegion (DrawablePtr pDrawable, RegionPtr pRegion, Bool clip,
 	if (pDamage->pDrawable->type == DRAWABLE_WINDOW &&
 	    !((WindowPtr) (pDamage->pDrawable))->realized)
 	{
-#if 0
-	    DAMAGE_DEBUG (("damage while window unrealized\n"));
-#endif
 	    continue;
 	}
 	
diff --git a/os/WaitFor.c b/os/WaitFor.c
index 7683477..71ca534 100644
--- a/os/WaitFor.c
+++ b/os/WaitFor.c
@@ -410,21 +410,6 @@ WaitForSomething(int *pClientsReady)
     return nready;
 }
 
-#if 0
-/*
- * This is not always a macro.
- */
-ANYSET(FdMask *src)
-{
-    int i;
-
-    for (i=0; i<mskcnt; i++)
-	if (src[ i ])
-	    return (TRUE);
-    return (FALSE);
-}
-#endif
-
 /* If time has rewound, re-run every affected timer.
  * Timers might drop out of the list, so we have to restart every time. */
 static void
diff --git a/os/io.c b/os/io.c
index 36abe13..968f40a 100644
--- a/os/io.c
+++ b/os/io.c
@@ -57,9 +57,8 @@ SOFTWARE.
 #include <dix-config.h>
 #endif
 
-#if 0
-#define DEBUG_COMMUNICATION
-#endif
+#undef DEBUG_COMMUNICATION
+
 #ifdef WIN32
 #include <X11/Xwinsock.h>
 #endif
diff --git a/os/osinit.c b/os/osinit.c
index 1f09f06..1bc8624 100644
--- a/os/osinit.c
+++ b/os/osinit.c
@@ -194,10 +194,6 @@ OsInit(void)
 		    rlim.rlim_cur = limitNoFile;
 		else
 		    rlim.rlim_cur = rlim.rlim_max;
-#if 0
-		if (rlim.rlim_cur > MAXSOCKS)
-		    rlim.rlim_cur = MAXSOCKS;
-#endif
 		(void)setrlimit(RLIMIT_NOFILE, &rlim);
 	    }
 	}
diff --git a/render/picturestr.h b/render/picturestr.h
index b2e180f..ba165a4 100644
--- a/render/picturestr.h
+++ b/render/picturestr.h
@@ -504,12 +504,6 @@ SetPictureToDefaults (PicturePtr pPicture);
 PicturePtr
 AllocatePicture (ScreenPtr  pScreen);
 
-#if 0
-Bool
-miPictureInit (ScreenPtr pScreen, PictFormatPtr formats, int nformats);
-#endif
-
-
 PicturePtr
 CreatePicture (Picture		pid,
 	       DrawablePtr	pDrawable,
diff --git a/render/render.c b/render/render.c
index ca6e62f..b432406 100644
--- a/render/render.c
+++ b/render/render.c
@@ -212,9 +212,6 @@ int	(*SProcRenderVector[RenderNumberRequests])(ClientPtr) = {
 static void
 RenderResetProc (ExtensionEntry *extEntry);
     
-#if 0
-static CARD8	RenderReqCode;
-#endif
 int	RenderErrBase;
 int	RenderClientPrivateIndex;
 
@@ -259,9 +256,6 @@ RenderExtensionInit (void)
 			     RenderResetProc, StandardMinorOpcode);
     if (!extEntry)
 	return;
-#if 0
-    RenderReqCode = (CARD8) extEntry->base;
-#endif
     RenderErrBase = extEntry->errorBase;
 }
 
@@ -299,26 +293,6 @@ ProcRenderQueryVersion (ClientPtr client)
     return (client->noClientException);
 }
 
-#if 0
-static int
-VisualDepth (ScreenPtr pScreen, VisualPtr pVisual)
-{
-    DepthPtr    pDepth;
-    int		d, v;
-
-    for (d = 0; d < pScreen->numDepths; d++)
-    {
-	pDepth = pScreen->allowedDepths + d;
-	for (v = 0; v < pDepth->numVids; v++)
-	{
-	    if (pDepth->vids[v] == pVisual->vid)
-		return pDepth->depth;
-	}
-    }
-    return 0;
-}
-#endif
-
 static VisualPtr
 findVisual (ScreenPtr pScreen, VisualID vid)
 {
@@ -3225,98 +3199,6 @@ PanoramiXRenderTriFan(ClientPtr client)
     return result;
 }
 
-#if 0 /* Not implemented yet */
-
-static int
-PanoramiXRenderColorTrapezoids(ClientPtr client)
-{
-    PanoramiXRes        *src, *dst;
-    int                 result = Success, j;
-    REQUEST(xRenderColorTrapezoidsReq);
-    char		*extra;
-    int			extra_len;
-    
-    REQUEST_AT_LEAST_SIZE (xRenderColorTrapezoidsReq);
-    
-    VERIFY_XIN_PICTURE (dst, stuff->dst, client, DixWriteAccess,
-			RenderErrBase + BadPicture);
-
-    extra_len = (client->req_len << 2) - sizeof (xRenderColorTrapezoidsReq);
-
-    if (extra_len &&
-	(extra = (char *) xalloc (extra_len))) {
-	memcpy (extra, stuff + 1, extra_len);
-
-	FOR_NSCREENS_FORWARD(j) {
-	    if (j) memcpy (stuff + 1, extra, extra_len);
-	    if (dst->u.pict.root) {
-                int x_off = panoramiXdataPtr[j].x;
-		int y_off = panoramiXdataPtr[j].y;
-
-		if(x_off || y_off) {
-			....; 
-		}
-	    }
-	    
-            stuff->dst = dst->info[j].id;
-	    result =
-		(*PanoramiXSaveRenderVector[X_RenderColorTrapezoids]) (client);
-
-	    if(result != Success) break;
-	}
-	
-        xfree(extra);
-    }
-
-    return result;
-}
-
-static int
-PanoramiXRenderColorTriangles(ClientPtr client)
-{
-    PanoramiXRes        *src, *dst;
-    int                 result = Success, j;
-    REQUEST(xRenderColorTrianglesReq);
-    char		*extra;
-    int			extra_len;
-    
-    REQUEST_AT_LEAST_SIZE (xRenderColorTrianglesReq);
-    
-    VERIFY_XIN_PICTURE (dst, stuff->dst, client, DixWriteAccess,
-			RenderErrBase + BadPicture);
-
-    extra_len = (client->req_len << 2) - sizeof (xRenderColorTrianglesReq);
-
-    if (extra_len &&
-	(extra = (char *) xalloc (extra_len))) {
-	memcpy (extra, stuff + 1, extra_len);
-
-	FOR_NSCREENS_FORWARD(j) {
-	    if (j) memcpy (stuff + 1, extra, extra_len);
-	    if (dst->u.pict.root) {
-                int x_off = panoramiXdataPtr[j].x;
-		int y_off = panoramiXdataPtr[j].y;
-
-		if(x_off || y_off) {
-			....; 
-		}
-	    }
-	    
-            stuff->dst = dst->info[j].id;
-	    result =
-		(*PanoramiXSaveRenderVector[X_RenderColorTriangles]) (client);
-
-	    if(result != Success) break;
-	}
-	
-        xfree(extra);
-    }
-
-    return result;
-}
-
-#endif
-
 static int
 PanoramiXRenderAddTraps (ClientPtr client)
 {
commit 83ba1e167c1473ac7d85239a6ee5ed629353cb16
Author: Ben Byer <bbyer at bbyer.local>
Date:   Sat Dec 1 18:28:19 2007 -0800

    added missing call to xcb_connect()
    (cherry picked from commit dc2fb323ee11f081d447605be151024f9e2487f9)

diff --git a/hw/darwin/apple/bundle-main.c b/hw/darwin/apple/bundle-main.c
index d46e7b2..10d2f20 100644
--- a/hw/darwin/apple/bundle-main.c
+++ b/hw/darwin/apple/bundle-main.c
@@ -613,8 +613,9 @@ display_exists_p (int number)
     sprintf (buf, "/tmp/.X11-unix/X%d", number);
     if (access (buf, F_OK) != 0)
 		return FALSE;
-	
+    
     sprintf (buf, ":%d", number);
+    conn = xcb_connect(buf, NULL);
     if (xcb_connection_has_error(conn)) return FALSE;
 	
     xcb_disconnect(conn);
commit 9ad4560b3cbd42e647d6227746d4d037616d57cf
Author: Jeremy Huddleston <jeremy at tifa.local>
Date:   Sat Dec 1 16:23:23 2007 -0800

    Darwin: Alt is Mode_switch Switching to Mode_switch to maintain compatibility with Tiger X11.
    (cherry picked from commit 8a76c99c0ebbaf7375f3a9c75c4f7921a79024da)

diff --git a/hw/darwin/darwinKeyboard.c b/hw/darwin/darwinKeyboard.c
index 7f7b7c7..851a10f 100644
--- a/hw/darwin/darwinKeyboard.c
+++ b/hw/darwin/darwinKeyboard.c
@@ -518,8 +518,8 @@ Bool DarwinParseNXKeyMapping(
                                 (left ? XK_Control_L : XK_Control_R);
                         break;
                     case NX_MODIFIERKEY_ALTERNATE:
-                        info->keyMap[keyCode * GLYPHS_PER_KEY] =
-                                (left ? XK_Alt_L : XK_Alt_R);
+                        info->keyMap[keyCode * GLYPHS_PER_KEY] = XK_Mode_switch;
+                                // (left ? XK_Alt_L : XK_Alt_R);
                         break;
                     case NX_MODIFIERKEY_COMMAND:
                         info->keyMap[keyCode * GLYPHS_PER_KEY] =
@@ -709,6 +709,11 @@ DarwinBuildModifierMaps(darwinKeyboardInfo *info) {
                 break;
 
             case XK_Mode_switch:
+                // Yes, this is ugly.  This needs to be cleaned up when we integrate quartzKeyboard with this code and refactor.
+#ifdef NX_MODIFIERKEY_RALTERNATE
+                info->modifierKeycodes[NX_MODIFIERKEY_RALTERNATE][0] = i;
+#endif
+                info->modifierKeycodes[NX_MODIFIERKEY_ALTERNATE][0] = i;
                 info->modMap[MIN_KEYCODE + i] = Mod1Mask;
                 break;
 
diff --git a/hw/darwin/quartz/Makefile.am b/hw/darwin/quartz/Makefile.am
index fe66429..f5199df 100644
--- a/hw/darwin/quartz/Makefile.am
+++ b/hw/darwin/quartz/Makefile.am
@@ -3,7 +3,6 @@ noinst_LIBRARIES = libXQuartz.a
 AM_CFLAGS = $(XSERVER_CFLAGS) $(DIX_CFLAGS)
 AM_OBJCFLAGS = $(XSERVER_CFLAGS) $(DIX_CFLAGS)
 AM_CPPFLAGS = \
-	-DHAS_KL_API \
 	-I$(srcdir) -I$(srcdir)/.. \
 	-I$(top_srcdir)/miext/rootless
 
diff --git a/hw/darwin/quartz/quartzKeyboard.c b/hw/darwin/quartz/quartzKeyboard.c
index b87249f..ee485b8 100644
--- a/hw/darwin/quartz/quartzKeyboard.c
+++ b/hw/darwin/quartz/quartzKeyboard.c
@@ -44,8 +44,6 @@
 #include "X11/keysym.h"
 #include "keysym2ucs.h"
 
-#ifdef HAS_KL_API
-
 #define HACK_MISSING 1
 #define HACK_KEYPAD 1
 
@@ -68,11 +66,11 @@ const static struct {
     {55,  XK_Meta_L},
     {56,  XK_Shift_L},
     {57,  XK_Caps_Lock},
-    {58,  XK_Alt_L},
+    {58,  XK_Mode_switch},
     {59,  XK_Control_L},
 
     {60,  XK_Shift_R},
-    {61,  XK_Alt_R},
+    {61,  XK_Mode_switch},
     {62,  XK_Control_R},
     {63,  XK_Meta_R},
 
@@ -332,19 +330,3 @@ DarwinModeReadSystemKeymap (darwinKeyboardInfo *info)
     
     return TRUE;
 }
-
-#else /* !HAS_KL_API */
-
-unsigned int
-DarwinModeSystemKeymapSeed (void)
-{
-    return 0;
-}
-
-Bool
-DarwinModeReadSystemKeymap (darwinKeyboardInfo *info)
-{
-    return FALSE;
-}
-
-#endif /* HAS_KL_API */
commit f83d758dcc4878849a851c8466f6fa16b2b7cd8e
Author: Jeremy Huddleston <jeremy at yuffie.local>
Date:   Fri Nov 30 16:11:15 2007 -0800

    Darwin: properly implemented xcb check for stale sockets
    (cherry picked from commit f543cb8fbb3d9213cb03396f4252ab9821319993)

diff --git a/hw/darwin/apple/bundle-main.c b/hw/darwin/apple/bundle-main.c
index 452da76..d46e7b2 100644
--- a/hw/darwin/apple/bundle-main.c
+++ b/hw/darwin/apple/bundle-main.c
@@ -70,9 +70,8 @@
 
 #include <X11/Xlib.h>
 #include <X11/Xauth.h>
-#ifdef USE_XCB
 #include <xcb/xcb.h>
-#endif
+
 #include <CoreFoundation/CoreFoundation.h>
 #include <SystemConfiguration/SystemConfiguration.h>
 
@@ -597,25 +596,28 @@ static Boolean
 display_exists_p (int number)
 {
     char buf[64];
-#ifdef USE_XCB
     xcb_connection_t *conn;
-#endif
-
+    char *fullname = NULL;
+    int idisplay, iscreen;
+    char *conn_auth_name, *conn_auth_data;
+    int conn_auth_namelen, conn_auth_datalen;
+    
+    //    extern void *_X11TransConnectDisplay ();
+    //    extern void _XDisconnectDisplay ();
+	
     /* Since connecting to the display waits for a few seconds if the
 	 display doesn't exist, check for trivial non-existence - if the
 	 socket in /tmp exists or not.. (note: if the socket exists, the
 	 server may still not, so we need to try to connect in that case..) */
 	
     sprintf (buf, "/tmp/.X11-unix/X%d", number);
-    if (access (buf, F_OK) != 0) return FALSE;
-
-#ifdef USE_XCB
+    if (access (buf, F_OK) != 0)
+		return FALSE;
+	
     sprintf (buf, ":%d", number);
-    conn = xcb_connect(buf, NULL);
-    if (conn == NULL) return FALSE;
+    if (xcb_connection_has_error(conn)) return FALSE;
+	
     xcb_disconnect(conn);
-#endif
-
     return TRUE;
 }
 
commit f54b28eeba119c42d0fcccfbe295306dd670221a
Author: Jeremy Huddleston <jeremy at yuffie.local>
Date:   Fri Nov 30 16:09:23 2007 -0800

    Darwin: Undo focus-hack which didn't work right.

diff --git a/hw/darwin/quartz/X11Application.m b/hw/darwin/quartz/X11Application.m
index 514bc49..aef0699 100644
--- a/hw/darwin/quartz/X11Application.m
+++ b/hw/darwin/quartz/X11Application.m
@@ -313,9 +313,6 @@ static void message_kit_thread (SEL selector, NSObject *arg) {
 }
 
 - (void) set_front_process:unused {
-    [NSApp activateIgnoringOtherApps:YES];
-	
-    if ([self modalWindow] == nil) [self activateX:YES];
     QuartzMessageServerThread(kXDarwinBringAllToFront, 0);
 }
 
commit f30abe30c5fea10e680aa12f3fe37ee8ce1a0201
Author: Dave Airlie <airlied at linux.ie>
Date:   Fri Nov 30 13:52:06 2007 +1000

    edid quirk for MAX 0x77e monitor
    
    From RH bugzilla 306441

diff --git a/hw/xfree86/modes/xf86EdidModes.c b/hw/xfree86/modes/xf86EdidModes.c
index 2f26a64..777ef7e 100644
--- a/hw/xfree86/modes/xf86EdidModes.c
+++ b/hw/xfree86/modes/xf86EdidModes.c
@@ -72,7 +72,8 @@ static Bool quirk_prefer_large_60 (int scrnIndex, xf86MonPtr DDC)
 {
     /* Belinea 10 15 55 */
     if (memcmp (DDC->vendor.name, "MAX", 4) == 0 &&
-	DDC->vendor.prod_id == 1516)
+	((DDC->vendor.prod_id == 1516) ||
+	(DDC->vendor.prod_id == 0x77e)))
 	return TRUE;
     
     /* Acer AL1706 */
commit 8a079be0dd0f2ce37868988cde4ac8895522b088
Author: Jeremy Huddleston <jeremy at yuffie.local>
Date:   Thu Nov 29 02:19:22 2007 -0800

    Darwin: #ifdefs around dix-config.h include and NDEBUG/assert.h workaround.
    (cherry picked from commit d2b768890f0878ae4e3fec8f7219e82b79256133)

diff --git a/hw/darwin/darwin.c b/hw/darwin/darwin.c
index 87edd9a..b46b768 100644
--- a/hw/darwin/darwin.c
+++ b/hw/darwin/darwin.c
@@ -29,7 +29,9 @@
  * use or other dealings in this Software without prior written authorization.
  */
 
+#ifdef HAVE_DIX_CONFIG_H
 #include <dix-config.h>
+#endif
 
 #include <X11/X.h>
 #include <X11/Xproto.h>
diff --git a/hw/darwin/darwin.h b/hw/darwin/darwin.h
index 4f11847..d7d2af4 100644
--- a/hw/darwin/darwin.h
+++ b/hw/darwin/darwin.h
@@ -27,9 +27,6 @@
 #ifndef _DARWIN_H
 #define _DARWIN_H
 
-//#include "dix-config.h" // This crashes us for some reason...
-#define SHAPE
-
 #include <IOKit/IOTypes.h>
 #include "inputstr.h"
 #include "scrnintstr.h"
diff --git a/hw/darwin/darwinKeyboard.c b/hw/darwin/darwinKeyboard.c
index b51e2da..7f7b7c7 100644
--- a/hw/darwin/darwinKeyboard.c
+++ b/hw/darwin/darwinKeyboard.c
@@ -56,9 +56,13 @@
 ===========================================================================
 */
 
+#ifdef HAVE_DIX_CONFIG_H
+#include <dix-config.h>
+#endif
+
 // Define this to get a diagnostic output to stderr which is helpful
 // in determining how the X server is interpreting the Darwin keymap.
-#define DUMP_DARWIN_KEYMAP
+// #define DUMP_DARWIN_KEYMAP
 
 #include <stdio.h>
 #include <stdlib.h>
@@ -69,7 +73,15 @@
 #include <architecture/byte_order.h>  // For the NXSwap*
 #include "darwin.h"
 #include "darwinKeyboard.h"
+
+#ifdef NDEBUG
+#undef NDEBUG
 #include <assert.h>
+#define NDEBUG 1
+#else
+#include <assert.h>
+#endif
+
 #define AltMask         Mod1Mask
 #define MetaMask        Mod2Mask
 #define FunctionMask    Mod3Mask
diff --git a/hw/darwin/darwinXinput.c b/hw/darwin/darwinXinput.c
index 260d72a..ee456a4 100644
--- a/hw/darwin/darwinXinput.c
+++ b/hw/darwin/darwinXinput.c
@@ -52,6 +52,10 @@ SOFTWARE.
 
 ********************************************************/
 
+#ifdef HAVE_DIX_CONFIG_H
+#include <dix-config.h>
+#endif
+
 #define	 NEED_EVENTS
 #include <X11/X.h>
 #include <X11/Xproto.h>
diff --git a/hw/darwin/quartz/X11Application.m b/hw/darwin/quartz/X11Application.m
index a43d536..514bc49 100644
--- a/hw/darwin/quartz/X11Application.m
+++ b/hw/darwin/quartz/X11Application.m
@@ -27,6 +27,10 @@
  promote the sale, use or other dealings in this Software without
  prior written authorization. */
 
+#ifdef HAVE_DIX_CONFIG_H
+#include <dix-config.h>
+#endif
+
 #include "quartzCommon.h"
 
 #import "X11Application.h"
diff --git a/hw/darwin/quartz/X11Controller.m b/hw/darwin/quartz/X11Controller.m
index 6929566..0f64e45 100644
--- a/hw/darwin/quartz/X11Controller.m
+++ b/hw/darwin/quartz/X11Controller.m
@@ -27,6 +27,10 @@
    promote the sale, use or other dealings in this Software without
    prior written authorization. */
 
+#ifdef HAVE_DIX_CONFIG_H
+#include <dix-config.h>
+#endif
+
 #define DEFAULT_PATH "/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/X11/bin"
 
 #include "quartzCommon.h"
diff --git a/hw/darwin/quartz/applewm.c b/hw/darwin/quartz/applewm.c
index 20d1b4f..72dca28 100644
--- a/hw/darwin/quartz/applewm.c
+++ b/hw/darwin/quartz/applewm.c
@@ -25,7 +25,9 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 
 **************************************************************************/
 
+#ifdef HAVE_DIX_CONFIG_H
 #include <dix-config.h>
+#endif
 
 #include "quartzCommon.h"
 
diff --git a/hw/darwin/quartz/cr/XView.m b/hw/darwin/quartz/cr/XView.m
index 8379f94..130b15f 100644
--- a/hw/darwin/quartz/cr/XView.m
+++ b/hw/darwin/quartz/cr/XView.m
@@ -30,10 +30,13 @@
  * use or other dealings in this Software without prior written authorization.
  */
 
+#ifdef HAVE_DIX_CONFIG_H
 #include <dix-config.h>
+#endif
 
 #import "XView.h"
 
+
 @implementation XView
 
 - (BOOL)isFlipped
diff --git a/hw/darwin/quartz/cr/crAppleWM.m b/hw/darwin/quartz/cr/crAppleWM.m
index a0259c3..246f521 100644
--- a/hw/darwin/quartz/cr/crAppleWM.m
+++ b/hw/darwin/quartz/cr/crAppleWM.m
@@ -26,7 +26,9 @@
  * use or other dealings in this Software without prior written authorization.
  */
 
+#ifdef HAVE_DIX_CONFIG_H
 #include <dix-config.h>
+#endif
 
 #include "quartz/quartzCommon.h"
 #include "quartz/cr/cr.h"
diff --git a/hw/darwin/quartz/cr/crFrame.m b/hw/darwin/quartz/cr/crFrame.m
index 79697fb..86c75d2 100644
--- a/hw/darwin/quartz/cr/crFrame.m
+++ b/hw/darwin/quartz/cr/crFrame.m
@@ -27,7 +27,9 @@
  * use or other dealings in this Software without prior written authorization.
  */
 
+#ifdef HAVE_DIX_CONFIG_H
 #include <dix-config.h>
+#endif
 
 #include "quartz/quartzCommon.h"
 #include "quartz/cr/cr.h"
diff --git a/hw/darwin/quartz/cr/crScreen.m b/hw/darwin/quartz/cr/crScreen.m
index 504e7b3..cc82afb 100644
--- a/hw/darwin/quartz/cr/crScreen.m
+++ b/hw/darwin/quartz/cr/crScreen.m
@@ -27,7 +27,9 @@
  * use or other dealings in this Software without prior written authorization.
  */
 
+#ifdef HAVE_DIX_CONFIG_H
 #include <dix-config.h>
+#endif
 
 #include "quartz/quartzCommon.h"
 #include "quartz/cr/cr.h"
diff --git a/hw/darwin/quartz/fullscreen/fullscreen.c b/hw/darwin/quartz/fullscreen/fullscreen.c
index 2021ea2..c4a049f 100644
--- a/hw/darwin/quartz/fullscreen/fullscreen.c
+++ b/hw/darwin/quartz/fullscreen/fullscreen.c
@@ -26,7 +26,9 @@
  * use or other dealings in this Software without prior written authorization.
  */
 
+#ifdef HAVE_DIX_CONFIG_H
 #include <dix-config.h>
+#endif
 
 #include "quartz/quartzCommon.h"
 #include "darwin.h"
diff --git a/hw/darwin/quartz/fullscreen/quartzCursor.c b/hw/darwin/quartz/fullscreen/quartzCursor.c
index 5247781..3ffa1c3 100644
--- a/hw/darwin/quartz/fullscreen/quartzCursor.c
+++ b/hw/darwin/quartz/fullscreen/quartzCursor.c
@@ -28,7 +28,9 @@
  * use or other dealings in this Software without prior written authorization.
  */
 
+#ifdef HAVE_DIX_CONFIG_H
 #include <dix-config.h>
+#endif
 
 #include "quartz/quartzCommon.h"
 #include "quartz/quartzCursor.h"
diff --git a/hw/darwin/quartz/pseudoramiX.c b/hw/darwin/quartz/pseudoramiX.c
index 787601b..b19c605 100644
--- a/hw/darwin/quartz/pseudoramiX.c
+++ b/hw/darwin/quartz/pseudoramiX.c
@@ -33,10 +33,11 @@ dealings in this Software without prior written authorization from Digital
 Equipment Corporation.
 ******************************************************************/
 
-#include "pseudoramiX.h"
-
+#ifdef HAVE_DIX_CONFIG_H
 #include <dix-config.h>
+#endif
 
+#include "pseudoramiX.h"
 #include "extnsionst.h"
 #include "dixstruct.h"
 #include "window.h"
diff --git a/hw/darwin/quartz/quartz.c b/hw/darwin/quartz/quartz.c
index c95880c..2483d12 100644
--- a/hw/darwin/quartz/quartz.c
+++ b/hw/darwin/quartz/quartz.c
@@ -28,7 +28,9 @@
  * use or other dealings in this Software without prior written authorization.
  */
 
+#ifdef HAVE_DIX_CONFIG_H
 #include <dix-config.h>
+#endif
 
 #include "quartzCommon.h"
 #include "quartz.h"
diff --git a/hw/darwin/quartz/quartzAudio.c b/hw/darwin/quartz/quartzAudio.c
index 8a337da..1eb099b 100644
--- a/hw/darwin/quartz/quartzAudio.c
+++ b/hw/darwin/quartz/quartzAudio.c
@@ -36,7 +36,9 @@
  * use or other dealings in this Software without prior written authorization.
  */
 
+#ifdef HAVE_DIX_CONFIG_H
 #include <dix-config.h>
+#endif
 
 #include "quartzCommon.h"
 #include "quartzAudio.h"
diff --git a/hw/darwin/quartz/quartzCocoa.m b/hw/darwin/quartz/quartzCocoa.m
index 48cadc6..0086c5c 100644
--- a/hw/darwin/quartz/quartzCocoa.m
+++ b/hw/darwin/quartz/quartzCocoa.m
@@ -32,7 +32,9 @@
  * use or other dealings in this Software without prior written authorization.
  */
 
+#ifdef HAVE_DIX_CONFIG_H
 #include <dix-config.h>
+#endif
 
 #include "quartzCommon.h"
 
diff --git a/hw/darwin/quartz/quartzCursor.c b/hw/darwin/quartz/quartzCursor.c
index 15f5553..6e86acb 100644
--- a/hw/darwin/quartz/quartzCursor.c
+++ b/hw/darwin/quartz/quartzCursor.c
@@ -28,7 +28,9 @@
  * use or other dealings in this Software without prior written authorization.
  */
 
+#ifdef HAVE_DIX_CONFIG_H
 #include <dix-config.h>
+#endif
 
 #include "quartzCommon.h"
 #include "quartzCursor.h"
diff --git a/hw/darwin/quartz/quartzKeyboard.c b/hw/darwin/quartz/quartzKeyboard.c
index 49c5bfd..b87249f 100644
--- a/hw/darwin/quartz/quartzKeyboard.c
+++ b/hw/darwin/quartz/quartzKeyboard.c
@@ -31,7 +31,9 @@
    prior written authorization.
 */
 
+#ifdef HAVE_DIX_CONFIG_H
 #include <dix-config.h>
+#endif
 
 #include "quartzCommon.h"
 
diff --git a/hw/darwin/quartz/quartzPasteboard.c b/hw/darwin/quartz/quartzPasteboard.c
index 2130197..0cecff5 100644
--- a/hw/darwin/quartz/quartzPasteboard.c
+++ b/hw/darwin/quartz/quartzPasteboard.c
@@ -30,7 +30,9 @@
  * use or other dealings in this Software without prior written authorization.
  */
 
+#ifdef HAVE_DIX_CONFIG_H
 #include <dix-config.h>
+#endif
 
 #include "quartzPasteboard.h"
 
diff --git a/hw/darwin/quartz/quartzStartup.c b/hw/darwin/quartz/quartzStartup.c
index 6f45949..e20c16b 100644
--- a/hw/darwin/quartz/quartzStartup.c
+++ b/hw/darwin/quartz/quartzStartup.c
@@ -27,6 +27,10 @@
  * use or other dealings in this Software without prior written authorization.
  */
 
+#ifdef HAVE_DIX_CONFIG_H
+#include <dix-config.h>
+#endif
+
 #include <fcntl.h>
 #include <unistd.h>
 #include <CoreFoundation/CoreFoundation.h>
@@ -35,7 +39,14 @@
 #include "quartz.h"
 #include "opaque.h"
 #include "micmap.h"
+
+#ifdef NDEBUG
+#undef NDEBUG
+#include <assert.h>
+#define NDEBUG 1
+#else
 #include <assert.h>
+#endif
 
 char **envpGlobal;      // argcGlobal and argvGlobal
                         // are from dix/globals.c
diff --git a/hw/darwin/quartz/xpr/Makefile.am b/hw/darwin/quartz/xpr/Makefile.am
index 8f482f1..8980ad7 100644
--- a/hw/darwin/quartz/xpr/Makefile.am
+++ b/hw/darwin/quartz/xpr/Makefile.am
@@ -1,7 +1,6 @@
 noinst_LIBRARIES = libxpr.a
 AM_CFLAGS =  $(XSERVER_CFLAGS) $(DIX_CFLAGS)
 AM_CPPFLAGS = \
-	   -DHAVE_XORG_CONFIG_H \
 	   -I$(srcdir) -I$(srcdir)/.. -I$(srcdir)/../.. \
 	   -I$(top_srcdir)/miext \
 	   -I$(top_srcdir)/miext/rootless \
diff --git a/hw/darwin/quartz/xpr/appledri.c b/hw/darwin/quartz/xpr/appledri.c
index 45d1a7e..95a4439 100644
--- a/hw/darwin/quartz/xpr/appledri.c
+++ b/hw/darwin/quartz/xpr/appledri.c
@@ -35,7 +35,9 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
  *
  */
 
+#ifdef HAVE_DIX_CONFIG_H
 #include <dix-config.h>
+#endif
 
 #define NEED_REPLIES
 #define NEED_EVENTS
diff --git a/hw/darwin/quartz/xpr/dri.c b/hw/darwin/quartz/xpr/dri.c
index 4ade249..e5591ab 100644
--- a/hw/darwin/quartz/xpr/dri.c
+++ b/hw/darwin/quartz/xpr/dri.c
@@ -34,7 +34,9 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
  *
  */
 
+#ifdef HAVE_DIX_CONFIG_H
 #include <dix-config.h>
+#endif
 
 #ifdef XFree86LOADER
 #include "xf86.h"
diff --git a/hw/darwin/quartz/xpr/x-hash.c b/hw/darwin/quartz/xpr/x-hash.c
index d24e05c..55d28ba 100644
--- a/hw/darwin/quartz/xpr/x-hash.c
+++ b/hw/darwin/quartz/xpr/x-hash.c
@@ -27,7 +27,9 @@
    promote the sale, use or other dealings in this Software without
    prior written authorization. */
 
+#ifdef HAVE_DIX_CONFIG_H
 #include <dix-config.h>
+#endif
 
 #include "x-hash.h"
 #include "x-list.h"
diff --git a/hw/darwin/quartz/xpr/x-hook.c b/hw/darwin/quartz/xpr/x-hook.c
index e38d0ed..bb873bb 100644
--- a/hw/darwin/quartz/xpr/x-hook.c
+++ b/hw/darwin/quartz/xpr/x-hook.c
@@ -27,7 +27,9 @@
    promote the sale, use or other dealings in this Software without
    prior written authorization. */
 
+#ifdef HAVE_DIX_CONFIG_H
 #include <dix-config.h>
+#endif
 
 #include "x-hook.h"
 #include <stdlib.h>
diff --git a/hw/darwin/quartz/xpr/x-list.c b/hw/darwin/quartz/xpr/x-list.c
index 356bb79..3596dd3 100644
--- a/hw/darwin/quartz/xpr/x-list.c
+++ b/hw/darwin/quartz/xpr/x-list.c
@@ -27,7 +27,9 @@
    promote the sale, use or other dealings in this Software without
    prior written authorization. */
 
+#ifdef HAVE_DIX_CONFIG_H
 #include <dix-config.h>
+#endif
 
 #include "x-list.h"
 #include <stdlib.h>
diff --git a/hw/darwin/quartz/xpr/xprAppleWM.c b/hw/darwin/quartz/xpr/xprAppleWM.c
index f639b55..5539c51 100644
--- a/hw/darwin/quartz/xpr/xprAppleWM.c
+++ b/hw/darwin/quartz/xpr/xprAppleWM.c
@@ -27,7 +27,9 @@
  * use or other dealings in this Software without prior written authorization.
  */
 
+#ifdef HAVE_DIX_CONFIG_H
 #include <dix-config.h>
+#endif
 
 #include "xpr.h"
 #include "quartz/applewmExt.h"
diff --git a/hw/darwin/quartz/xpr/xprCursor.c b/hw/darwin/quartz/xpr/xprCursor.c
index 9892bcd..160b5d9 100644
--- a/hw/darwin/quartz/xpr/xprCursor.c
+++ b/hw/darwin/quartz/xpr/xprCursor.c
@@ -29,7 +29,9 @@
  * use or other dealings in this Software without prior written authorization.
  */
 
+#ifdef HAVE_DIX_CONFIG_H
 #include <dix-config.h>
+#endif
 
 #include "quartz/quartzCommon.h"
 #include "xpr.h"
diff --git a/hw/darwin/quartz/xpr/xprFrame.c b/hw/darwin/quartz/xpr/xprFrame.c
index ddb6d2d..1b0ba91 100644
--- a/hw/darwin/quartz/xpr/xprFrame.c
+++ b/hw/darwin/quartz/xpr/xprFrame.c
@@ -27,7 +27,9 @@
  * use or other dealings in this Software without prior written authorization.
  */
 
+#ifdef HAVE_DIX_CONFIG_H
 #include <dix-config.h>
+#endif
 
 #include "xpr.h"
 #include "rootlessCommon.h"
diff --git a/hw/darwin/quartz/xpr/xprScreen.c b/hw/darwin/quartz/xpr/xprScreen.c
index b5f382e..28ed159 100644
--- a/hw/darwin/quartz/xpr/xprScreen.c
+++ b/hw/darwin/quartz/xpr/xprScreen.c
@@ -27,7 +27,9 @@
  * use or other dealings in this Software without prior written authorization.
  */
 
+#ifdef HAVE_DIX_CONFIG_H
 #include <dix-config.h>
+#endif
 
 #include "quartz/quartzCommon.h"
 #include "quartz/quartz.h"
commit 38397560612424b5b348f34c1a0bea8c47a574be
Author: Jeremy Huddleston <jeremy at yuffie.local>
Date:   Wed Nov 28 23:07:41 2007 -0800

    Darwin: Removed support for darwinSwapAltMeta
    (cherry picked from commit 3d153c8fa40986d194b7701f5eafa0080e32399a)

diff --git a/hw/darwin/darwin.c b/hw/darwin/darwin.c
index b08770c..87edd9a 100644
--- a/hw/darwin/darwin.c
+++ b/hw/darwin/darwin.c
@@ -100,7 +100,6 @@ int                     darwinDesiredDepth = -1;
 int                     darwinDesiredRefresh = -1;
 char                    *darwinKeymapFile = "USA.keymapping";
 int                     darwinSyncKeymap = FALSE;
-int                     darwinSwapAltMeta = FALSE;
 
 // modifier masks for faking mouse buttons
 int                     darwinFakeMouse2Mask = NX_ALTERNATEMASK;
@@ -766,11 +765,6 @@ int ddxProcessArgument( int argc, char *argv[], int i )
         return 2;
     }
 
-    if ( !strcmp( argv[i], "-swapAltMeta" ) ) {
-        darwinSwapAltMeta = 1;
-        return 1;
-    }
-
     if ( !strcmp( argv[i], "-keymap" ) ) {
         if ( i == argc-1 ) {
             FatalError( "-keymap must be followed by a filename\n" );
diff --git a/hw/darwin/darwin.h b/hw/darwin/darwin.h
index e2e4829..4f11847 100644
--- a/hw/darwin/darwin.h
+++ b/hw/darwin/darwin.h
@@ -27,7 +27,7 @@
 #ifndef _DARWIN_H
 #define _DARWIN_H
 
-// #include "dix-config.h" // This makes us crash for some reason...
+//#include "dix-config.h" // This crashes us for some reason...
 #define SHAPE
 
 #include <IOKit/IOTypes.h>
@@ -113,7 +113,6 @@ extern int              darwinMouseAccelChange;
 extern int              darwinFakeButtons;
 extern int              darwinFakeMouse2Mask;
 extern int              darwinFakeMouse3Mask;
-extern int              darwinSwapAltMeta;
 extern char            *darwinKeymapFile;
 extern int              darwinSyncKeymap;
 extern unsigned int     darwinDesiredWidth, darwinDesiredHeight;
diff --git a/hw/darwin/darwinKeyboard.c b/hw/darwin/darwinKeyboard.c
index 47acb65..b51e2da 100644
--- a/hw/darwin/darwinKeyboard.c
+++ b/hw/darwin/darwinKeyboard.c
@@ -58,10 +58,7 @@
 
 // Define this to get a diagnostic output to stderr which is helpful
 // in determining how the X server is interpreting the Darwin keymap.
-#undef DUMP_DARWIN_KEYMAP
-
-/* Define this to use Alt for Mode_switch. */
-//#define ALT_IS_MODE_SWITCH 1
+#define DUMP_DARWIN_KEYMAP
 
 #include <stdio.h>
 #include <stdlib.h>
@@ -77,9 +74,6 @@
 #define MetaMask        Mod2Mask
 #define FunctionMask    Mod3Mask
 
-// FIXME: It would be nice to support some of the extra keys in XF86keysym.h,
-// at least the volume controls that now ship on every Apple keyboard.
-
 #define UK(a)           NoSymbol    // unknown symbol
 
 static KeySym const next_to_x[256] = {
@@ -513,7 +507,7 @@ Bool DarwinParseNXKeyMapping(
                         break;
                     case NX_MODIFIERKEY_ALTERNATE:
                         info->keyMap[keyCode * GLYPHS_PER_KEY] =
-                                (left ? XK_Mode_switch : XK_Alt_R);
+                                (left ? XK_Alt_L : XK_Alt_R);
                         break;
                     case NX_MODIFIERKEY_COMMAND:
                         info->keyMap[keyCode * GLYPHS_PER_KEY] =
@@ -638,27 +632,23 @@ Bool DarwinParseNXKeyMapping(
     return TRUE;
 }
 
-
 /*
  * DarwinBuildModifierMaps
  *      Use the keyMap field of keyboard info structure to populate
  *      the modMap and modifierKeycodes fields.
  */
 static void
-DarwinBuildModifierMaps(
-    darwinKeyboardInfo *info)
-{
+DarwinBuildModifierMaps(darwinKeyboardInfo *info) {
     int i;
     KeySym *k;
 
     memset(info->modMap, NoSymbol, sizeof(info->modMap));
     memset(info->modifierKeycodes, 0, sizeof(info->modifierKeycodes));
 
-    for (i = 0; i < NUM_KEYCODES; i++)
-    {
+    for (i = 0; i < NUM_KEYCODES; i++) {
         k = info->keyMap + i * GLYPHS_PER_KEY;
 
-        switch (k[0]) {
+        switch (*k) {
             case XK_Shift_L:
                 info->modifierKeycodes[NX_MODIFIERKEY_SHIFT][0] = i;
                 info->modMap[MIN_KEYCODE + i] = ShiftMask;
@@ -728,34 +718,9 @@ DarwinBuildModifierMaps(
                 info->modMap[MIN_KEYCODE + i] = Mod3Mask;
                 break;
         }
-
-        if (darwinSwapAltMeta)
-        {
-            switch (k[0])
-            {
-            case XK_Alt_L:
-                k[0] = XK_Meta_L;
-                break;
-            case XK_Alt_R:
-                k[0] = XK_Meta_R;
-                break;
-            case XK_Meta_L:
-                k[0] = XK_Alt_L;
-                break;
-            case XK_Meta_R:
-                k[0] = XK_Alt_R;
-                break;
-            }
-        }
-
-#if ALT_IS_MODE_SWITCH
-        if (k[0] == XK_Alt_L)
-            k[0] = XK_Mode_switch;
-#endif
     }
 }
 
-
 /*
  * DarwinLoadKeyboardMapping
  *  Load the keyboard map from a file or system and convert
@@ -764,9 +729,17 @@ DarwinBuildModifierMaps(
 static void
 DarwinLoadKeyboardMapping(KeySymsRec *keySyms)
 {
+    int i;
+    KeySym *k;
+
     memset(keyInfo.keyMap, 0, sizeof(keyInfo.keyMap));
 
+    /* TODO: Clean this up
+     * DarwinModeReadSystemKeymap is in quartz/quartzKeyboard.c
+     * DarwinParseNXKeyMapping is here
+     */
     if (!DarwinParseNXKeyMapping(&keyInfo)) {
+        DEBUG_LOG("DarwinParseNXKeyMapping returned 0... running DarwinModeReadSystemKeymap().\n");
         if (!DarwinModeReadSystemKeymap(&keyInfo)) {
             FatalError("Could not build a valid keymap.");
         }
@@ -775,20 +748,18 @@ DarwinLoadKeyboardMapping(KeySymsRec *keySyms)
     DarwinBuildModifierMaps(&keyInfo);
 
 #ifdef DUMP_DARWIN_KEYMAP
-    ErrorF("Darwin -> X converted keyboard map\n");
-    for (i = 0, k = info->keyMap; i < NX_NUMKEYCODES;
+    DEBUG_LOG("Darwin -> X converted keyboard map\n");
+    for (i = 0, k = keyInfo.keyMap; i < NX_NUMKEYCODES;
          i++, k += GLYPHS_PER_KEY)
     {
         int j;
-        ErrorF("0x%02x:", i);
         for (j = 0; j < GLYPHS_PER_KEY; j++) {
             if (k[j] == NoSymbol) {
-                ErrorF("\tNoSym");
+                DEBUG_LOG("0x%02x:\tNoSym\n", i);
             } else {
-                ErrorF("\t0x%x", k[j]);
+                DEBUG_LOG("0x%02x:\t0x%lx\n", i, k[j]);
             }
         }
-        ErrorF("\n");
     }
 #endif
 
@@ -937,32 +908,6 @@ int DarwinModifierNXKeycodeToNXKey(unsigned char keycode, int *outSide)
 }
 
 /*
- * DarwinModifierNXMaskToNXKeyCode
- *      Returns 0 if mask is not a known modifier mask.
- */
-int DarwinModifierNXMaskToNXKeyCode(int mask)
-{
-  switch (mask) {
-  case NX_ALPHASHIFTMASK:       return XK_Caps_Lock;
-  case NX_SHIFTMASK: ErrorF("Warning: Received NX_SHIFTMASK, treating as NX_DEVICELSHIFTKEYMASK\n");
-  case NX_DEVICELSHIFTKEYMASK:  return NX_MODIFIERKEY_SHIFT; //XK_Shift_L;
-  case NX_DEVICERSHIFTKEYMASK:  return NX_MODIFIERKEY_RSHIFT; //XK_Shift_R;
-  case NX_CONTROLMASK: ErrorF("Warning: Received NX_CONTROLMASK, treating as NX_DEVICELCTLKEYMASK\n");
-  case NX_DEVICELCTLKEYMASK:    return XK_Control_L;
-  case NX_DEVICERCTLKEYMASK:    return XK_Control_R;
-  case NX_ALTERNATEMASK: ErrorF("Warning: Received NX_ALTERNATEMASK, treating as NX_DEVICELALTKEYMASK\n");
-  case NX_DEVICELALTKEYMASK:    return XK_Alt_L;
-  case NX_DEVICERALTKEYMASK:    return XK_Alt_R;
-  case NX_COMMANDMASK: ErrorF("Warning: Received NX_COMMANDMASK, treating as NX_DEVICELCMDKEYMASK\n");
-  case NX_DEVICELCMDKEYMASK:    return XK_Meta_L;
-  case NX_DEVICERCMDKEYMASK:    return XK_Meta_R;
-  case NX_NUMERICPADMASK:       return XK_Num_Lock;
-  case NX_HELPMASK:             return XK_Help;
-  case NX_SECONDARYFNMASK:      return XK_Control_L; // this seems very wrong, but is what the old code did
-    }
-}
-
-/*
  * DarwinModifierNXMaskToNXKey
  *      Returns -1 if mask is not a known modifier mask.
  */
@@ -997,25 +942,25 @@ int DarwinModifierNXMaskToNXKey(int mask)
     return -1;
 }
 
-char * DarwinModifierNXMaskTostring(int mask)
+const char *DarwinModifierNXMaskTostring(int mask)
 {
     switch (mask) {
-    case NX_ALPHASHIFTMASK: return "NX_ALPHASHIFTMASK";
-    case NX_SHIFTMASK: return "NX_SHIFTMASK";
-    case NX_DEVICELSHIFTKEYMASK: return "NX_DEVICELSHIFTKEYMASK";
-    case NX_DEVICERSHIFTKEYMASK: return "NX_DEVICERSHIFTKEYMASK";
-    case NX_CONTROLMASK: return "NX_CONTROLMASK";
-    case NX_DEVICELCTLKEYMASK: return "NX_DEVICELCTLKEYMASK";
-    case NX_DEVICERCTLKEYMASK: return "NX_DEVICERCTLKEYMASK";
-    case NX_ALTERNATEMASK: return "NX_ALTERNATEMASK";
-    case NX_DEVICELALTKEYMASK: return "NX_DEVICELALTKEYMASK";
-    case NX_DEVICERALTKEYMASK: return "NX_DEVICERALTKEYMASK";
-    case NX_COMMANDMASK: return "NX_COMMANDMASK";
-    case NX_DEVICELCMDKEYMASK: return "NX_DEVICELCMDKEYMASK";
-    case NX_DEVICERCMDKEYMASK: return "NX_DEVICERCMDKEYMASK";
-    case NX_NUMERICPADMASK: return "NX_NUMERICPADMASK";
-    case NX_HELPMASK: return "NX_HELPMASK";
-    case NX_SECONDARYFNMASK: return "NX_SECONDARYFNMASK";
+        case NX_ALPHASHIFTMASK:      return "NX_ALPHASHIFTMASK";
+        case NX_SHIFTMASK:           return "NX_SHIFTMASK";
+        case NX_DEVICELSHIFTKEYMASK: return "NX_DEVICELSHIFTKEYMASK";
+        case NX_DEVICERSHIFTKEYMASK: return "NX_DEVICERSHIFTKEYMASK";
+        case NX_CONTROLMASK:         return "NX_CONTROLMASK";
+        case NX_DEVICELCTLKEYMASK:   return "NX_DEVICELCTLKEYMASK";
+        case NX_DEVICERCTLKEYMASK:   return "NX_DEVICERCTLKEYMASK";
+        case NX_ALTERNATEMASK:       return "NX_ALTERNATEMASK";
+        case NX_DEVICELALTKEYMASK:   return "NX_DEVICELALTKEYMASK";
+        case NX_DEVICERALTKEYMASK:   return "NX_DEVICERALTKEYMASK";
+        case NX_COMMANDMASK:         return "NX_COMMANDMASK";
+        case NX_DEVICELCMDKEYMASK:   return "NX_DEVICELCMDKEYMASK";
+        case NX_DEVICERCMDKEYMASK:   return "NX_DEVICERCMDKEYMASK";
+        case NX_NUMERICPADMASK:      return "NX_NUMERICPADMASK";
+        case NX_HELPMASK:            return "NX_HELPMASK";
+        case NX_SECONDARYFNMASK:     return "NX_SECONDARYFNMASK";
     }
     return "unknown mask";
 }
diff --git a/hw/darwin/quartz/X11Application.m b/hw/darwin/quartz/X11Application.m
index 60d11c5..a43d536 100644
--- a/hw/darwin/quartz/X11Application.m
+++ b/hw/darwin/quartz/X11Application.m
@@ -612,9 +612,6 @@ static NSMutableArray * cfarray_to_nsarray (CFArrayRef in) {
     quartzXpluginOptions = [self prefs_get_integer:@PREFS_XP_OPTIONS
                             default:quartzXpluginOptions];
 #endif
-	
-    darwinSwapAltMeta = [self prefs_get_boolean:@PREFS_SWAP_ALT_META
-                         default:darwinSwapAltMeta];
     darwinFakeButtons = [self prefs_get_boolean:@PREFS_FAKEBUTTONS
                          default:darwinFakeButtons];
     if (darwinFakeButtons) {
commit 89c3dfe41e3a17a4f27b20e23623dc5777670feb
Author: Dave Airlie <airlied at redhat.com>
Date:   Thu Nov 29 19:57:24 2007 +1100

    modes: use xf86RandR12Index to stop illegal access
    
    xf86RandR12Index set to -1, and if initialised it gets 0 or higher.
    This allows the server to start with xinerama turned on with only one head

diff --git a/hw/xfree86/modes/xf86RandR12.c b/hw/xfree86/modes/xf86RandR12.c
index 8fbb877..bb7f945 100644
--- a/hw/xfree86/modes/xf86RandR12.c
+++ b/hw/xfree86/modes/xf86RandR12.c
@@ -59,7 +59,7 @@ static Bool xf86RandR12Init12 (ScreenPtr pScreen);
 static Bool xf86RandR12CreateScreenResources12 (ScreenPtr pScreen);
 #endif
 
-static int	    xf86RandR12Index;
+static int	    xf86RandR12Index = -1;
 static int	    xf86RandR12Generation;
 
 #define XF86RANDRINFO(p) \
@@ -340,10 +340,12 @@ xf86RandR12ScreenSetSize (ScreenPtr	pScreen,
     PixmapPtr		pScrnPix = (*pScreen->GetScreenPixmap)(pScreen);
     Bool		ret = FALSE;
 
-    if (randrp->virtualX == -1 || randrp->virtualY == -1)
-    {
-	randrp->virtualX = pScrn->virtualX;
-	randrp->virtualY = pScrn->virtualY;
+    if (xf86RandR12Index != -1) {
+        if (randrp->virtualX == -1 || randrp->virtualY == -1)
+        {
+	    randrp->virtualX = pScrn->virtualX;
+	    randrp->virtualY = pScrn->virtualY;
+        }
     }
     if (pRoot && pScrn->vtSema)
 	(*pScrn->EnableDisableFBAccess) (pScreen->myNum, FALSE);
@@ -366,7 +368,7 @@ finish:
     if (pRoot && pScrn->vtSema)
 	(*pScrn->EnableDisableFBAccess) (pScreen->myNum, TRUE);
 #if RANDR_12_INTERFACE
-    if (WindowTable[pScreen->myNum] && ret)
+    if ((xf86RandR12Index != -1) && WindowTable[pScreen->myNum] && ret)
 	RRScreenSizeNotify (pScreen);
 #endif
     return ret;
@@ -466,6 +468,9 @@ xf86RandR12CreateScreenResources (ScreenPtr pScreen)
 				  mmHeight);
     }
 
+    if (xf86RandR12Index == -1)
+	return TRUE;
+
     if (randrp->virtualX == -1 || randrp->virtualY == -1)
     {
 	randrp->virtualX = pScrn->virtualX;
@@ -533,15 +538,17 @@ xf86RandR12Init (ScreenPtr pScreen)
 _X_EXPORT void
 xf86RandR12SetRotations (ScreenPtr pScreen, Rotation rotations)
 {
-    XF86RandRInfoPtr	randrp = XF86RANDRINFO(pScreen);
+    XF86RandRInfoPtr	randrp;
 #if RANDR_12_INTERFACE
     ScrnInfoPtr		pScrn = xf86Screens[pScreen->myNum];
     int			c;
     xf86CrtcConfigPtr   config = XF86_CRTC_CONFIG_PTR(pScrn);
 #endif
-    if (!xf86RandR12Index)
+
+    if (xf86RandR12Index == -1)
 	return;
 
+    randrp = XF86RANDRINFO(pScreen);
 #if RANDR_12_INTERFACE
     for (c = 0; c < config->num_crtc; c++) {
 	xf86CrtcPtr    crtc = config->crtc[c];
@@ -1066,11 +1073,10 @@ static Bool
 xf86RandR12CreateScreenResources12 (ScreenPtr pScreen)
 {
     int			c;
-    XF86RandRInfoPtr	randrp = XF86RANDRINFO(pScreen);
     ScrnInfoPtr		pScrn = xf86Screens[pScreen->myNum];
     xf86CrtcConfigPtr   config = XF86_CRTC_CONFIG_PTR(pScrn);
 
-    if (!xf86RandR12Index)
+    if (xf86RandR12Index == -1)
 	return TRUE;
 
     for (c = 0; c < config->num_crtc; c++)
@@ -1091,11 +1097,11 @@ xf86RandR12TellChanged (ScreenPtr pScreen)
 {
     ScrnInfoPtr		pScrn = xf86Screens[pScreen->myNum];
     xf86CrtcConfigPtr   config = XF86_CRTC_CONFIG_PTR(pScrn);
-    XF86RandRInfoPtr	randrp = XF86RANDRINFO(pScreen);
     int			c;
 
-    if (!xf86RandR12Index)
+    if (xf86RandR12Index == -1)
 	return;
+
     xf86RandR12SetInfo12 (pScreen);
     for (c = 0; c < config->num_crtc; c++)
 	xf86RandR12CrtcNotify (config->crtc[c]->randr_crtc);
commit 725710fd0bc990b2c35e4c76128ef1c668013299
Author: Dave Airlie <airlied at redhat.com>
Date:   Thu Nov 29 19:40:53 2007 +1100

    randr: make randr code not segfault when xinerama set

diff --git a/hw/xfree86/modes/xf86RandR12.c b/hw/xfree86/modes/xf86RandR12.c
index 61a7db3..8fbb877 100644
--- a/hw/xfree86/modes/xf86RandR12.c
+++ b/hw/xfree86/modes/xf86RandR12.c
@@ -538,7 +538,11 @@ xf86RandR12SetRotations (ScreenPtr pScreen, Rotation rotations)
     ScrnInfoPtr		pScrn = xf86Screens[pScreen->myNum];
     int			c;
     xf86CrtcConfigPtr   config = XF86_CRTC_CONFIG_PTR(pScrn);
+#endif
+    if (!xf86RandR12Index)
+	return;
 
+#if RANDR_12_INTERFACE
     for (c = 0; c < config->num_crtc; c++) {
 	xf86CrtcPtr    crtc = config->crtc[c];
 
@@ -1062,12 +1066,15 @@ static Bool
 xf86RandR12CreateScreenResources12 (ScreenPtr pScreen)
 {
     int			c;
+    XF86RandRInfoPtr	randrp = XF86RANDRINFO(pScreen);
     ScrnInfoPtr		pScrn = xf86Screens[pScreen->myNum];
     xf86CrtcConfigPtr   config = XF86_CRTC_CONFIG_PTR(pScrn);
 
+    if (!xf86RandR12Index)
+	return TRUE;
+
     for (c = 0; c < config->num_crtc; c++)
-	xf86RandR12CrtcNotify (config->crtc[c]->randr_crtc);
-    
+        xf86RandR12CrtcNotify (config->crtc[c]->randr_crtc);
     
     RRScreenSetSizeRange (pScreen, config->minWidth, config->minHeight,
 			  config->maxWidth, config->maxHeight);
@@ -1087,7 +1094,7 @@ xf86RandR12TellChanged (ScreenPtr pScreen)
     XF86RandRInfoPtr	randrp = XF86RANDRINFO(pScreen);
     int			c;
 
-    if (!randrp)
+    if (!xf86RandR12Index)
 	return;
     xf86RandR12SetInfo12 (pScreen);
     for (c = 0; c < config->num_crtc; c++)
commit 23b8ca8a373d919225de9739af7b064f650eceec
Author: Adam Jackson <ajax at redhat.com>
Date:   Tue Nov 27 13:20:40 2007 -0500

    RANDR 1.2: Only enable unknown outputs if there are no connected outputs.
    
    Otherwise you end up with a confusing initial geometry, and xscreensaver
    and friends get very angry.

diff --git a/hw/xfree86/modes/xf86Crtc.c b/hw/xfree86/modes/xf86Crtc.c
index 8595d96..fc80f52 100644
--- a/hw/xfree86/modes/xf86Crtc.c
+++ b/hw/xfree86/modes/xf86Crtc.c
@@ -463,7 +463,7 @@ xf86OutputSetMonitor (xf86OutputPtr output)
 }
 
 static Bool
-xf86OutputEnabled (xf86OutputPtr output)
+xf86OutputEnabled (xf86OutputPtr output, Bool strict)
 {
     Bool    enable, disable;
 
@@ -481,8 +481,16 @@ xf86OutputEnabled (xf86OutputPtr output)
 		    "Output %s disabled by config file\n", output->name);
 	return FALSE;
     }
-    /* otherwise, enable if it is not disconnected */
-    enable = output->status != XF86OutputStatusDisconnected;
+
+    /* If not, try to only light up the ones we know are connected */
+    if (strict) {
+	enable = output->status == XF86OutputStatusConnected;
+    }
+    /* But if that fails, try to light up even outputs we're unsure of */
+    else {
+	enable = output->status != XF86OutputStatusDisconnected;
+    }
+
     xf86DrvMsg (output->scrn->scrnIndex, X_INFO,
     	    "Output %s %sconnected\n", output->name, enable ? "" : "dis");
     return enable;
@@ -1571,7 +1579,7 @@ xf86InitialConfiguration (ScrnInfoPtr scrn, Bool canGrow)
     Rotation		target_rotation = RR_Rotate_0;
     xf86CrtcPtr		*crtcs;
     DisplayModePtr	*modes;
-    Bool		*enabled;
+    Bool		*enabled, any_enabled = FALSE;
     int			width;
     int			height;
 
@@ -1604,9 +1612,23 @@ xf86InitialConfiguration (ScrnInfoPtr scrn, Bool canGrow)
 	xf86OutputPtr output = config->output[o];
 	
 	modes[o] = NULL;
-	enabled[o] = xf86OutputEnabled (output);
+	any_enabled |= (enabled[o] = xf86OutputEnabled (output, TRUE));
     }
     
+    if (!any_enabled)
+    {
+	xf86DrvMsg (scrn->scrnIndex, X_WARNING,
+		    "No outputs definitely connected, trying again...\n");
+
+	for (o = 0; o < config->num_output; o++)
+	{
+	    xf86OutputPtr output = config->output[o];
+	
+	    modes[o] = NULL;
+	    enabled[o] = xf86OutputEnabled (output, FALSE);
+	}
+    }
+
     /*
      * User preferred > preferred > other modes
      */
commit edebe76cfdb31072d18a6fcd3ee8f1d95006855f
Author: Peter Hutterer <peter at cs.unisa.edu.au>
Date:   Tue Nov 27 10:22:44 2007 +1030

    Xi: set DeviceXXXState's length fields to the correct size of the struct.
    
    Setting it to the size of a pointer is an interesting but equally wrong
    approach. Luckily Xlib never used this field anyway so nobody got hurt so far.
    
    Spotted by Simon Thum.
    (cherry picked from commit 0f2398d06ce591724e388b3270800c5e22b3de2d)

diff --git a/Xi/getdctl.c b/Xi/getdctl.c
index 8a84e91..7175dc2 100644
--- a/Xi/getdctl.c
+++ b/Xi/getdctl.c
@@ -128,7 +128,7 @@ static void CopySwapDeviceAbsCalib (ClientPtr client, AbsoluteClassPtr dts,
     xDeviceAbsCalibState *calib = (xDeviceAbsCalibState *) buf;
 
     calib->control = DEVICE_ABS_CALIB;
-    calib->length = sizeof(calib);
+    calib->length = sizeof(xDeviceAbsCalibState);
     calib->min_x = dts->min_x;
     calib->max_x = dts->max_x;
     calib->min_y = dts->min_y;
@@ -159,7 +159,7 @@ static void CopySwapDeviceAbsArea (ClientPtr client, AbsoluteClassPtr dts,
     xDeviceAbsAreaState *area = (xDeviceAbsAreaState *) buf;
 
     area->control = DEVICE_ABS_AREA;
-    area->length = sizeof(area);
+    area->length = sizeof(xDeviceAbsAreaState);
     area->offset_x = dts->offset_x;
     area->offset_y = dts->offset_y;
     area->width = dts->width;
@@ -185,7 +185,7 @@ static void CopySwapDeviceCore (ClientPtr client, DeviceIntPtr dev, char *buf)
     xDeviceCoreState *c = (xDeviceCoreState *) buf;
 
     c->control = DEVICE_CORE;
-    c->length = sizeof(c);
+    c->length = sizeof(xDeviceCoreState);
     c->status = dev->coreEvents;
     c->iscore = (dev == inputInfo.keyboard || dev == inputInfo.pointer);
 
@@ -202,7 +202,7 @@ static void CopySwapDeviceEnable (ClientPtr client, DeviceIntPtr dev, char *buf)
     xDeviceEnableState *e = (xDeviceEnableState *) buf;
 
     e->control = DEVICE_ENABLE;
-    e->length = sizeof(e);
+    e->length = sizeof(xDeviceEnableState);
     e->enable = dev->enabled;
 
     if (client->swapped) {
commit 601307615e4955be23fd86a057285074242ad83e
Author: Jeremy Huddleston <jeremy at yuffie.local>
Date:   Mon Nov 26 13:04:57 2007 -0800

    Darwin,Rootless: Makefile cleanup
    (cherry picked from commit 9c6d8a035b712b219833653ac637b89703a9b0c3)

diff --git a/GL/apple/Makefile.am b/GL/apple/Makefile.am
index 6f0b68d..d3c05cc 100644
--- a/GL/apple/Makefile.am
+++ b/GL/apple/Makefile.am
@@ -1,9 +1,12 @@
+AM_CFLAGS = $(DIX_CFLAGS)
 AM_CPPFLAGS = \
 	-I$(top_srcdir) \
 	-I$(top_srcdir)/GL/glx \
 	-I$(top_srcdir)/GL/include \
+	-I$(top_srcdir)/GL/mesa/glapi \
 	-I$(top_srcdir)/hw/darwin/quartz \
-	-I$(top_srcdir)/hw/darwin/quartz/cr
+	-I$(top_srcdir)/hw/darwin/quartz/cr \
+	-I$(top_srcdir)/miext/damage
 
 if HAVE_AGL_FRAMEWORK
 noinst_LIBRARIES = libAGLcore.a 
diff --git a/configure.ac b/configure.ac
index b81d786..5150c18 100644
--- a/configure.ac
+++ b/configure.ac
@@ -2164,6 +2164,8 @@ hw/xgl/glxext/module/Makefile
 hw/xnest/Makefile
 hw/xwin/Makefile
 hw/darwin/Makefile
+hw/darwin/apple/Makefile
+hw/darwin/launcher/Makefile
 hw/darwin/quartz/Makefile
 hw/darwin/quartz/xpr/Makefile
 hw/kdrive/Makefile
diff --git a/hw/darwin/Makefile.am b/hw/darwin/Makefile.am
index 62cbecf..1faedcb 100644
--- a/hw/darwin/Makefile.am
+++ b/hw/darwin/Makefile.am
@@ -1,11 +1,16 @@
-AM_CFLAGS = $(XORG_CFLAGS) $(DIX_CFLAGS)
-AM_CPPFLAGS = $(XORG_INCS) \
+AM_CFLAGS = $(XSERVER_CFLAGS) $(DIX_CFLAGS)
+AM_CPPFLAGS = \
 	-DINXQUARTZ \
 	-DUSE_NEW_CLUT \
 	-DXFree86Server \
 	-I$(top_srcdir)/miext/rootless
 
-SUBDIRS = quartz utils
+if X11APP
+X11APP_SUBDIRS = apple launcher
+endif
+
+SUBDIRS = quartz utils $(X11APP_SUBDIRS)
+DIST_SUBDIRS = quartz utils apple launcher
 
 bin_PROGRAMS = Xquartz
 man1_MANS = Xquartz.man
@@ -26,7 +31,6 @@ Xquartz_LDADD = \
 	./quartz/libXquartz.a \
 	./quartz/xpr/libxpr.a \
 	$(top_builddir)/dix/dixfonts.lo \
-	$(top_builddir)/config/libconfig.a \
 	$(top_builddir)/dix/libdix.la \
 	$(top_builddir)/os/libos.la \
 	$(top_builddir)/dix/libxpstubs.la \
@@ -60,47 +64,8 @@ Xquartz_LDFLAGS =  \
 	-Wl,-framework,CoreAudio \
 	-Wl,-framework,IOKit
 
-if X11APP
-bin_SCRIPTS = x11app x11launcher
-
-x11app:
-	cd apple && xcodebuild CFLAGS="$(CFLAGS)" LDFLAGS="$(LDFLAGS)" ARCHS="$(X11APP_ARCHS)"
-
-x11launcher:
-	cd launcher && xcodebuild CFLAGS="$(CFLAGS)" LDFLAGS="$(LDFLAGS)" ARCHS="$(X11APP_ARCHS)"
-
-x11app-install:
-	cd apple && xcodebuild install DSTROOT=$(DESTDIR) INSTALL_PATH=$(prefix) DEPLOYMENT_LOCATION=YES SKIP_INSTALL=NO ARCHS="$(X11APP_ARCHS)"
-
-x11launcher-install:
-	cd launcher && xcodebuild install DSTROOT=$(DESTDIR) INSTALL_PATH=$(APPLE_APPLICATIONS_DIR) DEPLOYMENT_LOCATION=YES SKIP_INSTALL=NO ARCHS="$(X11APP_ARCHS)"
-
-x11app-clean:
-	rm -rf apple/build
-
-x11launcher-clean:
-	rm -rf launcher/build
-
-install-data-hook: x11app-install x11launcher-install
-clean-local: x11app-clean x11launcher-clean
-
-endif
-
 EXTRA_DIST = \
 	Xquartz.man \
 	darwinClut8.h \
 	darwin.h \
-	darwinKeyboard.h \
-	apple/Info.plist \
-	apple/X11.icns \
-	apple/bundle-main.c \
-	apple/English.lproj/InfoPlist.strings \
-	apple/English.lproj/Localizable.strings \
-	apple/English.lproj/main.nib/classes.nib \
-	apple/English.lproj/main.nib/info.nib \
-	apple/English.lproj/main.nib/keyedobjects.nib \
-	apple/X11.xcodeproj/project.pbxproj \
-	launcher/bundle-main.c \
-	launcher/Info.plist \
-	launcher/X11.icns \
-	launcher/X11.xcodeproj/project.pbxproj
+	darwinKeyboard.h
diff --git a/hw/darwin/apple/Makefile.am b/hw/darwin/apple/Makefile.am
new file mode 100644
index 0000000..02a2c25
--- /dev/null
+++ b/hw/darwin/apple/Makefile.am
@@ -0,0 +1,23 @@
+bin_SCRIPTS = x11app
+
+.PHONY: x11app
+
+x11app:
+	xcodebuild CFLAGS="$(CFLAGS)" LDFLAGS="$(LDFLAGS)" ARCHS="$(X11APP_ARCHS)"
+
+install-data-hook:
+	xcodebuild install DSTROOT=$(DESTDIR) INSTALL_PATH=$(prefix) DEPLOYMENT_LOCATION=YES SKIP_INSTALL=NO ARCHS="$(X11APP_ARCHS)"
+
+clean-local:
+	rm -rf build
+
+EXTRA_DIST = \
+	Info.plist \
+	X11.icns \
+	bundle-main.c \
+	English.lproj/InfoPlist.strings \
+	English.lproj/Localizable.strings \
+	English.lproj/main.nib/classes.nib \
+	English.lproj/main.nib/info.nib \
+	English.lproj/main.nib/keyedobjects.nib \
+	X11.xcodeproj/project.pbxproj
diff --git a/hw/darwin/darwin.h b/hw/darwin/darwin.h
index 646bb24..e2e4829 100644
--- a/hw/darwin/darwin.h
+++ b/hw/darwin/darwin.h
@@ -27,7 +27,8 @@
 #ifndef _DARWIN_H
 #define _DARWIN_H
 
-#include "dix-config.h"
+// #include "dix-config.h" // This makes us crash for some reason...
+#define SHAPE
 
 #include <IOKit/IOTypes.h>
 #include "inputstr.h"
diff --git a/hw/darwin/launcher/Makefile.am b/hw/darwin/launcher/Makefile.am
new file mode 100644
index 0000000..c291731
--- /dev/null
+++ b/hw/darwin/launcher/Makefile.am
@@ -0,0 +1,18 @@
+bin_SCRIPTS = x11launcher
+
+.PHONY: x11launcher
+
+x11launcher:
+	xcodebuild CFLAGS="$(CFLAGS)" LDFLAGS="$(LDFLAGS)" ARCHS="$(X11APP_ARCHS)"
+
+install-data-hook:
+	xcodebuild install DSTROOT=$(DESTDIR) INSTALL_PATH=$(APPLE_APPLICATIONS_DIR) DEPLOYMENT_LOCATION=YES SKIP_INSTALL=NO ARCHS="$(X11APP_ARCHS)"
+
+clean-local:
+	rm -rf build
+
+EXTRA_DIST = \
+	bundle-main.c \
+	Info.plist \
+	X11.icns \
+	X11.xcodeproj/project.pbxproj
diff --git a/hw/darwin/quartz/Makefile.am b/hw/darwin/quartz/Makefile.am
index 54e6c30..fe66429 100644
--- a/hw/darwin/quartz/Makefile.am
+++ b/hw/darwin/quartz/Makefile.am
@@ -1,8 +1,8 @@
 noinst_LIBRARIES = libXQuartz.a
 
-AM_CFLAGS = $(XORG_CFLAGS) $(DIX_CFLAGS)
-AM_OBJCFLAGS = $(XORG_CFLAGS) $(DIX_CFLAGS)
-AM_CPPFLAGS = $(XORG_INCS) \
+AM_CFLAGS = $(XSERVER_CFLAGS) $(DIX_CFLAGS)
+AM_OBJCFLAGS = $(XSERVER_CFLAGS) $(DIX_CFLAGS)
+AM_CPPFLAGS = \
 	-DHAS_KL_API \
 	-I$(srcdir) -I$(srcdir)/.. \
 	-I$(top_srcdir)/miext/rootless
diff --git a/hw/darwin/quartz/xpr/Makefile.am b/hw/darwin/quartz/xpr/Makefile.am
index 4fe6e23..8f482f1 100644
--- a/hw/darwin/quartz/xpr/Makefile.am
+++ b/hw/darwin/quartz/xpr/Makefile.am
@@ -1,6 +1,6 @@
 noinst_LIBRARIES = libxpr.a
-AM_CFLAGS =  $(XORG_CFLAGS) $(DIX_CFLAGS)
-AM_CPPFLAGS = $(XORG_INCS) \
+AM_CFLAGS =  $(XSERVER_CFLAGS) $(DIX_CFLAGS)
+AM_CPPFLAGS = \
 	   -DHAVE_XORG_CONFIG_H \
 	   -I$(srcdir) -I$(srcdir)/.. -I$(srcdir)/../.. \
 	   -I$(top_srcdir)/miext \
@@ -9,14 +9,14 @@ AM_CPPFLAGS = $(XORG_INCS) \
 
 libxpr_a_SOURCES = \
 	appledri.c \
-        dri.c \
-        xprAppleWM.c \
-        xprCursor.c \
-        xprFrame.c \
-        xprScreen.c \
-        x-hash.c \
-        x-hook.c \
-        x-list.c
+	dri.c \
+	xprAppleWM.c \
+	xprCursor.c \
+	xprFrame.c \
+	xprScreen.c \
+	x-hash.c \
+	x-hook.c \
+	x-list.c
 
 EXTRA_DIST = \
 	dri.h \
diff --git a/miext/rootless/Makefile.am b/miext/rootless/Makefile.am
index 8dae6d2..aa8528e 100644
--- a/miext/rootless/Makefile.am
+++ b/miext/rootless/Makefile.am
@@ -1,22 +1,19 @@
-AM_CFLAGS =  \
-	    $(DIX_CFLAGS) \
-	    $(XORG_CFLAGS)
-
-INCLUDES = -I$(top_srcdir)/hw/xfree86/os-support
+AM_CFLAGS = $(DIX_CFLAGS) $(XSERVER_CFLAGS)
+AM_CPPFLAGS = -I$(top_srcdir)/hw/xfree86/os-support
 
 SUBDIRS = safeAlpha accel
 
 noinst_LTLIBRARIES = librootless.la
 librootless_la_SOURCES = \
 	rootlessCommon.c \
-	rootlessCommon.h \
-	rootlessConfig.h \
 	rootlessGC.c \
-	rootless.h \
 	rootlessScreen.c \
 	rootlessValTree.c \
-	rootlessWindow.c \
-	rootlessWindow.h 
+	rootlessWindow.c
 
 EXTRA_DIST = \
-	README.txt
+	README.txt \
+	rootless.h \
+	rootlessCommon.h \
+	rootlessConfig.h \
+	rootlessWindow.h 
diff --git a/miext/rootless/accel/Makefile.am b/miext/rootless/accel/Makefile.am
index c49d5fb..ca41653 100644
--- a/miext/rootless/accel/Makefile.am
+++ b/miext/rootless/accel/Makefile.am
@@ -1,18 +1,15 @@
-AM_CFLAGS =  \
-	    $(DIX_CFLAGS) \
-	    $(XORG_CFLAGS)
-
-INCLUDES = -I$(srcdir)/.. -I$(top_srcdir)/hw/xfree86/os-support
-
+AM_CFLAGS = $(DIX_CFLAGS) $(XSERVER_CFLAGS)
+AM_CPPFLAGS = -I$(srcdir)/.. -I$(top_srcdir)/hw/xfree86/os-support
 
 noinst_LTLIBRARIES = librlAccel.la
-librlAccel_la_SOURCES = rlAccel.c \
-	             rlBlt.c \
-	             rlCopy.c \
-	             rlFill.c \
-	             rlFillRect.c \
-	             rlFillSpans.c \
-	             rlGlyph.c \
-	             rlSolid.c
+librlAccel_la_SOURCES = \
+	rlAccel.c \
+	rlBlt.c \
+	rlCopy.c \
+	rlFill.c \
+	rlFillRect.c \
+	rlFillSpans.c \
+	rlGlyph.c \
+	rlSolid.c
 
 EXTRA_DIST = rlAccel.h
diff --git a/miext/rootless/safeAlpha/Makefile.am b/miext/rootless/safeAlpha/Makefile.am
index 823fb77..a22afb6 100644
--- a/miext/rootless/safeAlpha/Makefile.am
+++ b/miext/rootless/safeAlpha/Makefile.am
@@ -1,9 +1,5 @@
-AM_CFLAGS = \
-	    $(DIX_CFLAGS) \
-            $(XORG_CFLAGS)
-
-INCLUDES = -I$(srcdir)/.. -I$(top_srcdir)/hw/xfree86/os-support
-
+AM_CFLAGS = $(DIX_CFLAGS) $(XSERVER_CFLAGS)
+AM_CPPFLAGS = -I$(srcdir)/.. -I$(top_srcdir)/hw/xfree86/os-support
 
 noinst_LTLIBRARIES = libsafeAlpha.la
 libsafeAlpha_la_SOURCES = safeAlphaPicture.c
commit a344920ae86c1970e4cc34ee91e2f2008d490c49
Author: Adam Jackson <ajax at redhat.com>
Date:   Mon Nov 26 11:53:08 2007 -0500

    Allow Virtual to be specified globally in the Screen section.
    
    The Display subsections are optional, and it's confusing to need to create
    them just to set a Virtual size.

diff --git a/hw/xfree86/common/xf86Config.c b/hw/xfree86/common/xf86Config.c
index f58e2a7..622c318 100644
--- a/hw/xfree86/common/xf86Config.c
+++ b/hw/xfree86/common/xf86Config.c
@@ -1958,6 +1958,18 @@ configScreen(confScreenPtr screenp, XF86ConfScreenPtr conf_screen, int scrnum,
     }
     screenp->displays   = xnfalloc((count) * sizeof(DispRec));
     screenp->numdisplays = count;
+    
+    /* Fill in the default Virtual size, if any */
+    if (conf_screen->scrn_virtualX && conf_screen->scrn_virtualY) {
+	for (count = 0, dispptr = conf_screen->scrn_display_lst;
+	     dispptr;
+	     dispptr = (XF86ConfDisplayPtr)dispptr->list.next, count++) {
+	    screenp->displays[count].virtualX = conf_screen->scrn_virtualX;
+	    screenp->displays[count].virtualY = conf_screen->scrn_virtualY;
+	}
+    }
+
+    /* Now do the per-Display Virtual sizes */
     count = 0;
     dispptr = conf_screen->scrn_display_lst;
     while(dispptr) {
diff --git a/hw/xfree86/parser/Screen.c b/hw/xfree86/parser/Screen.c
index 4524f17..ad08c13 100644
--- a/hw/xfree86/parser/Screen.c
+++ b/hw/xfree86/parser/Screen.c
@@ -214,6 +214,7 @@ static xf86ConfigSymTabRec ScreenTab[] =
 	{DEFAULTDEPTH, "defaultdepth"},
 	{DEFAULTBPP, "defaultbpp"},
 	{DEFAULTFBBPP, "defaultfbbpp"},
+	{VIRTUAL, "virtual"},
 	{OPTION, "option"},
 	{-1, ""},
 };
@@ -299,6 +300,14 @@ xf86parseScreenSection (void)
 				}
 			}
 			break;
+		case VIRTUAL:
+			if (xf86getSubToken (&(ptr->scrn_comment)) != NUMBER)
+				Error (VIRTUAL_MSG, NULL);
+			ptr->scrn_virtualX = val.num;
+			if (xf86getSubToken (&(ptr->scrn_comment)) != NUMBER)
+				Error (VIRTUAL_MSG, NULL);
+			ptr->scrn_virtualY = val.num;
+			break;
 		case OPTION:
 			ptr->scrn_option_lst = xf86parseOption(ptr->scrn_option_lst);
 			break;
@@ -364,6 +373,10 @@ xf86printScreenSection (FILE * cf, XF86ConfScreenPtr ptr)
 		{
 			fprintf (cf, "\tVideoAdaptor \"%s\"\n", aptr->al_adaptor_str);
 		}
+		if (ptr->scrn_virtualX && ptr->scrn_virtualY)
+			fprintf (cf, "\tVirtual     %d %d\n",
+				 ptr->scrn_virtualX,
+				 ptr->scrn_virtualY);
 		for (dptr = ptr->scrn_display_lst; dptr; dptr = dptr->list.next)
 		{
 			fprintf (cf, "\tSubSection \"Display\"\n");
diff --git a/hw/xfree86/parser/xf86Parser.h b/hw/xfree86/parser/xf86Parser.h
index a078361..fd6cc53 100644
--- a/hw/xfree86/parser/xf86Parser.h
+++ b/hw/xfree86/parser/xf86Parser.h
@@ -307,6 +307,7 @@ typedef struct
 	XF86ConfDisplayPtr scrn_display_lst;
 	XF86OptionPtr scrn_option_lst;
 	char *scrn_comment;
+	int scrn_virtualX, scrn_virtualY;
 }
 XF86ConfScreenRec, *XF86ConfScreenPtr;
 
commit c6c284e64b1f537a3243856cf78cf3f2324e4c2b
Author: Matthias Hopf <mhopf at suse.de>
Date:   Mon Nov 26 15:38:20 2007 +0100

    Initialize Mode with 0 in xf86RandRModeConvert.
    
    Asking for trouble if non-initialized values contain random data.

diff --git a/hw/xfree86/modes/xf86RandR12.c b/hw/xfree86/modes/xf86RandR12.c
index c1a06b2..61a7db3 100644
--- a/hw/xfree86/modes/xf86RandR12.c
+++ b/hw/xfree86/modes/xf86RandR12.c
@@ -683,11 +683,8 @@ xf86RandRModeConvert (ScrnInfoPtr	scrn,
 		      RRModePtr		randr_mode,
 		      DisplayModePtr	mode)
 {
-    mode->prev = NULL;
-    mode->next = NULL;
-    mode->name = NULL;
+    memset(mode, 0, sizeof(DisplayModeRec));
     mode->status = MODE_OK;
-    mode->type = 0;
 
     mode->Clock = randr_mode->mode.dotClock / 1000;
     
commit 33b94da6327d3423b4ebc1a58d5894c9904e67c9
Author: Keith Packard <keithp at keithp.com>
Date:   Fri Nov 23 16:01:11 2007 -0800

    Re-add call to XFixesExtensionInit for static servers.
    
    This reverts a portion of bcbaf2a0ce34b6c5e41d2831b8b87dbd0617a89b which
    removed the call to XFixesExtensionInit and some cpp lines.

diff --git a/mi/miinitext.c b/mi/miinitext.c
index 11e5bae..f5654f6 100644
--- a/mi/miinitext.c
+++ b/mi/miinitext.c
@@ -624,6 +624,10 @@ InitExtensions(argc, argv)
 #endif
 #endif
 #ifdef XFIXES
+    /* must be before Render to layer DisplayCursor correctly */
+    if (!noXFixesExtension) XFixesExtensionInit();
+#endif
+#ifdef RENDER
     if (!noRenderExtension) RenderExtensionInit();
 #endif
 #ifdef RANDR
commit f6401f944d327cc5d9a7ee0bbdf4f7fc8eaa31e8
Author: Matthias Hopf <mhopf at suse.de>
Date:   Fri Nov 23 16:12:49 2007 +0100

    Don't segfault if referring to a relative output where no modes survived.

diff --git a/hw/xfree86/modes/xf86Crtc.c b/hw/xfree86/modes/xf86Crtc.c
index 5a1ed8c..8595d96 100644
--- a/hw/xfree86/modes/xf86Crtc.c
+++ b/hw/xfree86/modes/xf86Crtc.c
@@ -1079,6 +1079,16 @@ xf86InitialOutputPositions (ScrnInfoPtr scrn, DisplayModePtr *modes)
 		    any_set = TRUE;
 		    continue;
 		}
+		if (!modes[or])
+		{
+		    xf86DrvMsg (scrn->scrnIndex, X_ERROR,
+				"Cannot position output %s relative to output %s without modes\n",
+				output->name, relative_name);
+		    output->initial_x = 0;
+		    output->initial_y = 0;
+		    any_set = TRUE;
+		    continue;
+		}
 		if (relative->initial_x == POSITION_UNSET)
 		{
 		    keep_going = TRUE;
commit fa19e84714aa84a2f2e817e363d6440349d0b619
Author: Matthias Hopf <mhopf at suse.de>
Date:   Tue Nov 20 16:54:50 2007 +0100

    Fix initial placement of LeftOf and Above.

diff --git a/hw/xfree86/modes/xf86Crtc.c b/hw/xfree86/modes/xf86Crtc.c
index 760a498..5a1ed8c 100644
--- a/hw/xfree86/modes/xf86Crtc.c
+++ b/hw/xfree86/modes/xf86Crtc.c
@@ -1094,10 +1094,10 @@ xf86InitialOutputPositions (ScrnInfoPtr scrn, DisplayModePtr *modes)
 		    output->initial_x += xf86ModeWidth (modes[or], relative->initial_rotation);
 		    break;
 		case OPTION_ABOVE:
-		    output->initial_y -= xf86ModeHeight (modes[or], relative->initial_rotation);
+		    output->initial_y -= xf86ModeHeight (modes[o], relative->initial_rotation);
 		    break;
 		case OPTION_LEFT_OF:
-		    output->initial_x -= xf86ModeWidth (modes[or], relative->initial_rotation);
+		    output->initial_x -= xf86ModeWidth (modes[o], relative->initial_rotation);
 		    break;
 		default:
 		    break;
commit 184e571957f697f2a125dc9c9da0c7dfb92c2cd9
Author: Matthias Hopf <mhopf at suse.de>
Date:   Tue Nov 20 13:05:26 2007 +0100

    Adjust offsets of modes that do not fit virtual screen size.
    
    Fixes memory corruption if a too small "Virtual" was specified in xorg.conf
    for the selected multi-monitor configuration.

diff --git a/hw/xfree86/modes/xf86Crtc.c b/hw/xfree86/modes/xf86Crtc.c
index 653042c..760a498 100644
--- a/hw/xfree86/modes/xf86Crtc.c
+++ b/hw/xfree86/modes/xf86Crtc.c
@@ -260,6 +260,30 @@ xf86CrtcSetMode (xf86CrtcPtr crtc, DisplayModePtr mode, Rotation rotation,
     crtc->y = y;
     crtc->rotation = rotation;
 
+    /* Shift offsets that move us out of virtual size */
+    if (x + mode->HDisplay > xf86_config->maxWidth ||
+	y + mode->VDisplay > xf86_config->maxHeight)
+    {
+	if (x + mode->HDisplay > xf86_config->maxWidth)
+	    crtc->x = xf86_config->maxWidth - mode->HDisplay;
+	if (y + mode->VDisplay > xf86_config->maxHeight)
+	    crtc->y = xf86_config->maxHeight - mode->VDisplay;
+	if (crtc->x < 0 || crtc->y < 0)
+	{
+	    xf86DrvMsg (scrn->scrnIndex, X_ERROR,
+			"Mode %dx%d does not fit virtual size %dx%d - "
+			"internal error\n", mode->HDisplay, mode->VDisplay,
+			xf86_config->maxWidth, xf86_config->maxHeight);
+	    goto done;
+	}
+	xf86DrvMsg (scrn->scrnIndex, X_ERROR,
+		    "Mode %dx%d+%d+%d does not fit virtual size %dx%d - "
+		    "offset updated to +%d+%d\n",
+		    mode->HDisplay, mode->VDisplay, x, y,
+		    xf86_config->maxWidth, xf86_config->maxHeight,
+		    crtc->x, crtc->y);
+    }
+
     /* XXX short-circuit changes to base location only */
     
     /* Pass our mode to the outputs and the CRTC to give them a chance to
@@ -301,7 +325,7 @@ xf86CrtcSetMode (xf86CrtcPtr crtc, DisplayModePtr mode, Rotation rotation,
     /* Set up the DPLL and any output state that needs to adjust or depend
      * on the DPLL.
      */
-    crtc->funcs->mode_set(crtc, mode, adjusted_mode, x, y);
+    crtc->funcs->mode_set(crtc, mode, adjusted_mode, crtc->x, crtc->y);
     for (i = 0; i < xf86_config->num_output; i++) 
     {
 	xf86OutputPtr output = xf86_config->output[i];
commit a80e64f1503a4d8b11c4a6608d296422c69e3e8b
Author: Peter Hutterer <peter at cs.unisa.edu.au>
Date:   Sat Nov 17 22:50:07 2007 +0100

    XKB: Generate correct key repeat events (bug #13114)
    
    Make sure we send the correct event for the type of device when we're
    sending key repeat events, which stops repeats being sent to incorrect
    windows.

diff --git a/xkb/xkbAccessX.c b/xkb/xkbAccessX.c
index 4c6e3d4..43b82e1 100644
--- a/xkb/xkbAccessX.c
+++ b/xkb/xkbAccessX.c
@@ -308,14 +308,19 @@ xkbControlsNotify	cn;
 static CARD32
 AccessXRepeatKeyExpire(OsTimerPtr timer,CARD32 now,pointer arg)
 {
-XkbSrvInfoPtr	xkbi= ((DeviceIntPtr)arg)->key->xkbInfo;
+DeviceIntPtr    dev = (DeviceIntPtr) arg;
+XkbSrvInfoPtr	xkbi = dev->key->xkbInfo;
 KeyCode		key;
+BOOL            is_core;
 
-    if (xkbi->repeatKey==0)
+    if (xkbi->repeatKey == 0)
 	return 0;
-    key= xkbi->repeatKey;
-    AccessXKeyboardEvent((DeviceIntPtr)arg,KeyRelease,key,True);
-    AccessXKeyboardEvent((DeviceIntPtr)arg,KeyPress,key,True);
+
+    is_core = (dev == inputInfo.keyboard);
+    key = xkbi->repeatKey;
+    AccessXKeyboardEvent(dev, is_core ? KeyRelease : DeviceKeyRelease, key,
+                         True);
+    AccessXKeyboardEvent(dev, is_core ? KeyPress : DeviceKeyPress, key, True);
     return xkbi->desc->ctrls->repeat_interval;
 }
 
commit 63351df0eec320aa3ce27d4d2ee6bcdb58aa2d92
Author: Jeremy Huddleston <jeremy at tifa.local>
Date:   Thu Nov 22 18:02:07 2007 -0800

    Darwin: Fix compilation/linking problems

diff --git a/hw/darwin/Makefile.am b/hw/darwin/Makefile.am
index cd3f7f4..62cbecf 100644
--- a/hw/darwin/Makefile.am
+++ b/hw/darwin/Makefile.am
@@ -48,7 +48,7 @@ Xquartz_LDADD = \
 	$(top_builddir)/miext/rootless/librootless.la \
 	$(top_builddir)/miext/rootless/safeAlpha/libsafeAlpha.la \
 	$(top_builddir)/miext/rootless/accel/librlAccel.la \
-	$(DARWIN_LIBS) $(XSERVER_LIBS) -lXplugin
+	$(DARWIN_LIBS) $(XSERVER_LIBS) $(XSERVER_SYS_LIBS) -lXplugin
 
 Xquartz_LDFLAGS =  \
 	-XCClinker -Objc \
diff --git a/hw/darwin/darwinEvents.c b/hw/darwin/darwinEvents.c
index 06c4cc7..629fb2c 100644
--- a/hw/darwin/darwinEvents.c
+++ b/hw/darwin/darwinEvents.c
@@ -154,8 +154,7 @@ static void DarwinUpdateModifiers(
  * are held down during a "context" switch -- otherwise, we would miss the KeyUp.
  */
 static void DarwinReleaseModifiers(void) {
-	xEvent e;
-	DarwinUpdateModifiers(&e, KeyRelease, COMMAND_MASK(-1) | CONTROL_MASK(-1) | ALTERNATE_MASK(-1) | SHIFT_MASK(-1));
+	DarwinUpdateModifiers(KeyRelease, COMMAND_MASK(-1) | CONTROL_MASK(-1) | ALTERNATE_MASK(-1) | SHIFT_MASK(-1));
 }
 
 /*
diff --git a/hw/darwin/darwinKeyboard.c b/hw/darwin/darwinKeyboard.c
index efa12b7..47acb65 100644
--- a/hw/darwin/darwinKeyboard.c
+++ b/hw/darwin/darwinKeyboard.c
@@ -1070,7 +1070,7 @@ int DarwinModifierStringToNXKey(const char *str)
  *      This allows the ddx layer to prevent some keys from being remapped
  *      as modifier keys.
  */
-Bool LegalModifier(unsigned int key, DevicePtr pDev)
+Bool LegalModifier(unsigned int key, DeviceIntPtr pDev)
 {
     return 1;
 }
commit bf4ef4da759c01e6794ed28ba4988a2c8ee049bf
Author: Jeremy Huddleston <jeremy at tifa.local>
Date:   Thu Nov 22 17:45:15 2007 -0800

    Darwin: Remove the PaintWindow optimization which snuck back in.

diff --git a/hw/darwin/quartz/xpr/xprScreen.c b/hw/darwin/quartz/xpr/xprScreen.c
index 1b6addc..b5f382e 100644
--- a/hw/darwin/quartz/xpr/xprScreen.c
+++ b/hw/darwin/quartz/xpr/xprScreen.c
@@ -316,8 +316,6 @@ static Bool
 xprSetupScreen(int index, ScreenPtr pScreen)
 {
     // Add alpha protecting replacements for fb screen functions
-    pScreen->PaintWindowBackground = SafeAlphaPaintWindow;
-    pScreen->PaintWindowBorder = SafeAlphaPaintWindow;
 
 #ifdef RENDER
     {
commit 2082e7aa878fe1221fd50895a9de1f408b3157a8
Author: Jeremy Huddleston <jeremy at tifa.local>
Date:   Thu Nov 22 17:18:48 2007 -0800

    Rootless: Remove the PaintWindow optimization which snuck back in.

diff --git a/miext/rootless/rootlessWindow.c b/miext/rootless/rootlessWindow.c
index 14bc674..bb5ba48 100644
--- a/miext/rootless/rootlessWindow.c
+++ b/miext/rootless/rootlessWindow.c
@@ -1486,95 +1486,6 @@ RootlessFlushWindowColormap (WindowPtr pWin)
 }
 
 /*
- * SetPixmapOfAncestors
- *  Set the Pixmaps on all ParentRelative windows up the ancestor chain.
- */
-static void
-SetPixmapOfAncestors(WindowPtr pWin)
-{
-    ScreenPtr pScreen = pWin->drawable.pScreen;
-    WindowPtr topWin = TopLevelParent(pWin);
-    RootlessWindowRec *topWinRec = WINREC(topWin);
-
-    while (pWin->backgroundState == ParentRelative) {
-        if (pWin == topWin) {
-            // disallow ParentRelative background state on top level
-            XID pixel = 0;
-            ChangeWindowAttributes(pWin, CWBackPixel, &pixel, serverClient);
-            RL_DEBUG_MSG("Cleared ParentRelative on 0x%x.\n", pWin);
-            break;
-        }
-
-        pWin = pWin->parent;
-        pScreen->SetWindowPixmap(pWin, topWinRec->pixmap);
-    }
-}
-
-
-/*
- * RootlessPaintWindowBackground
- */
-void
-RootlessPaintWindowBackground(WindowPtr pWin, RegionPtr pRegion, int what)
-{
-    ScreenPtr pScreen = pWin->drawable.pScreen;
- 
-    if (IsRoot(pWin))
-        return;
-
-    RL_DEBUG_MSG("paintwindowbackground start (win 0x%x, framed %i) ",
-                 pWin, IsFramedWindow(pWin));
-
-    if (IsFramedWindow(pWin)) {
-        RootlessStartDrawing(pWin);
-        RootlessDamageRegion(pWin, pRegion);
-
-        // For ParentRelative windows, we have to make sure the window
-        // pixmap is set correctly all the way up the ancestor chain.
-        if (pWin->backgroundState == ParentRelative) {
-            SetPixmapOfAncestors(pWin);
-        }
-    }
-
-    SCREEN_UNWRAP(pScreen, PaintWindowBackground);
-    pScreen->PaintWindowBackground(pWin, pRegion, what);
-    SCREEN_WRAP(pScreen, PaintWindowBackground);
-
-    RL_DEBUG_MSG("paintwindowbackground end\n");
-}
-
-
-/*
- * RootlessPaintWindowBorder
- */
-void
-RootlessPaintWindowBorder(WindowPtr pWin, RegionPtr pRegion, int what)
-{
-    RL_DEBUG_MSG("paintwindowborder start (win 0x%x) ", pWin);
-
-    if (IsFramedWindow(pWin)) {
-        RootlessStartDrawing(pWin);
-        RootlessDamageRegion(pWin, pRegion);
-
-        // For ParentRelative windows with tiled borders, we have to make
-        // sure the window pixmap is set correctly all the way up the
-        // ancestor chain.
-        if (!pWin->borderIsPixel &&
-            pWin->backgroundState == ParentRelative)
-        {
-            SetPixmapOfAncestors(pWin);
-        }
-    }
-
-    SCREEN_UNWRAP(pWin->drawable.pScreen, PaintWindowBorder);
-    pWin->drawable.pScreen->PaintWindowBorder(pWin, pRegion, what);
-    SCREEN_WRAP(pWin->drawable.pScreen, PaintWindowBorder);
-
-    RL_DEBUG_MSG("paintwindowborder end\n");
-}
-
-
-/*
  * RootlessChangeBorderWidth
  *  FIXME: untested!
  *  pWin inside corner stays the same; pWin->drawable.[xy] stays the same
commit a751bc12bee1d4d2ed35e3a0c64d9c8c9bf30a82
Author: Jeremy Huddleston <jeremy at tifa.local>
Date:   Thu Nov 22 13:53:00 2007 -0800

    Rootless: Imported changes made in xorg-server-1.2-apple branch

diff --git a/miext/rootless/rootlessValTree.c b/miext/rootless/rootlessValTree.c
index 9fab786..4f16530 100644
--- a/miext/rootless/rootlessValTree.c
+++ b/miext/rootless/rootlessValTree.c
@@ -482,6 +482,18 @@ RootlessComputeClips (pParent, pScreen, universe, kind, exposed)
 			       universe, &pParent->clipList);
     }
 
+    /*
+     * One last thing: backing storage. We have to try to save what parts of
+     * the window are about to be obscured. We can just subtract the universe
+     * from the old clipList and get the areas that were in the old but aren't
+     * in the new and, hence, are about to be obscured.
+     */
+    if (pParent->backStorage && !resized)
+    {
+	REGION_SUBTRACT( pScreen, exposed, &pParent->clipList, universe);
+	(* pScreen->SaveDoomedAreas)(pParent, exposed, dx, dy);
+    }
+    
     /* HACK ALERT - copying contents of regions, instead of regions */
     {
 	RegionRec   tmp;
diff --git a/miext/rootless/safeAlpha/safeAlphaPicture.c b/miext/rootless/safeAlpha/safeAlphaPicture.c
index 57f1ae1..8f66315 100644
--- a/miext/rootless/safeAlpha/safeAlphaPicture.c
+++ b/miext/rootless/safeAlpha/safeAlphaPicture.c
@@ -46,6 +46,7 @@
 #include "fbpict.h"
 #include "safeAlpha.h"
 #include "rootlessCommon.h"
+# define mod(a,b)	((b) == 1 ? 0 : (a) >= 0 ? (a) % (b) : (b) - (-a) % (b))
 
 /* Optimized version of fbCompositeSolidMask_nx8x8888 */
 void
@@ -133,68 +134,78 @@ SafeAlphaCompositeSolidMask_nx8x8888(
 
 void
 SafeAlphaComposite (CARD8           op,
-		    PicturePtr      pSrc,
-		    PicturePtr      pMask,
-		    PicturePtr      pDst,
-		    INT16           xSrc,
-		    INT16           ySrc,
-		    INT16           xMask,
-		    INT16           yMask,
-		    INT16           xDst,
-		    INT16           yDst,
-		    CARD16          width,
-		    CARD16          height)
+                    PicturePtr      pSrc,
+                    PicturePtr      pMask,
+                    PicturePtr      pDst,
+                    INT16           xSrc,
+                    INT16           ySrc,
+                    INT16           xMask,
+                    INT16           yMask,
+                    INT16           xDst,
+                    INT16           yDst,
+                    CARD16          width,
+                    CARD16          height)
 {
-    int oldDepth = pDst->pDrawable->depth;
-    int oldFormat = pDst->format;
+  if (!pSrc) {
+    ErrorF("SafeAlphaComposite: pSrc must not be null!\n");
+    return;
+  }
+
+  if (!pDst) {
+    ErrorF("SafeAlphaComposite: pDst must not be null!\n");
+    return;
+  }
+  
+  int oldDepth = pDst->pDrawable->depth;
+  int oldFormat = pDst->format;
     
-    /*
-     * We can use the more optimized fbpict code, but it sets bits above
-     * the depth to zero. Temporarily adjust destination depth if needed.
-     */
-    if (pDst->pDrawable->type == DRAWABLE_WINDOW
-	&& pDst->pDrawable->depth == 24
-	&& pDst->pDrawable->bitsPerPixel == 32)
+  /*
+   * We can use the more optimized fbpict code, but it sets bits above
+   * the depth to zero. Temporarily adjust destination depth if needed.
+   */
+  if (pDst->pDrawable->type == DRAWABLE_WINDOW
+        && pDst->pDrawable->depth == 24
+      && pDst->pDrawable->bitsPerPixel == 32)
     {
-	pDst->pDrawable->depth = 32;
+      pDst->pDrawable->depth = 32;
     }
     
-    /* For rootless preserve the alpha in x8r8g8b8 which really is
-     * a8r8g8b8
-     */
-    if (oldFormat == PICT_x8r8g8b8)
+  /* For rootless preserve the alpha in x8r8g8b8 which really is
+   * a8r8g8b8
+   */
+  if (oldFormat == PICT_x8r8g8b8)
     {
-        pDst->format = PICT_a8r8g8b8;
+      pDst->format = PICT_a8r8g8b8;
     }
     
-    if (pSrc && pMask && pSrc->pDrawable && pMask->pDrawable &&
-	!pSrc->transform && !pMask->transform &&
-	!pSrc->alphaMap && !pMask->alphaMap &&
-	!pMask->repeat && !pMask->componentAlpha && !pDst->alphaMap &&
-	pMask->format == PICT_a8 &&
-	pSrc->repeatType == RepeatNormal && 
-	pSrc->pDrawable->width == 1 &&
-	pSrc->pDrawable->height == 1 &&
-	(pDst->format == PICT_a8r8g8b8 ||
-	 pDst->format == PICT_x8r8g8b8 ||
-	 pDst->format == PICT_a8b8g8r8 ||
-	 pDst->format == PICT_x8b8g8r8))
+  if (pSrc->pDrawable && pMask && pMask->pDrawable &&
+        !pSrc->transform && !pMask->transform &&
+        !pSrc->alphaMap && !pMask->alphaMap &&
+        !pMask->repeat && !pMask->componentAlpha && !pDst->alphaMap &&
+        pMask->format == PICT_a8 &&
+       pSrc->repeatType == RepeatNormal && 
+        pSrc->pDrawable->width == 1 &&
+        pSrc->pDrawable->height == 1 &&
+      (pDst->format == PICT_a8r8g8b8 ||
+         pDst->format == PICT_x8r8g8b8 ||
+         pDst->format == PICT_a8b8g8r8 ||
+       pDst->format == PICT_x8b8g8r8))
     {
-	fbWalkCompositeRegion (op, pSrc, pMask, pDst,
-			       xSrc, ySrc, xMask, yMask, xDst, yDst,
-			       width, height,
-			       TRUE /* srcRepeat */,
-			       FALSE /* maskRepeat */,
-			       SafeAlphaCompositeSolidMask_nx8x8888);
+      fbWalkCompositeRegion (op, pSrc, pMask, pDst,
+			     xSrc, ySrc, xMask, yMask, xDst, yDst,
+			     width, height,
+			     TRUE /* srcRepeat */,
+			     FALSE /* maskRepeat */,
+			     SafeAlphaCompositeSolidMask_nx8x8888);
     }
-    else
+  else
     {
-	fbComposite (op, pSrc, pMask, pDst,
-		     xSrc, ySrc, xMask, yMask, xDst, yDst, width, height);
+      fbComposite (op, pSrc, pMask, pDst,
+		   xSrc, ySrc, xMask, yMask, xDst, yDst, width, height);
     }
 
-    pDst->pDrawable->depth = oldDepth;
-    pDst->format = oldFormat;
+  pDst->pDrawable->depth = oldDepth;
+  pDst->format = oldFormat;
 }
 
 #endif /* RENDER */
commit 59c7ca6586e7c20e28ad407ca9a0883c4d621d64
Author: Jeremy Huddleston <jeremy at tifa.local>
Date:   Thu Nov 22 13:29:15 2007 -0800

    Darwin: Added missing Makefile.am

diff --git a/hw/darwin/quartz/xpr/Makefile.am b/hw/darwin/quartz/xpr/Makefile.am
new file mode 100644
index 0000000..4fe6e23
--- /dev/null
+++ b/hw/darwin/quartz/xpr/Makefile.am
@@ -0,0 +1,30 @@
+noinst_LIBRARIES = libxpr.a
+AM_CFLAGS =  $(XORG_CFLAGS) $(DIX_CFLAGS)
+AM_CPPFLAGS = $(XORG_INCS) \
+	   -DHAVE_XORG_CONFIG_H \
+	   -I$(srcdir) -I$(srcdir)/.. -I$(srcdir)/../.. \
+	   -I$(top_srcdir)/miext \
+	   -I$(top_srcdir)/miext/rootless \
+	   -I$(top_srcdir)/miext/rootless/safeAlpha
+
+libxpr_a_SOURCES = \
+	appledri.c \
+        dri.c \
+        xprAppleWM.c \
+        xprCursor.c \
+        xprFrame.c \
+        xprScreen.c \
+        x-hash.c \
+        x-hook.c \
+        x-list.c
+
+EXTRA_DIST = \
+	dri.h \
+	dristruct.h \
+	appledri.h \
+	appledristr.h \
+	x-hash.h \
+	x-hook.h \
+	x-list.h \
+	Xplugin.h \
+	xpr.h
commit 23596291c30a85e38c00aef2c01b46d561e2916e
Author: Jeremy Huddleston <jeremy at tifa.local>
Date:   Thu Nov 22 13:17:44 2007 -0800

    Darwin: More syncing witn xorg-server-1.2-apple

diff --git a/hw/darwin/darwin.c b/hw/darwin/darwin.c
index a772218..b08770c 100644
--- a/hw/darwin/darwin.c
+++ b/hw/darwin/darwin.c
@@ -671,6 +671,7 @@ void OsVendorInit(void)
 	}
 #endif
     }
+    //    DEBUG_LOG("Xquartz started at %s\n", ctime(time(NULL)));
 
     // Find the full path to the keymapping file.
     if ( darwinKeymapFile ) {
@@ -959,7 +960,7 @@ xf86SetRootClip (ScreenPtr pScreen, BOOL enable)
     WindowPtr	pChild;
     Bool	WasViewable = (Bool)(pWin->viewable);
     Bool	anyMarked = TRUE;
-    RegionPtr	pOldClip = NULL;
+    RegionPtr	pOldClip = NULL, bsExposed;
 #ifdef DO_SAVE_UNDERS
     Bool	dosave = FALSE;
 #endif
@@ -1015,6 +1016,12 @@ xf86SetRootClip (ScreenPtr pScreen, BOOL enable)
 
     if (WasViewable)
     {
+	if (pWin->backStorage)
+	{
+	    pOldClip = REGION_CREATE(pScreen, NullBox, 1);
+	    REGION_COPY(pScreen, pOldClip, &pWin->clipList);
+	}
+
 	if (pWin->firstChild)
 	{
 	    anyMarked |= (*pScreen->MarkOverlappedWindows)(pWin->firstChild,
@@ -1038,6 +1045,28 @@ xf86SetRootClip (ScreenPtr pScreen, BOOL enable)
 	    (*pScreen->ValidateTree)(pWin, NullWindow, VTOther);
     }
 
+    if (pWin->backStorage &&
+	((pWin->backingStore == Always) || WasViewable))
+    {
+	if (!WasViewable)
+	    pOldClip = &pWin->clipList; /* a convenient empty region */
+	bsExposed = (*pScreen->TranslateBackingStore)
+			     (pWin, 0, 0, pOldClip,
+			      pWin->drawable.x, pWin->drawable.y);
+	if (WasViewable)
+	    REGION_DESTROY(pScreen, pOldClip);
+	if (bsExposed)
+	{
+	    RegionPtr	valExposed = NullRegion;
+
+	    if (pWin->valdata)
+		valExposed = &pWin->valdata->after.exposed;
+	    (*pScreen->WindowExposures) (pWin, valExposed, bsExposed);
+	    if (valExposed)
+		REGION_EMPTY(pScreen, valExposed);
+	    REGION_DESTROY(pScreen, bsExposed);
+	}
+    }
     if (WasViewable)
     {
 	if (anyMarked)
diff --git a/hw/darwin/quartz/quartz.c b/hw/darwin/quartz/quartz.c
index 23707a0..c95880c 100644
--- a/hw/darwin/quartz/quartz.c
+++ b/hw/darwin/quartz/quartz.c
@@ -253,7 +253,7 @@ static void QuartzUpdateScreens(void)
     int x, y, width, height, sx, sy;
     xEvent e;
 
-    ErrorF("QuartzUpdateScreens()\n");
+    DEBUG_LOG("QuartzUpdateScreens()\n");
     if (noPseudoramiXExtension || screenInfo.numScreens != 1)
     {
         /* FIXME: if not using Xinerama, we have multiple screens, and
@@ -418,6 +418,7 @@ void DarwinModeProcessEvent(
 {
     switch (xe->u.u.type) {
         case kXDarwinControllerNotify:
+	  DEBUG_LOG("kXDarwinControllerNotify\n");
             AppleWMSendEvent(AppleWMControllerNotify,
                              AppleWMControllerNotifyMask,
                              xe->u.clientMessage.u.l.longs0,
@@ -425,6 +426,7 @@ void DarwinModeProcessEvent(
             break;
 
         case kXDarwinPasteboardNotify:
+	  DEBUG_LOG("kXDarwinPasteboardNotify\n");
             AppleWMSendEvent(AppleWMPasteboardNotify,
                              AppleWMPasteboardNotifyMask,
                              xe->u.clientMessage.u.l.longs0,
@@ -432,7 +434,7 @@ void DarwinModeProcessEvent(
             break;
 
         case kXDarwinActivate:
-  //	  ErrorF("kXDarwinActivate\n");
+	  DEBUG_LOG("kXDarwinActivate\n");
             QuartzShow(xe->u.keyButtonPointer.rootX,
                        xe->u.keyButtonPointer.rootY);
             AppleWMSendEvent(AppleWMActivationNotify,
@@ -441,7 +443,7 @@ void DarwinModeProcessEvent(
             break;
 
         case kXDarwinDeactivate:
-  //	  ErrorF("kXDarwinDeactivate\n");
+  	  DEBUG_LOG("kXDarwinDeactivate\n");
             AppleWMSendEvent(AppleWMActivationNotify,
                              AppleWMActivationNotifyMask,
                              AppleWMIsInactive, 0);
@@ -449,22 +451,23 @@ void DarwinModeProcessEvent(
             break;
 
         case kXDarwinDisplayChanged:
-  //	  ErrorF("kXDarwinDisplayChanged\n");
+	    DEBUG_LOG("kXDarwinDisplayChanged\n");
             QuartzUpdateScreens();
             break;
 
         case kXDarwinWindowState:
-  //	  ErrorF("kXDarwinWindowState\n");
+	  DEBUG_LOG("kXDarwinWindowState\n");
             RootlessNativeWindowStateChanged(xe->u.clientMessage.u.l.longs0,
 		  			     xe->u.clientMessage.u.l.longs1);
 	    break;
 	  
         case kXDarwinWindowMoved:
-  //	  ErrorF("kXDarwinWindowMoved\n");
-            RootlessNativeWindowMoved ((WindowPtr)xe->u.clientMessage.u.l.longs0);
+	  DEBUG_LOG("kXDarwinWindowMoved\n");
+	  RootlessNativeWindowMoved ((WindowPtr)xe->u.clientMessage.u.l.longs0);
 	    break;
 
         case kXDarwinToggleFullscreen:
+	  DEBUG_LOG("kXDarwinToggleFullscreen\n");
 #ifdef DARWIN_DDX_MISSING
             if (quartzEnableRootless) QuartzSetFullscreen(!quartzHasRoot);
             else if (quartzHasRoot) QuartzHide();
@@ -500,7 +503,7 @@ void DarwinModeProcessEvent(
             break;
 
         case kXDarwinBringAllToFront:
-  //	  ErrorF("kXDarwinBringAllToFront\n");
+  	  DEBUG_LOG("kXDarwinBringAllToFront\n");
 	    RootlessOrderAllWindows();
             break;
 
diff --git a/hw/darwin/quartz/xpr/xprScreen.c b/hw/darwin/quartz/xpr/xprScreen.c
index aff1901..1b6addc 100644
--- a/hw/darwin/quartz/xpr/xprScreen.c
+++ b/hw/darwin/quartz/xpr/xprScreen.c
@@ -80,21 +80,14 @@ eventHandler(unsigned int type, const void *arg,
       break;
 
     case XP_EVENT_WINDOW_MOVED:
-     	DEBUG_LOG("XP_EVENT_WINDOW_MOVED\n");
-        if (arg_size == sizeof(xp_window_id))
-        {
-            xp_window_id id = * (xp_window_id *) arg;
-	    WindowPtr pWin = xprGetXWindow(id);
-	    BoxRec box;
-	    xp_error retval  = xp_get_window_bounds(id, &box);
-	    if (retval != Success) {
-	      ErrorF("Unable to find new bounds for window\n");
-	      break;
-	    }
-            QuartzMessageServerThread(kXDarwinWindowMoved, 3, pWin, box.x1, box.y1);
-        }
-        break;
-
+      DEBUG_LOG("XP_EVENT_WINDOW_MOVED\n");
+      if (arg_size == sizeof(xp_window_id))  {
+	xp_window_id id = * (xp_window_id *) arg;
+	WindowPtr pWin = xprGetXWindow(id);
+	QuartzMessageServerThread(kXDarwinWindowMoved, 1, pWin);
+      }
+      break;
+      
     case XP_EVENT_SURFACE_DESTROYED:
       DEBUG_LOG("XP_EVENT_SURFACE_DESTROYED\n");
     case XP_EVENT_SURFACE_CHANGED:
commit 4e18c626350c7c2e0fb540aa64a98957699f3abe
Author: Jeremy Huddleston <jeremy at tifa.local>
Date:   Thu Nov 22 12:21:59 2007 -0800

    Rootless: Pulled in changes from fb{Blt,Fill} into rl{Blt,Fill}
    (cherry picked from commit 3f857e129df7ce492191e0c51b8e53eaf6179366)
    (cherry picked from commit 70374a58937d7a6f01c210bd6ac66cafb63e895a)

diff --git a/miext/rootless/accel/rlBlt.c b/miext/rootless/accel/rlBlt.c
index 2cf72eb..b5fe740 100644
--- a/miext/rootless/accel/rlBlt.c
+++ b/miext/rootless/accel/rlBlt.c
@@ -32,10 +32,22 @@
 #endif
 
 #include <stddef.h> /* For NULL */
+#include <string.h>
 #include "fb.h"
 #include "rootlessCommon.h"
 #include "rlAccel.h"
 
+#define InitializeShifts(sx,dx,ls,rs) { \
+    if (sx != dx) { \
+	if (sx > dx) { \
+	    ls = sx - dx; \
+	    rs = FB_UNIT - ls; \
+	} else { \
+	    rs = dx - sx; \
+	    ls = FB_UNIT - rs; \
+	} \
+    } \
+}
 
 void
 rlBlt (FbBits   *srcLine,
@@ -74,6 +86,29 @@ rlBlt (FbBits   *srcLine,
 	return;
     }
 #endif
+
+    if (alu == GXcopy && pm == FB_ALLONES && !reverse &&
+            !(srcX & 7) && !(dstX & 7) && !(width & 7)) {
+        int i;
+        CARD8 *src = (CARD8 *) srcLine;
+        CARD8 *dst = (CARD8 *) dstLine;
+        
+        srcStride *= sizeof(FbBits);
+        dstStride *= sizeof(FbBits);
+        width >>= 3;
+        src += (srcX >> 3);
+        dst += (dstX >> 3);
+
+        if (!upsidedown)
+            for (i = 0; i < height; i++)
+                memcpy(dst + i * dstStride, src + i * srcStride, width);
+        else
+            for (i = height - 1; i >= 0; i--)
+                memcpy(dst + i * dstStride, src + i * srcStride, width);
+
+        return;
+    }
+
     FbInitializeMergeRop(alu, pm);
     destInvarient = FbDestInvarientMergeRop();
     if (upsidedown)
@@ -325,9 +360,12 @@ rlBlt (FbBits   *srcLine,
 		    bits1 = *src++;
 		if (startmask)
 		{
-		    bits = FbScrLeft(bits1, leftShift);
-		    bits1 = *src++;
-		    bits |= FbScrRight(bits1, rightShift);
+		    bits = FbScrLeft(bits1, leftShift); 
+		    if (FbScrLeft(startmask, rightShift))
+		    {
+			bits1 = *src++;
+			bits |= FbScrRight(bits1, rightShift);
+		    }
 		    FbDoLeftMaskByteMergeRop (dst, bits, startbyte, startmask);
 		    dst++;
 		}
diff --git a/miext/rootless/accel/rlFill.c b/miext/rootless/accel/rlFill.c
index 0d0d012..a80c776 100644
--- a/miext/rootless/accel/rlFill.c
+++ b/miext/rootless/accel/rlFill.c
@@ -89,7 +89,7 @@ rlFill (DrawablePtr pDrawable,
 		    dstBpp,
 		    
 		    (pGC->patOrg.x + pDrawable->x + dstXoff),
-		    pGC->patOrg.y + pDrawable->y + dstYoff - y);
+		    pGC->patOrg.y + pDrawable->y - y);
 	}
 	else
 	{
@@ -126,7 +126,7 @@ rlFill (DrawablePtr pDrawable,
 		       fgand, fgxor,
 		       bgand, bgxor,
 		       pGC->patOrg.x + pDrawable->x + dstXoff,
-		       pGC->patOrg.y + pDrawable->y + dstYoff - y);
+		       pGC->patOrg.y + pDrawable->y - y);
 	}
 	break;
     }
@@ -154,7 +154,7 @@ rlFill (DrawablePtr pDrawable,
 		pPriv->pm,
 		dstBpp,
 		(pGC->patOrg.x + pDrawable->x + dstXoff) * dstBpp,
-		pGC->patOrg.y + pDrawable->y + dstYoff - y);
+		pGC->patOrg.y + pDrawable->y - y);
 	break;
     }
     }
commit ed9524d36e42a310bb128284f2b507f76b8c40d9
Author: Jeremy Huddleston <jeremy at tifa.local>
Date:   Thu Nov 22 01:07:02 2007 -0800

    Darwin: Copied over missing file (Localizable.strings) from xorg-server-1.2-apple

diff --git a/hw/darwin/apple/English.lproj/Localizable.strings b/hw/darwin/apple/English.lproj/Localizable.strings
new file mode 100644
index 0000000..c83b085
Binary files /dev/null and b/hw/darwin/apple/English.lproj/Localizable.strings differ
commit 4d9cef197b12548e0716dab3557e48311519e325
Author: Jeremy Huddleston <jeremy at tifa.local>
Date:   Thu Nov 22 00:35:09 2007 -0800

    Darwin: Misc cleanups to line up with xorg-server-1.2-apple

diff --git a/hw/darwin/apple/X11.xcodeproj/project.pbxproj b/hw/darwin/apple/X11.xcodeproj/project.pbxproj
index 27cab8d..217f07e 100644
--- a/hw/darwin/apple/X11.xcodeproj/project.pbxproj
+++ b/hw/darwin/apple/X11.xcodeproj/project.pbxproj
@@ -14,6 +14,7 @@
 		527F241F0B5D938C007840A7 /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 50F4F0A7039D6ACA0E82C0CB /* CoreFoundation.framework */; };
 		527F24200B5D938C007840A7 /* SystemConfiguration.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 570C5748047186C400ACF82F /* SystemConfiguration.framework */; };
 		527F24370B5D9D89007840A7 /* Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = 527F24260B5D938C007840A7 /* Info.plist */; };
+		52D9C0ED0BCDDF6B00CD2AFC /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = 52D9C0EB0BCDDF6B00CD2AFC /* Localizable.strings */; };
 /* End PBXBuildFile section */
 
 /* Begin PBXFileReference section */
@@ -24,6 +25,7 @@
 		50F4F0A7039D6ACA0E82C0CB /* CoreFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreFoundation.framework; path = /System/Library/Frameworks/CoreFoundation.framework; sourceTree = "<absolute>"; };
 		527F24260B5D938C007840A7 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = Info.plist; sourceTree = "<group>"; };
 		527F24270B5D938C007840A7 /* X11.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = X11.app; sourceTree = BUILT_PRODUCTS_DIR; };
+		52D9C0EC0BCDDF6B00CD2AFC /* English */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text.plist.strings; name = English; path = English.lproj/Localizable.strings; sourceTree = "<group>"; };
 		570C5748047186C400ACF82F /* SystemConfiguration.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SystemConfiguration.framework; path = /System/Library/Frameworks/SystemConfiguration.framework; sourceTree = "<absolute>"; };
 /* End PBXFileReference section */
 
@@ -71,6 +73,7 @@
 		20286C2CFDCF999611CA2CEA /* Resources */ = {
 			isa = PBXGroup;
 			children = (
+				52D9C0EB0BCDDF6B00CD2AFC /* Localizable.strings */,
 				50459C5F038587C60ECA21EC /* X11.icns */,
 				0867D6AAFE840B52C02AAC07 /* InfoPlist.strings */,
 				02345980000FD03B11CA0E72 /* main.nib */,
@@ -146,6 +149,7 @@
 				527F24190B5D938C007840A7 /* InfoPlist.strings in Resources */,
 				527F241A0B5D938C007840A7 /* main.nib in Resources */,
 				527F241B0B5D938C007840A7 /* X11.icns in Resources */,
+				52D9C0ED0BCDDF6B00CD2AFC /* Localizable.strings in Resources */,
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};
@@ -189,6 +193,14 @@
 			name = InfoPlist.strings;
 			sourceTree = "<group>";
 		};
+		52D9C0EB0BCDDF6B00CD2AFC /* Localizable.strings */ = {
+			isa = PBXVariantGroup;
+			children = (
+				52D9C0EC0BCDDF6B00CD2AFC /* English */,
+			);
+			name = Localizable.strings;
+			sourceTree = "<group>";
+		};
 /* End PBXVariantGroup section */
 
 /* Begin XCBuildConfiguration section */
@@ -219,7 +231,7 @@
 				COPY_PHASE_STRIP = NO;
 				FRAMEWORK_SEARCH_PATHS = "";
 				GCC_SYMBOLS_PRIVATE_EXTERN = NO;
-				HEADER_SEARCH_PATHS = "";
+				HEADER_SEARCH_PATHS = /usr/X11/include;
 				INFOPLIST_FILE = Info.plist;
 				INSTALL_PATH = /usr/X11;
 				LIBRARY_SEARCH_PATHS = /usr/X11/lib;
@@ -247,7 +259,7 @@
 				COPY_PHASE_STRIP = YES;
 				FRAMEWORK_SEARCH_PATHS = "";
 				GCC_SYMBOLS_PRIVATE_EXTERN = NO;
-				HEADER_SEARCH_PATHS = "";
+				HEADER_SEARCH_PATHS = /usr/X11/include;
 				INFOPLIST_FILE = Info.plist;
 				INSTALL_PATH = /usr/X11;
 				LIBRARY_SEARCH_PATHS = /usr/X11/lib;
@@ -274,7 +286,7 @@
 			buildSettings = {
 				FRAMEWORK_SEARCH_PATHS = "";
 				GCC_SYMBOLS_PRIVATE_EXTERN = NO;
-				HEADER_SEARCH_PATHS = "";
+				HEADER_SEARCH_PATHS = /usr/X11/include;
 				INFOPLIST_FILE = Info.plist;
 				INSTALL_PATH = /usr/X11;
 				LIBRARY_SEARCH_PATHS = /usr/X11/lib;
diff --git a/hw/darwin/darwinKeyboard.c b/hw/darwin/darwinKeyboard.c
index 932cdd5..efa12b7 100644
--- a/hw/darwin/darwinKeyboard.c
+++ b/hw/darwin/darwinKeyboard.c
@@ -217,7 +217,7 @@ static void DarwinChangeKeyboardControl( DeviceIntPtr device, KeybdCtrl *ctrl )
     // keyclick, bell volume / pitch, autorepead, LED's
 }
 
-static darwinKeyboardInfo keyInfo;
+darwinKeyboardInfo keyInfo;
 static FILE *fref = NULL;
 static char *inBuffer = NULL;
 
@@ -816,7 +816,7 @@ void DarwinKeyboardInit(
     assert( darwinParamConnect = NXOpenEventStatus() );
 
     DarwinLoadKeyboardMapping(&keySyms);
-
+    //    DarwinKeyboardReload(pDev);
     /* Initialize the seed, so we don't reload the keymap unnecessarily
        (and possibly overwrite xinitrc changes) */
     DarwinModeSystemKeymapSeed();
@@ -835,6 +835,7 @@ InitModMap(register KeyClassPtr keyc)
     CARD8 keysPerModifier[8];
     CARD8 mask;
 
+    //    darwinKeyc = keyc;
     if (keyc->modifierKeyMap != NULL)
         xfree (keyc->modifierKeyMap);
 
@@ -886,7 +887,7 @@ DarwinKeyboardReload(DeviceIntPtr pDev)
 
         memmove(pDev->key->modifierMap, keyInfo.modMap, MAP_LENGTH);
         InitModMap(pDev->key);
-    }
+    } else DEBUG_LOG("SetKeySymsMap=0\n");
 
     SendMappingNotify(MappingKeyboard, MIN_KEYCODE, NUM_KEYCODES, 0);
     SendMappingNotify(MappingModifier, 0, 0, 0);
@@ -936,6 +937,32 @@ int DarwinModifierNXKeycodeToNXKey(unsigned char keycode, int *outSide)
 }
 
 /*
+ * DarwinModifierNXMaskToNXKeyCode
+ *      Returns 0 if mask is not a known modifier mask.
+ */
+int DarwinModifierNXMaskToNXKeyCode(int mask)
+{
+  switch (mask) {
+  case NX_ALPHASHIFTMASK:       return XK_Caps_Lock;
+  case NX_SHIFTMASK: ErrorF("Warning: Received NX_SHIFTMASK, treating as NX_DEVICELSHIFTKEYMASK\n");
+  case NX_DEVICELSHIFTKEYMASK:  return NX_MODIFIERKEY_SHIFT; //XK_Shift_L;
+  case NX_DEVICERSHIFTKEYMASK:  return NX_MODIFIERKEY_RSHIFT; //XK_Shift_R;
+  case NX_CONTROLMASK: ErrorF("Warning: Received NX_CONTROLMASK, treating as NX_DEVICELCTLKEYMASK\n");
+  case NX_DEVICELCTLKEYMASK:    return XK_Control_L;
+  case NX_DEVICERCTLKEYMASK:    return XK_Control_R;
+  case NX_ALTERNATEMASK: ErrorF("Warning: Received NX_ALTERNATEMASK, treating as NX_DEVICELALTKEYMASK\n");
+  case NX_DEVICELALTKEYMASK:    return XK_Alt_L;
+  case NX_DEVICERALTKEYMASK:    return XK_Alt_R;
+  case NX_COMMANDMASK: ErrorF("Warning: Received NX_COMMANDMASK, treating as NX_DEVICELCMDKEYMASK\n");
+  case NX_DEVICELCMDKEYMASK:    return XK_Meta_L;
+  case NX_DEVICERCMDKEYMASK:    return XK_Meta_R;
+  case NX_NUMERICPADMASK:       return XK_Num_Lock;
+  case NX_HELPMASK:             return XK_Help;
+  case NX_SECONDARYFNMASK:      return XK_Control_L; // this seems very wrong, but is what the old code did
+    }
+}
+
+/*
  * DarwinModifierNXMaskToNXKey
  *      Returns -1 if mask is not a known modifier mask.
  */
@@ -970,6 +997,29 @@ int DarwinModifierNXMaskToNXKey(int mask)
     return -1;
 }
 
+char * DarwinModifierNXMaskTostring(int mask)
+{
+    switch (mask) {
+    case NX_ALPHASHIFTMASK: return "NX_ALPHASHIFTMASK";
+    case NX_SHIFTMASK: return "NX_SHIFTMASK";
+    case NX_DEVICELSHIFTKEYMASK: return "NX_DEVICELSHIFTKEYMASK";
+    case NX_DEVICERSHIFTKEYMASK: return "NX_DEVICERSHIFTKEYMASK";
+    case NX_CONTROLMASK: return "NX_CONTROLMASK";
+    case NX_DEVICELCTLKEYMASK: return "NX_DEVICELCTLKEYMASK";
+    case NX_DEVICERCTLKEYMASK: return "NX_DEVICERCTLKEYMASK";
+    case NX_ALTERNATEMASK: return "NX_ALTERNATEMASK";
+    case NX_DEVICELALTKEYMASK: return "NX_DEVICELALTKEYMASK";
+    case NX_DEVICERALTKEYMASK: return "NX_DEVICERALTKEYMASK";
+    case NX_COMMANDMASK: return "NX_COMMANDMASK";
+    case NX_DEVICELCMDKEYMASK: return "NX_DEVICELCMDKEYMASK";
+    case NX_DEVICERCMDKEYMASK: return "NX_DEVICERCMDKEYMASK";
+    case NX_NUMERICPADMASK: return "NX_NUMERICPADMASK";
+    case NX_HELPMASK: return "NX_HELPMASK";
+    case NX_SECONDARYFNMASK: return "NX_SECONDARYFNMASK";
+    }
+    return "unknown mask";
+}
+
 /*
  * DarwinModifierNXKeyToNXMask
  *      Returns 0 if key is not a known modifier key.
@@ -1020,7 +1070,7 @@ int DarwinModifierStringToNXKey(const char *str)
  *      This allows the ddx layer to prevent some keys from being remapped
  *      as modifier keys.
  */
-Bool LegalModifier(unsigned int key, DeviceIntPtr pDev)
+Bool LegalModifier(unsigned int key, DevicePtr pDev)
 {
     return 1;
 }
diff --git a/hw/darwin/quartz/Preferences.h b/hw/darwin/quartz/Preferences.h
deleted file mode 100644
index cf43758..0000000
--- a/hw/darwin/quartz/Preferences.h
+++ /dev/null
@@ -1,137 +0,0 @@
-/*
- * Copyright (c) 2002-2003 Torrey T. Lyons. All Rights Reserved.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sublicense, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice shall be included
- * in all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
- * IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT HOLDER(S) BE LIABLE FOR ANY
- * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * Except as contained in this notice, the name(s) of the above copyright
- * holders shall not be used in advertising or otherwise to promote the
- * sale, use or other dealings in this Software without prior written
- * authorization.
- */
-
-#import <Cocoa/Cocoa.h>
-
- at interface Preferences : NSObject
-{
-    IBOutlet NSPanel *window;
-    IBOutlet id displayField;
-    IBOutlet id dockSwitchButton;
-    IBOutlet id fakeButton;
-    IBOutlet id button2ModifiersMatrix;
-    IBOutlet id button3ModifiersMatrix;
-    IBOutlet id switchKeyButton;
-    IBOutlet id keymapFileField;
-    IBOutlet id modeMatrix;
-    IBOutlet id modeWindowButton;
-    IBOutlet id startupHelpButton;
-    IBOutlet id systemBeepButton;
-    IBOutlet id mouseAccelChangeButton;
-    IBOutlet id useXineramaButton;
-    IBOutlet id addToPathButton;
-    IBOutlet id addToPathField;
-    IBOutlet id useDefaultShellMatrix;
-    IBOutlet id useOtherShellField;
-    IBOutlet id depthButton;
-
-    BOOL isGettingKeyCode;
-    int keyCode;
-    int modifiers;
-    NSMutableString *switchString;
-}
-
-- (IBAction)close:(id)sender;
-- (IBAction)pickFile:(id)sender;
-- (IBAction)saveChanges:(id)sender;
-- (IBAction)setKey:(id)sender;
-
-- (BOOL)sendEvent:(NSEvent *)anEvent;
-
-- (void)awakeFromNib;
-- (void)windowWillClose:(NSNotification *)aNotification;
-
-+ (void)setUseKeymapFile:(BOOL)newUseKeymapFile;
-+ (void)setKeymapFile:(NSString *)newFile;
-+ (void)setSwitchString:(NSString *)newString;
-+ (void)setKeyCode:(int)newKeyCode;
-+ (void)setModifiers:(int)newModifiers;
-+ (void)setDisplay:(int)newDisplay;
-+ (void)setDockSwitch:(BOOL)newDockSwitch;
-+ (void)setFakeButtons:(BOOL)newFakeButtons;
-+ (void)setButton2Mask:(int)newFakeMask;
-+ (void)setButton3Mask:(int)newFakeMask;
-+ (void)setMouseAccelChange:(BOOL)newMouseAccelChange;
-+ (void)setUseQDCursor:(int)newUseQDCursor;
-+ (void)setRootless:(BOOL)newRootless;
-+ (void)setUseAGL:(BOOL)newUseAGL;
-+ (void)setModeWindow:(BOOL)newModeWindow;
-+ (void)setStartupHelp:(BOOL)newStartupHelp;
-+ (void)setSystemBeep:(BOOL)newSystemBeep;
-+ (void)setEnableKeyEquivalents:(BOOL)newKeyEquivs;
-+ (void)setXinerama:(BOOL)newXinerama;
-+ (void)setAddToPath:(BOOL)newAddToPath;
-+ (void)setAddToPathString:(NSString *)newAddToPathString;
-+ (void)setUseDefaultShell:(BOOL)newUseDefaultShell;
-+ (void)setShellString:(NSString *)newShellString;
-+ (void)setDepth:(int)newDepth;
-+ (void)setDisplayModeBundles:(NSArray *)newBundles;
-+ (void)saveToDisk;
-
-+ (BOOL)useKeymapFile;
-+ (NSString *)keymapFile;
-+ (NSString *)switchString;
-+ (unsigned int)keyCode;
-+ (unsigned int)modifiers;
-+ (int)display;
-+ (BOOL)dockSwitch;
-+ (BOOL)fakeButtons;
-+ (int)button2Mask;
-+ (int)button3Mask;
-+ (BOOL)mouseAccelChange;
-+ (int)useQDCursor;
-+ (BOOL)rootless;
-+ (BOOL)useAGL;
-+ (BOOL)modeWindow;
-+ (BOOL)startupHelp;
-+ (BOOL)systemBeep;
-+ (BOOL)enableKeyEquivalents;
-+ (BOOL)xinerama;
-+ (BOOL)addToPath;
-+ (NSString *)addToPathString;
-+ (BOOL)useDefaultShell;
-+ (NSString *)shellString;
-+ (int)depth;
-+ (NSArray *)displayModeBundles;
-
- at end
-
-// Possible settings for useQDCursor
-enum {
-    qdCursor_Never,	// never use QuickDraw cursor
-    qdCursor_Not8Bit,	// don't try to use QuickDraw with 8-bit depth
-    qdCursor_Always	// always try to use QuickDraw cursor
-};
-
-// Possible settings for depth
-enum {
-    depth_Current,
-    depth_8Bit,
-    depth_15Bit,
-    depth_24Bit
-};
diff --git a/hw/darwin/quartz/Preferences.m b/hw/darwin/quartz/Preferences.m
deleted file mode 100644
index 0425392..0000000
--- a/hw/darwin/quartz/Preferences.m
+++ /dev/null
@@ -1,598 +0,0 @@
-//
-//  Preferences.m
-//
-//  This class keeps track of the user preferences.
-//
-/*
- * Copyright (c) 2002-2004 Torrey T. Lyons. All Rights Reserved.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sublicense, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice shall be included
- * in all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
- * IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT HOLDER(S) BE LIABLE FOR ANY
- * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * Except as contained in this notice, the name(s) of the above copyright
- * holders shall not be used in advertising or otherwise to promote the
- * sale, use or other dealings in this Software without prior written
- * authorization.
- */
-
-#include <dix-config.h>
-
-#import "quartzCommon.h"
-
-#define BOOL xBOOL
-#include "darwin.h"
-#undef BOOL
-
-#import "Preferences.h"
-
-#include <IOKit/hidsystem/IOLLEvent.h>	// for modifier masks
-
-// Macros to build the path name
-#ifndef XBINDIR
-#define XBINDIR /usr/X11/bin
-#endif
-#define STR(s) #s
-#define XSTRPATH(s) STR(s)
-
-// Keys for user defaults dictionary
-static NSString *X11EnableKeyEquivalentsKey = @"EnableKeyEquivalents";
-
-
- at implementation Preferences
-
-+ (void)initialize
-{
-    // Provide user defaults if needed
-    NSDictionary *appDefaults = [NSDictionary dictionaryWithObjectsAndKeys:
-        [NSNumber numberWithInt:0], @"Display",
-        @"YES", @"FakeButtons",
-        [NSNumber numberWithInt:NX_COMMANDMASK], @"Button2Mask",
-        [NSNumber numberWithInt:NX_ALTERNATEMASK], @"Button3Mask",
-        NSLocalizedString(@"USA.keymapping",@""), @"KeymappingFile",
-        @"YES", @"UseKeymappingFile",
-        NSLocalizedString(@"Cmd-Opt-a",@""), @"SwitchString",
-        @"YES", @"UseRootlessMode",
-        @"YES", @"UseAGLforGLX",
-        @"YES", @"ShowModePickWindow",
-        @"YES", @"ShowStartupHelp",
-        [NSNumber numberWithInt:0], @"SwitchKeyCode",
-        [NSNumber numberWithInt:(NSCommandKeyMask | NSAlternateKeyMask)],
-        @"SwitchModifiers", @"NO", @"UseSystemBeep",
-        @"YES", X11EnableKeyEquivalentsKey,
-        @"YES", @"DockSwitch",
-        @"NO", @"AllowMouseAccelChange",
-        [NSNumber numberWithInt:qdCursor_Not8Bit], @"UseQDCursor",
-        @"YES", @"Xinerama",
-        @"YES", @"AddToPath",
-        [NSString stringWithCString:XSTRPATH(XBINDIR)], @"AddToPathString",
-        @"YES", @"UseDefaultShell",
-        @"/bin/tcsh", @"Shell",
-        [NSNumber numberWithInt:depth_Current], @"Depth",
-#ifdef BUILD_XPR
-        [NSArray arrayWithObjects:@"xpr.bundle", @"cr.bundle", nil],
-#else
-        [NSArray arrayWithObjects:@"cr.bundle", nil],
-#endif
-        @"DisplayModeBundles", nil];
-
-    [super initialize];
-    [[NSUserDefaults standardUserDefaults] registerDefaults:appDefaults];
-}
-
-// Initialize internal state info of switch key button
-- (void)initSwitchKey
-{
-    keyCode = [Preferences keyCode];
-    modifiers = [Preferences modifiers];
-    [switchString setString:[Preferences switchString]];
-}
-
-- (id)init
-{
-    self = [super init];
-
-    isGettingKeyCode=NO;
-    switchString=[[NSMutableString alloc] init];
-    [self initSwitchKey];
-
-    return self;
-}
-
-// Set a modifiers checkbox matrix to match a modifier mask
-- (void)resetMatrix:(NSMatrix *)aMatrix withMask:(int)aMask
-{
-    [aMatrix setState:(aMask & NX_SHIFTMASK)       atRow:0 column:0];
-    [aMatrix setState:(aMask & NX_CONTROLMASK)     atRow:1 column:0];
-    [aMatrix setState:(aMask & NX_COMMANDMASK)     atRow:2 column:0];
-    [aMatrix setState:(aMask & NX_ALTERNATEMASK)   atRow:3 column:0];
-    [aMatrix setState:(aMask & NX_SECONDARYFNMASK) atRow:4 column:0];
-}
-
-// Generate a modifiers mask from a modifiers checkbox matrix
-- (int)getMaskFromMatrix:(NSMatrix *)aMatrix
-{
-    int theMask = 0;
-
-    if ([[aMatrix cellAtRow:0 column:0] state])
-        theMask |= NX_SHIFTMASK;
-    if ([[aMatrix cellAtRow:1 column:0] state])
-        theMask |= NX_CONTROLMASK;
-    if ([[aMatrix cellAtRow:2 column:0] state])
-        theMask |= NX_COMMANDMASK;
-    if ([[aMatrix cellAtRow:3 column:0] state])
-        theMask |= NX_ALTERNATEMASK;
-    if ([[aMatrix cellAtRow:4 column:0] state])
-        theMask |= NX_SECONDARYFNMASK;
-
-    return theMask;
-}
-
-// Set the window controls to the state in user defaults
-- (void)resetWindow
-{
-    if ([Preferences keymapFile] == nil)
-        [keymapFileField setStringValue:@" "];
-    else
-        [keymapFileField setStringValue:[Preferences keymapFile]];
-
-    if ([Preferences switchString] == nil)
-        [switchKeyButton setTitle:@"--"];
-    else
-        [switchKeyButton setTitle:[Preferences switchString]];
-
-    [displayField setIntValue:[Preferences display]];
-    [dockSwitchButton setIntValue:[Preferences dockSwitch]];
-    [fakeButton setIntValue:[Preferences fakeButtons]];
-    [self resetMatrix:button2ModifiersMatrix
-          withMask:[Preferences button2Mask]];
-    [self resetMatrix:button3ModifiersMatrix
-          withMask:[Preferences button3Mask]];
-    [modeMatrix setState:[Preferences rootless] atRow:0 column:1];
-    [startupHelpButton setIntValue:[Preferences startupHelp]];
-    [modeWindowButton setIntValue:[Preferences modeWindow]];
-    [systemBeepButton setIntValue:[Preferences systemBeep]];
-    [mouseAccelChangeButton setIntValue:[Preferences mouseAccelChange]];
-    [useXineramaButton setIntValue:[Preferences xinerama]];
-    [addToPathButton setIntValue:[Preferences addToPath]];
-    [addToPathField setStringValue:[Preferences addToPathString]];
-    [useDefaultShellMatrix setState:![Preferences useDefaultShell]
-                           atRow:1 column:0];
-    [useOtherShellField setStringValue:[Preferences shellString]];
-    [depthButton selectItemAtIndex:[Preferences depth]];
-}
-
-- (void)awakeFromNib
-{
-    [self resetWindow];
-}
-
-// Preference window delegate
-- (void)windowWillClose:(NSNotification *)aNotification
-{
-    [self resetWindow];
-    [self initSwitchKey];
-}
-
-// User cancelled the changes
-- (IBAction)close:(id)sender
-{
-    [window orderOut:nil];
-    [self resetWindow];  	// reset window controls
-    [self initSwitchKey];	// reset switch key state
-}
-
-// Pick keymapping file
-- (IBAction)pickFile:(id)sender
-{
-    int result;
-    NSArray *fileTypes = [NSArray arrayWithObject:@"keymapping"];
-    NSOpenPanel *oPanel = [NSOpenPanel openPanel];
-
-    [oPanel setAllowsMultipleSelection:NO];
-    result = [oPanel runModalForDirectory:@"/System/Library/Keyboards"
-                     file:nil types:fileTypes];
-    if (result == NSOKButton) {
-        [keymapFileField setStringValue:[oPanel filename]];
-    }
-}
-
-// User saved changes
-- (IBAction)saveChanges:(id)sender
-{
-    [Preferences setKeyCode:keyCode];
-    [Preferences setModifiers:modifiers];
-    [Preferences setSwitchString:switchString];
-    [Preferences setKeymapFile:[keymapFileField stringValue]];
-    [Preferences setUseKeymapFile:YES];
-    [Preferences setDisplay:[displayField intValue]];
-    [Preferences setDockSwitch:[dockSwitchButton intValue]];
-    [Preferences setFakeButtons:[fakeButton intValue]];
-    [Preferences setButton2Mask:
-                    [self getMaskFromMatrix:button2ModifiersMatrix]];
-    [Preferences setButton3Mask:
-                    [self getMaskFromMatrix:button3ModifiersMatrix]];
-    [Preferences setRootless:[[modeMatrix cellAtRow:0 column:1] state]];
-    [Preferences setModeWindow:[modeWindowButton intValue]];
-    [Preferences setStartupHelp:[startupHelpButton intValue]];
-    [Preferences setSystemBeep:[systemBeepButton intValue]];
-    [Preferences setMouseAccelChange:[mouseAccelChangeButton intValue]];
-    [Preferences setXinerama:[useXineramaButton intValue]];
-    [Preferences setAddToPath:[addToPathButton intValue]];
-    [Preferences setAddToPathString:[addToPathField stringValue]];
-    [Preferences setUseDefaultShell:
-                    [[useDefaultShellMatrix cellAtRow:0 column:0] state]];
-    [Preferences setShellString:[useOtherShellField stringValue]];
-    [Preferences setDepth:[depthButton indexOfSelectedItem]];
-    [Preferences saveToDisk];
-
-    [window orderOut:nil];
-}
-
-- (IBAction)setKey:(id)sender
-{
-    [switchKeyButton setTitle:NSLocalizedString(@"Press key",@"")];
-    isGettingKeyCode=YES;
-    [switchString setString:@""];
-}
-
-- (BOOL)sendEvent:(NSEvent *)anEvent
-{
-    if(isGettingKeyCode) {
-        if([anEvent type]==NSKeyDown) // wait for keyup
-            return YES;
-        if([anEvent type]!=NSKeyUp)
-            return NO;
-
-        if([anEvent modifierFlags] & NSCommandKeyMask)
-            [switchString appendString:@"Cmd-"];
-        if([anEvent modifierFlags] & NSControlKeyMask)
-            [switchString appendString:@"Ctrl-"];
-        if([anEvent modifierFlags] & NSAlternateKeyMask)
-            [switchString appendString:@"Opt-"];
-        if([anEvent modifierFlags] & NSNumericPadKeyMask) // doesn't work
-            [switchString appendString:@"Num-"];
-        if([anEvent modifierFlags] & NSHelpKeyMask)
-            [switchString appendString:@"Help-"];
-        if([anEvent modifierFlags] & NSFunctionKeyMask) // powerbooks only
-            [switchString appendString:@"Fn-"];
-        
-        [switchString appendString:[anEvent charactersIgnoringModifiers]];
-        [switchKeyButton setTitle:switchString];
-        
-        keyCode = [anEvent keyCode];
-        modifiers = [anEvent modifierFlags];
-        isGettingKeyCode=NO;
-        
-        return YES;
-    }
-    return NO;
-}
-
-+ (void)setKeymapFile:(NSString *)newFile
-{
-    [[NSUserDefaults standardUserDefaults] setObject:newFile
-            forKey:@"KeymappingFile"];
-}
-
-+ (void)setUseKeymapFile:(BOOL)newUseKeymapFile
-{
-    [[NSUserDefaults standardUserDefaults] setBool:newUseKeymapFile
-            forKey:@"UseKeymappingFile"];
-}
-
-+ (void)setSwitchString:(NSString *)newString
-{
-    [[NSUserDefaults standardUserDefaults] setObject:newString
-            forKey:@"SwitchString"];
-}
-
-+ (void)setKeyCode:(int)newKeyCode
-{
-    [[NSUserDefaults standardUserDefaults] setInteger:newKeyCode
-            forKey:@"SwitchKeyCode"];
-}
-
-+ (void)setModifiers:(int)newModifiers
-{
-    [[NSUserDefaults standardUserDefaults] setInteger:newModifiers
-            forKey:@"SwitchModifiers"];
-}
-
-+ (void)setDisplay:(int)newDisplay
-{
-    [[NSUserDefaults standardUserDefaults] setInteger:newDisplay
-            forKey:@"Display"];
-}
-
-+ (void)setDockSwitch:(BOOL)newDockSwitch
-{
-    [[NSUserDefaults standardUserDefaults] setBool:newDockSwitch
-            forKey:@"DockSwitch"];
-}
-
-+ (void)setFakeButtons:(BOOL)newFakeButtons
-{
-    [[NSUserDefaults standardUserDefaults] setBool:newFakeButtons
-            forKey:@"FakeButtons"];
-    // Update the setting used by the X server thread
-    darwinFakeButtons = newFakeButtons;
-}
-
-+ (void)setButton2Mask:(int)newFakeMask
-{
-    [[NSUserDefaults standardUserDefaults] setInteger:newFakeMask
-            forKey:@"Button2Mask"];
-    // Update the setting used by the X server thread
-    darwinFakeMouse2Mask = newFakeMask;
-}
-
-+ (void)setButton3Mask:(int)newFakeMask
-{
-    [[NSUserDefaults standardUserDefaults] setInteger:newFakeMask
-            forKey:@"Button3Mask"];
-    // Update the setting used by the X server thread
-    darwinFakeMouse3Mask = newFakeMask;
-}
-
-+ (void)setMouseAccelChange:(BOOL)newMouseAccelChange
-{
-    [[NSUserDefaults standardUserDefaults] setBool:newMouseAccelChange
-            forKey:@"AllowMouseAccelChange"];
-    // Update the setting used by the X server thread
-    //    darwinMouseAccelChange = newMouseAccelChange;
-}
-
-+ (void)setUseQDCursor:(int)newUseQDCursor
-{
-    [[NSUserDefaults standardUserDefaults] setInteger:newUseQDCursor
-            forKey:@"UseQDCursor"];
-}
-
-+ (void)setModeWindow:(BOOL)newModeWindow
-{
-    [[NSUserDefaults standardUserDefaults] setBool:newModeWindow
-            forKey:@"ShowModePickWindow"];
-}
-
-+ (void)setRootless:(BOOL)newRootless
-{
-    [[NSUserDefaults standardUserDefaults] setBool:newRootless
-            forKey:@"UseRootlessMode"];
-}
-
-+ (void)setUseAGL:(BOOL)newUseAGL
-{
-    [[NSUserDefaults standardUserDefaults] setBool:newUseAGL
-            forKey:@"UseAGLforGLX"];
-}
-
-+ (void)setStartupHelp:(BOOL)newStartupHelp
-{
-    [[NSUserDefaults standardUserDefaults] setBool:newStartupHelp
-            forKey:@"ShowStartupHelp"];
-}
-
-+ (void)setSystemBeep:(BOOL)newSystemBeep
-{
-    [[NSUserDefaults standardUserDefaults] setBool:newSystemBeep
-            forKey:@"UseSystemBeep"];
-    // Update the setting used by the X server thread
-    quartzUseSysBeep = newSystemBeep;
-}
-
-+ (void)setEnableKeyEquivalents:(BOOL)newKeyEquivs
-{
-    [[NSUserDefaults standardUserDefaults] setBool:newKeyEquivs
-            forKey:X11EnableKeyEquivalentsKey];
-    // Update the setting used by the X server thread
-    quartzEnableKeyEquivalents = newKeyEquivs;
-}
-
-+ (void)setXinerama:(BOOL)newXinerama
-{
-    [[NSUserDefaults standardUserDefaults] setBool:newXinerama
-            forKey:@"Xinerama"];
-}
-
-+ (void)setAddToPath:(BOOL)newAddToPath
-{
-    [[NSUserDefaults standardUserDefaults] setBool:newAddToPath
-            forKey:@"AddToPath"];
-}
-
-+ (void)setAddToPathString:(NSString *)newAddToPathString
-{
-    [[NSUserDefaults standardUserDefaults] setObject:newAddToPathString
-            forKey:@"AddToPathString"];
-}
-
-+ (void)setUseDefaultShell:(BOOL)newUseDefaultShell
-{
-    [[NSUserDefaults standardUserDefaults] setBool:newUseDefaultShell
-            forKey:@"UseDefaultShell"];
-}
-
-+ (void)setShellString:(NSString *)newShellString
-{
-    [[NSUserDefaults standardUserDefaults] setObject:newShellString
-            forKey:@"Shell"];
-}
-
-+ (void)setDepth:(int)newDepth
-{
-    [[NSUserDefaults standardUserDefaults] setInteger:newDepth
-            forKey:@"Depth"];
-}
-
-+ (void)setDisplayModeBundles:(NSArray *)newBundles
-{
-    [[NSUserDefaults standardUserDefaults] setObject:newBundles
-            forKey:@"DisplayModeBundles"];
-}
-
-+ (void)saveToDisk
-{
-    [[NSUserDefaults standardUserDefaults] synchronize];
-}
-
-+ (BOOL)useKeymapFile
-{
-    return [[NSUserDefaults standardUserDefaults]
-                boolForKey:@"UseKeymappingFile"];
-}
-
-+ (NSString *)keymapFile
-{
-    return [[NSUserDefaults standardUserDefaults]
-                stringForKey:@"KeymappingFile"];
-}
-
-+ (NSString *)switchString
-{
-    return [[NSUserDefaults standardUserDefaults]
-                stringForKey:@"SwitchString"];
-}
-
-+ (unsigned int)keyCode
-{
-    return [[NSUserDefaults standardUserDefaults]
-                integerForKey:@"SwitchKeyCode"];
-}
-
-+ (unsigned int)modifiers
-{
-    return [[NSUserDefaults standardUserDefaults]
-                integerForKey:@"SwitchModifiers"];
-}
-
-+ (int)display
-{
-    return [[NSUserDefaults standardUserDefaults]
-                integerForKey:@"Display"];
-}
-
-+ (BOOL)dockSwitch
-{
-    return [[NSUserDefaults standardUserDefaults] boolForKey:@"DockSwitch"];
-}
-
-+ (BOOL)fakeButtons
-{
-    return [[NSUserDefaults standardUserDefaults] boolForKey:@"FakeButtons"];
-}
-
-+ (int)button2Mask
-{
-    return [[NSUserDefaults standardUserDefaults]
-                integerForKey:@"Button2Mask"];
-}
-
-+ (int)button3Mask
-{
-    return [[NSUserDefaults standardUserDefaults]
-                integerForKey:@"Button3Mask"];
-}
-
-+ (BOOL)mouseAccelChange
-{
-    return [[NSUserDefaults standardUserDefaults]
-                boolForKey:@"AllowMouseAccelChange"];
-}
-
-+ (int)useQDCursor
-{
-    return [[NSUserDefaults standardUserDefaults]
-                integerForKey:@"UseQDCursor"];
-}
-
-+ (BOOL)rootless
-{
-    return [[NSUserDefaults standardUserDefaults]
-                boolForKey:@"UseRootlessMode"];
-}
-
-+ (BOOL)useAGL
-{
-    return [[NSUserDefaults standardUserDefaults]
-                boolForKey:@"UseAGLforGLX"];
-}
-
-+ (BOOL)modeWindow
-{
-    return [[NSUserDefaults standardUserDefaults]
-                boolForKey:@"ShowModePickWindow"];
-}
-
-+ (BOOL)startupHelp
-{
-    return [[NSUserDefaults standardUserDefaults]
-                boolForKey:@"ShowStartupHelp"];
-}
-
-+ (BOOL)systemBeep
-{
-    return [[NSUserDefaults standardUserDefaults] boolForKey:@"UseSystemBeep"];
-}
-
-+ (BOOL)enableKeyEquivalents
-{
-    return [[NSUserDefaults standardUserDefaults] boolForKey:X11EnableKeyEquivalentsKey];
-}
-
-+ (BOOL)xinerama
-{
-    return [[NSUserDefaults standardUserDefaults] boolForKey:@"Xinerama"];
-}
-
-+ (BOOL)addToPath
-{
-    return [[NSUserDefaults standardUserDefaults] boolForKey:@"AddToPath"];
-}
-
-+ (NSString *)addToPathString
-{
-    return [[NSUserDefaults standardUserDefaults]
-                stringForKey:@"AddToPathString"];
-}
-
-+ (BOOL)useDefaultShell
-{
-    return [[NSUserDefaults standardUserDefaults]
-                boolForKey:@"UseDefaultShell"];
-}
-
-+ (NSString *)shellString
-{
-    return [[NSUserDefaults standardUserDefaults]
-                stringForKey:@"Shell"];
-}
-
-+ (int)depth
-{
-    return [[NSUserDefaults standardUserDefaults]
-                integerForKey:@"Depth"];
-}
-
-+ (NSArray *)displayModeBundles
-{
-    return [[NSUserDefaults standardUserDefaults]
-                objectForKey:@"DisplayModeBundles"];
-}
-
- at end
diff --git a/hw/darwin/quartz/X11Application.m b/hw/darwin/quartz/X11Application.m
index 6d079ee..60d11c5 100644
--- a/hw/darwin/quartz/X11Application.m
+++ b/hw/darwin/quartz/X11Application.m
@@ -27,7 +27,7 @@
  promote the sale, use or other dealings in this Software without
  prior written authorization. */
 
-#include "../quartz/quartzCommon.h"
+#include "quartzCommon.h"
 
 #import "X11Application.h"
 #include <Carbon/Carbon.h>
@@ -35,7 +35,7 @@
 /* ouch! */
 #define BOOL X_BOOL
 # include "darwin.h"
-# include "../quartz/quartz.h"
+# include "quartz.h"
 # define _APPLEWM_SERVER_
 # include "X11/extensions/applewm.h"
 # include "micmap.h"
diff --git a/hw/darwin/quartz/X11Controller.h b/hw/darwin/quartz/X11Controller.h
index 8d17fd9..f1399dc 100644
--- a/hw/darwin/quartz/X11Controller.h
+++ b/hw/darwin/quartz/X11Controller.h
@@ -33,7 +33,7 @@
 #if __OBJC__
 
 #import <Cocoa/Cocoa.h>
-#include "../quartz/xpr/x-list.h"
+#include "xpr/x-list.h"
 
 @interface X11Controller : NSObject
 {
diff --git a/hw/darwin/quartz/X11Controller.m b/hw/darwin/quartz/X11Controller.m
index fbc9c74..6929566 100644
--- a/hw/darwin/quartz/X11Controller.m
+++ b/hw/darwin/quartz/X11Controller.m
@@ -29,7 +29,7 @@
 
 #define DEFAULT_PATH "/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/X11/bin"
 
-#include "../quartz/quartzCommon.h"
+#include "quartzCommon.h"
 
 #import "X11Controller.h"
 #import "X11Application.h"
@@ -39,10 +39,10 @@
 #define BOOL X_BOOL
 #include "opaque.h"
 # include "darwin.h"
-# include "../quartz/quartz.h"
+# include "quartz.h"
 # define _APPLEWM_SERVER_
 # include "X11/extensions/applewm.h"
-# include "../quartz/applewmExt.h"
+# include "applewmExt.h"
 #undef BOOL
 
 #include <stdio.h>
@@ -51,8 +51,6 @@
 #include <sys/types.h>
 #include <sys/wait.h>
 
-#define TRACE() fprintf (stderr, "%s\n", __FUNCTION__)
-
 @implementation X11Controller
 
 - (void) awakeFromNib
diff --git a/hw/darwin/quartz/cr/cr.h b/hw/darwin/quartz/cr/cr.h
index d6779ae..0ebad5d 100644
--- a/hw/darwin/quartz/cr/cr.h
+++ b/hw/darwin/quartz/cr/cr.h
@@ -1,7 +1,6 @@
 /*
  * Internal definitions of the Cocoa rootless implementation
- */
-/*
+ *
  * Copyright (c) 2003 Torrey T. Lyons. All Rights Reserved.
  *
  * Permission is hereby granted, free of charge, to any person obtaining a
diff --git a/hw/darwin/quartz/fullscreen/quartzCursor.c b/hw/darwin/quartz/fullscreen/quartzCursor.c
index a97a36d..5247781 100644
--- a/hw/darwin/quartz/fullscreen/quartzCursor.c
+++ b/hw/darwin/quartz/fullscreen/quartzCursor.c
@@ -2,8 +2,6 @@
  *
  * Support for using the Quartz Window Manager cursor
  *
- **************************************************************/
-/*
  * Copyright (c) 2001-2003 Torrey T. Lyons and Greg Parker.
  *                 All Rights Reserved.
  *
diff --git a/hw/darwin/quartz/quartz.c b/hw/darwin/quartz/quartz.c
index 8565e34..23707a0 100644
--- a/hw/darwin/quartz/quartz.c
+++ b/hw/darwin/quartz/quartz.c
@@ -504,18 +504,6 @@ void DarwinModeProcessEvent(
 	    RootlessOrderAllWindows();
             break;
 
-        case kXDarwinWindowState:
-	  ErrorF("kXDarwinWindowState\n");
-	  break;
-    case kXDarwinWindowMoved: {
-	  WindowPtr pWin = (WindowPtr)xe->u.clientMessage.u.l.longs0;
-	  short x = xe->u.clientMessage.u.l.longs1,
-	        y = xe->u.clientMessage.u.l.longs2;
-	  ErrorF("kXDarwinWindowMoved(%p, %hd, %hd)\n", pWin, x, y);
-	  RootlessMoveWindow(pWin, x, y, pWin->nextSib, VTMove);
-    }
-	  break;
-
         default:
             ErrorF("Unknown application defined event type %d.\n", xe->u.u.type);
     }
diff --git a/hw/darwin/quartz/quartzCursor.c b/hw/darwin/quartz/quartzCursor.c
index 0fa04e6..15f5553 100644
--- a/hw/darwin/quartz/quartzCursor.c
+++ b/hw/darwin/quartz/quartzCursor.c
@@ -2,8 +2,6 @@
  *
  * Support for using the Quartz Window Manager cursor
  *
- **************************************************************/
-/*
  * Copyright (c) 2001-2003 Torrey T. Lyons and Greg Parker.
  *                 All Rights Reserved.
  *
@@ -92,9 +90,7 @@ static pthread_cond_t cursorCondition;
         /* Acquire lock and tell the main thread to change cursor */    \
         pthread_mutex_lock(&cursorMutex);                               \
         currentCursor = (CCrsrHandle) (cursorH);                        \
-#ifndef INXQUARTZ
         QuartzMessageMainThread(kQuartzCursorUpdate, NULL, 0);          \
-#endif
                                                                         \
         /* Wait for the main thread to change the cursor */             \
         pthread_cond_wait(&cursorCondition, &cursorMutex);              \
diff --git a/hw/darwin/quartz/quartzKeyboard.c b/hw/darwin/quartz/quartzKeyboard.c
index b40d81e..49c5bfd 100644
--- a/hw/darwin/quartz/quartzKeyboard.c
+++ b/hw/darwin/quartz/quartzKeyboard.c
@@ -3,7 +3,7 @@
 
    Code to build a keymap using the Carbon Keyboard Layout API.
 
-   Copyright (c) 2003, 2007 Apple Inc.
+   Copyright (c) 2003-2007 Apple Inc.
 
    Permission is hereby granted, free of charge, to any person
    obtaining a copy of this software and associated documentation files
@@ -34,6 +34,7 @@
 #include <dix-config.h>
 
 #include "quartzCommon.h"
+
 #include <CoreServices/CoreServices.h>
 #include <Carbon/Carbon.h>
 
diff --git a/hw/darwin/quartz/quartzPasteboard.c b/hw/darwin/quartz/quartzPasteboard.c
index af25fc8..2130197 100644
--- a/hw/darwin/quartz/quartzPasteboard.c
+++ b/hw/darwin/quartz/quartzPasteboard.c
@@ -33,6 +33,7 @@
 #include <dix-config.h>
 
 #include "quartzPasteboard.h"
+
 #include <X11/Xatom.h>
 #include "windowstr.h"
 #include "propertyst.h"
diff --git a/hw/darwin/quartz/quartzStartup.c b/hw/darwin/quartz/quartzStartup.c
index 0381a9f..6f45949 100644
--- a/hw/darwin/quartz/quartzStartup.c
+++ b/hw/darwin/quartz/quartzStartup.c
@@ -2,8 +2,6 @@
  *
  * Startup code for the Quartz Darwin X Server
  *
- **************************************************************/
-/*
  * Copyright (c) 2001-2004 Torrey T. Lyons. All Rights Reserved.
  *
  * Permission is hereby granted, free of charge, to any person obtaining a
diff --git a/hw/darwin/quartz/xpr/dri.c b/hw/darwin/quartz/xpr/dri.c
index fd0bff1..4ade249 100644
--- a/hw/darwin/quartz/xpr/dri.c
+++ b/hw/darwin/quartz/xpr/dri.c
@@ -36,8 +36,13 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 
 #include <dix-config.h>
 
+#ifdef XFree86LOADER
+#include "xf86.h"
+#include "xf86_ansic.h"
+#else
 #include <sys/time.h>
 #include <unistd.h>
+#endif
 
 #define NEED_REPLIES
 #define NEED_EVENTS
diff --git a/hw/darwin/quartz/xpr/xpr.h b/hw/darwin/quartz/xpr/xpr.h
index bd8e63e..ddc6d0c 100644
--- a/hw/darwin/quartz/xpr/xpr.h
+++ b/hw/darwin/quartz/xpr/xpr.h
@@ -1,7 +1,6 @@
 /*
  * Xplugin rootless implementation
- */
-/*
+ *
  * Copyright (c) 2003 Torrey T. Lyons. All Rights Reserved.
  *
  * Permission is hereby granted, free of charge, to any person obtaining a
diff --git a/hw/darwin/quartz/xpr/xprAppleWM.c b/hw/darwin/quartz/xpr/xprAppleWM.c
index 1573d21..f639b55 100644
--- a/hw/darwin/quartz/xpr/xprAppleWM.c
+++ b/hw/darwin/quartz/xpr/xprAppleWM.c
@@ -1,7 +1,6 @@
 /*
  * Xplugin rootless implementation functions for AppleWM extension
- */
-/*
+ *
  * Copyright (c) 2002 Apple Computer, Inc. All rights reserved.
  * Copyright (c) 2003 Torrey T. Lyons. All Rights Reserved.
  *
diff --git a/hw/darwin/quartz/xpr/xprScreen.c b/hw/darwin/quartz/xpr/xprScreen.c
index 57a60a2..aff1901 100644
--- a/hw/darwin/quartz/xpr/xprScreen.c
+++ b/hw/darwin/quartz/xpr/xprScreen.c
@@ -117,7 +117,7 @@ eventHandler(unsigned int type, const void *arg,
 }
 
 /*
- * displayScreenBounds
+ * displayAtIndex
  *  Return the display ID for a particular display index.
  */
 static CGDirectDisplayID
@@ -233,7 +233,6 @@ xprDisplayInit(void)
         darwinScreensFound =  1;
 
     if (xp_init(XP_BACKGROUND_EVENTS | XP_NO_DEFERRED_UPDATES) != Success)
-    {
         FatalError("Could not initialize the Xplugin library.");
 
     xp_select_events(XP_EVENT_DISPLAY_CHANGED
@@ -324,6 +323,9 @@ static Bool
 xprSetupScreen(int index, ScreenPtr pScreen)
 {
     // Add alpha protecting replacements for fb screen functions
+    pScreen->PaintWindowBackground = SafeAlphaPaintWindow;
+    pScreen->PaintWindowBorder = SafeAlphaPaintWindow;
+
 #ifdef RENDER
     {
         PictureScreenPtr ps = GetPictureScreen(pScreen);
diff --git a/hw/darwin/utils/README.txt b/hw/darwin/utils/README.txt
index fb6d439..1dd6479 100644
--- a/hw/darwin/utils/README.txt
+++ b/hw/darwin/utils/README.txt
@@ -105,7 +105,3 @@ The implementation of dumpkeymap is based upon information gathered on
 September 3, 1997 by Eric Sunshine <sunshine at sunshineco.com> and Paul S.
 McCarthy <zarnuk at zarnuk.com> during an effort to reverse engineer the format
 of the NeXT .keymapping file.
-
-
-
-$XFree86: xc/programs/Xserver/hw/darwin/utils/README.txt,v 1.1 2000/12/01 19:47:39 dawes Exp $
diff --git a/hw/darwin/utils/dumpkeymap.man b/hw/darwin/utils/dumpkeymap.man
index 90a2cd0..02b09e6 100644
--- a/hw/darwin/utils/dumpkeymap.man
+++ b/hw/darwin/utils/dumpkeymap.man
@@ -30,8 +30,6 @@
 //
 //=============================================================================
 //
-// $XFree86$
-//
 ..
 .ig
 //-----------------------------------------------------------------------------
commit 5e950123daa167c9ffe289b3bd89e3bd288da0e3
Author: Jeremy Huddleston <jeremy at tifa.local>
Date:   Wed Nov 21 23:32:00 2007 -0800

    Darwin: Removed cvs tags from Xquartz man page

diff --git a/hw/darwin/Xquartz.man b/hw/darwin/Xquartz.man
index edac30e..37a7f1a 100644
--- a/hw/darwin/Xquartz.man
+++ b/hw/darwin/Xquartz.man
@@ -1,5 +1,3 @@
-.\" $XFree86: xc/programs/Xserver/hw/darwin/XDarwin.man,v 1.4 2002/01/09 18:01:58 torrey Exp $
-.\"
 .TH XQUARTZ 1 __vendorversion__
 .SH NAME
 Xquartz \- X window system server for Quartz operating system
commit 3a2f714eea475a13cde65921e24c7ee3f70ffc3c
Author: Jeremy Huddleston <jeremy at tifa.local>
Date:   Wed Nov 21 23:30:37 2007 -0800

    Darwin: Removed .svn dir

diff --git a/hw/darwin/apple/English.lproj/main.nib/.svn/entries b/hw/darwin/apple/English.lproj/main.nib/.svn/entries
deleted file mode 100644
index 95a15f2..0000000
--- a/hw/darwin/apple/English.lproj/main.nib/.svn/entries
+++ /dev/null
@@ -1,65 +0,0 @@
-8
-
-dir
-29110
-svn+ssh://src.apple.com/svn/BSD/X11server/trunk/darwin/apple/English.lproj/main.nib
-svn+ssh://src.apple.com/svn/BSD
-
-
-
-2007-02-03T03:06:20.842932Z
-28761
-bbyer
-
-
-svn:special svn:externals svn:needs-lock
-
-
-
-
-
-
-
-
-
-
-
-e92bca22-270c-0410-9cea-e3f1106b6a1c
-
-info.nib
-file
-
-
-
-
-2007-02-27T01:00:07.000000Z
-456347804c516786b1d1339ce2ef50a2
-2007-02-03T03:06:20.842932Z
-28761
-bbyer
-
-keyedobjects.nib
-file
-
-
-
-
-2007-02-27T01:00:07.000000Z
-eb3010372b09768c846df0d996cfdd8d
-2007-02-03T03:06:20.842932Z
-28761
-bbyer
-has-props
-
-classes.nib
-file
-
-
-
-
-2007-02-27T01:00:07.000000Z
-0ae2660c3afabbd5aa02fc34712c96e6
-2007-02-03T03:06:20.842932Z
-28761
-bbyer
-
diff --git a/hw/darwin/apple/English.lproj/main.nib/.svn/format b/hw/darwin/apple/English.lproj/main.nib/.svn/format
deleted file mode 100644
index 45a4fb7..0000000
--- a/hw/darwin/apple/English.lproj/main.nib/.svn/format
+++ /dev/null
@@ -1 +0,0 @@
-8
diff --git a/hw/darwin/apple/English.lproj/main.nib/.svn/prop-base/keyedobjects.nib.svn-base b/hw/darwin/apple/English.lproj/main.nib/.svn/prop-base/keyedobjects.nib.svn-base
deleted file mode 100644
index 5e9587e..0000000
--- a/hw/darwin/apple/English.lproj/main.nib/.svn/prop-base/keyedobjects.nib.svn-base
+++ /dev/null
@@ -1,5 +0,0 @@
-K 13
-svn:mime-type
-V 24
-application/octet-stream
-END
diff --git a/hw/darwin/apple/English.lproj/main.nib/.svn/text-base/classes.nib.svn-base b/hw/darwin/apple/English.lproj/main.nib/.svn/text-base/classes.nib.svn-base
deleted file mode 100644
index a82159b..0000000
--- a/hw/darwin/apple/English.lproj/main.nib/.svn/text-base/classes.nib.svn-base
+++ /dev/null
@@ -1,318 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
-	<key>IBClasses</key>
-	<array>
-		<dict>
-			<key>CLASS</key>
-			<string>IBLibraryObjectTemplate</string>
-			<key>LANGUAGE</key>
-			<string>ObjC</string>
-			<key>OUTLETS</key>
-			<dict>
-				<key>draggedView</key>
-				<string>NSView</string>
-				<key>representedObject</key>
-				<string>NSObject</string>
-			</dict>
-			<key>SUPERCLASS</key>
-			<string>NSView</string>
-		</dict>
-		<dict>
-			<key>CLASS</key>
-			<string>IBInspector</string>
-			<key>LANGUAGE</key>
-			<string>ObjC</string>
-			<key>OUTLETS</key>
-			<dict>
-				<key>inspectorView</key>
-				<string>NSView</string>
-			</dict>
-			<key>SUPERCLASS</key>
-			<string>NSObject</string>
-		</dict>
-		<dict>
-			<key>CLASS</key>
-			<string>NSDateFormatter</string>
-			<key>LANGUAGE</key>
-			<string>ObjC</string>
-			<key>SUPERCLASS</key>
-			<string>NSFormatter</string>
-		</dict>
-		<dict>
-			<key>ACTIONS</key>
-			<dict>
-				<key>apps_table_cancel</key>
-				<string>id</string>
-				<key>apps_table_delete</key>
-				<string>id</string>
-				<key>apps_table_done</key>
-				<string>id</string>
-				<key>apps_table_duplicate</key>
-				<string>id</string>
-				<key>apps_table_new</key>
-				<string>id</string>
-				<key>apps_table_show</key>
-				<string>id</string>
-				<key>bring_to_front</key>
-				<string>id</string>
-				<key>close_window</key>
-				<string>id</string>
-				<key>enable_fullscreen_changed</key>
-				<string>id</string>
-				<key>minimize_window</key>
-				<string>id</string>
-				<key>next_window</key>
-				<string>id</string>
-				<key>prefs_changed</key>
-				<string>id</string>
-				<key>prefs_show</key>
-				<string>id</string>
-				<key>previous_window</key>
-				<string>id</string>
-				<key>toggle_fullscreen</key>
-				<string>id</string>
-				<key>x11_help</key>
-				<string>id</string>
-				<key>zoom_window</key>
-				<string>id</string>
-			</dict>
-			<key>CLASS</key>
-			<string>X11Controller</string>
-			<key>LANGUAGE</key>
-			<string>ObjC</string>
-			<key>OUTLETS</key>
-			<dict>
-				<key>apps_separator</key>
-				<string>id</string>
-				<key>apps_table</key>
-				<string>id</string>
-				<key>depth</key>
-				<string>id</string>
-				<key>dock_apps_menu</key>
-				<string>id</string>
-				<key>dock_menu</key>
-				<string>id</string>
-				<key>dock_window_separator</key>
-				<string>id</string>
-				<key>enable_auth</key>
-				<string>id</string>
-				<key>enable_fullscreen</key>
-				<string>id</string>
-				<key>enable_keyequivs</key>
-				<string>id</string>
-				<key>enable_tcp</key>
-				<string>id</string>
-				<key>fake_buttons</key>
-				<string>id</string>
-				<key>prefs_panel</key>
-				<string>id</string>
-				<key>sync_keymap</key>
-				<string>id</string>
-				<key>toggle_fullscreen_item</key>
-				<string>id</string>
-				<key>use_sysbeep</key>
-				<string>id</string>
-				<key>window_separator</key>
-				<string>id</string>
-				<key>x11_about_item</key>
-				<string>id</string>
-			</dict>
-			<key>SUPERCLASS</key>
-			<string>NSObject</string>
-		</dict>
-		<dict>
-			<key>CLASS</key>
-			<string>NSNumberFormatter</string>
-			<key>LANGUAGE</key>
-			<string>ObjC</string>
-			<key>SUPERCLASS</key>
-			<string>NSFormatter</string>
-		</dict>
-		<dict>
-			<key>CLASS</key>
-			<string>NSFormatter</string>
-			<key>LANGUAGE</key>
-			<string>ObjC</string>
-			<key>SUPERCLASS</key>
-			<string>NSObject</string>
-		</dict>
-		<dict>
-			<key>ACTIONS</key>
-			<dict>
-				<key>alignCenter:</key>
-				<string>id</string>
-				<key>alignJustified:</key>
-				<string>id</string>
-				<key>alignLeft:</key>
-				<string>id</string>
-				<key>alignRight:</key>
-				<string>id</string>
-				<key>arrangeInFront:</key>
-				<string>id</string>
-				<key>centerSelectionInVisibleArea:</key>
-				<string>id</string>
-				<key>changeFont:</key>
-				<string>id</string>
-				<key>checkSpelling:</key>
-				<string>id</string>
-				<key>clear:</key>
-				<string>id</string>
-				<key>clearRecentDocuments:</key>
-				<string>id</string>
-				<key>complete:</key>
-				<string>id</string>
-				<key>copy:</key>
-				<string>id</string>
-				<key>copyFont:</key>
-				<string>id</string>
-				<key>copyRuler:</key>
-				<string>id</string>
-				<key>cut:</key>
-				<string>id</string>
-				<key>delete:</key>
-				<string>id</string>
-				<key>deminiaturize:</key>
-				<string>id</string>
-				<key>fax:</key>
-				<string>id</string>
-				<key>hide:</key>
-				<string>id</string>
-				<key>hideOtherApplications:</key>
-				<string>id</string>
-				<key>loosenKerning:</key>
-				<string>id</string>
-				<key>lowerBaseline:</key>
-				<string>id</string>
-				<key>makeKeyAndOrderFront:</key>
-				<string>id</string>
-				<key>miniaturize:</key>
-				<string>id</string>
-				<key>newDocument:</key>
-				<string>id</string>
-				<key>openDocument:</key>
-				<string>id</string>
-				<key>orderBack:</key>
-				<string>id</string>
-				<key>orderFront:</key>
-				<string>id</string>
-				<key>orderFrontColorPanel:</key>
-				<string>id</string>
-				<key>orderFrontHelpPanel:</key>
-				<string>id</string>
-				<key>orderOut:</key>
-				<string>id</string>
-				<key>outline:</key>
-				<string>id</string>
-				<key>paste:</key>
-				<string>id</string>
-				<key>pasteAsPlainText:</key>
-				<string>id</string>
-				<key>pasteAsRichText:</key>
-				<string>id</string>
-				<key>pasteFont:</key>
-				<string>id</string>
-				<key>pasteRuler:</key>
-				<string>id</string>
-				<key>pause:</key>
-				<string>id</string>
-				<key>performClose:</key>
-				<string>id</string>
-				<key>performFindPanelAction:</key>
-				<string>id</string>
-				<key>performMiniaturize:</key>
-				<string>id</string>
-				<key>performZoom:</key>
-				<string>id</string>
-				<key>play:</key>
-				<string>id</string>
-				<key>print:</key>
-				<string>id</string>
-				<key>printDocument:</key>
-				<string>id</string>
-				<key>raiseBaseline:</key>
-				<string>id</string>
-				<key>record:</key>
-				<string>id</string>
-				<key>redo:</key>
-				<string>id</string>
-				<key>resume:</key>
-				<string>id</string>
-				<key>revertDocumentToSaved:</key>
-				<string>id</string>
-				<key>run:</key>
-				<string>id</string>
-				<key>runPageLayout:</key>
-				<string>id</string>
-				<key>runToolbarCustomizationPalette:</key>
-				<string>id</string>
-				<key>saveAllDocuments:</key>
-				<string>id</string>
-				<key>saveDocument:</key>
-				<string>id</string>
-				<key>saveDocumentAs:</key>
-				<string>id</string>
-				<key>saveDocumentTo:</key>
-				<string>id</string>
-				<key>selectAll:</key>
-				<string>id</string>
-				<key>selectText:</key>
-				<string>id</string>
-				<key>showGuessPanel:</key>
-				<string>id</string>
-				<key>showHelp:</key>
-				<string>id</string>
-				<key>start:</key>
-				<string>id</string>
-				<key>startSpeaking:</key>
-				<string>id</string>
-				<key>stop:</key>
-				<string>id</string>
-				<key>stopSpeaking:</key>
-				<string>id</string>
-				<key>subscript:</key>
-				<string>id</string>
-				<key>superscript:</key>
-				<string>id</string>
-				<key>terminate:</key>
-				<string>id</string>
-				<key>tightenKerning:</key>
-				<string>id</string>
-				<key>toggleContinuousSpellChecking:</key>
-				<string>id</string>
-				<key>toggleRuler:</key>
-				<string>id</string>
-				<key>toggleToolbarShown:</key>
-				<string>id</string>
-				<key>turnOffKerning:</key>
-				<string>id</string>
-				<key>turnOffLigatures:</key>
-				<string>id</string>
-				<key>underline:</key>
-				<string>id</string>
-				<key>undo:</key>
-				<string>id</string>
-				<key>unhideAllApplications:</key>
-				<string>id</string>
-				<key>unscript:</key>
-				<string>id</string>
-				<key>useAllLigatures:</key>
-				<string>id</string>
-				<key>useStandardKerning:</key>
-				<string>id</string>
-				<key>useStandardLigatures:</key>
-				<string>id</string>
-			</dict>
-			<key>CLASS</key>
-			<string>FirstResponder</string>
-			<key>LANGUAGE</key>
-			<string>ObjC</string>
-			<key>SUPERCLASS</key>
-			<string>NSObject</string>
-		</dict>
-	</array>
-	<key>IBVersion</key>
-	<integer>1</integer>
-</dict>
-</plist>
diff --git a/hw/darwin/apple/English.lproj/main.nib/.svn/text-base/info.nib.svn-base b/hw/darwin/apple/English.lproj/main.nib/.svn/text-base/info.nib.svn-base
deleted file mode 100644
index 88bc626..0000000
--- a/hw/darwin/apple/English.lproj/main.nib/.svn/text-base/info.nib.svn-base
+++ /dev/null
@@ -1,18 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
-	<key>IBFramework Version</key>
-	<string>588</string>
-	<key>IBOpenObjects</key>
-	<array>
-		<integer>244</integer>
-		<integer>29</integer>
-		<integer>423</integer>
-	</array>
-	<key>IBSystem Version</key>
-	<string>9A356</string>
-	<key>targetFramework</key>
-	<string>IBCocoaFramework</string>
-</dict>
-</plist>
diff --git a/hw/darwin/apple/English.lproj/main.nib/.svn/text-base/keyedobjects.nib.svn-base b/hw/darwin/apple/English.lproj/main.nib/.svn/text-base/keyedobjects.nib.svn-base
deleted file mode 100644
index 8b31450..0000000
Binary files a/hw/darwin/apple/English.lproj/main.nib/.svn/text-base/keyedobjects.nib.svn-base and /dev/null differ
commit 602de4f70b6f4aab93b514f3a01917bd5d4ad640
Author: Jeremy Huddleston <jeremy at tifa.local>
Date:   Wed Nov 21 16:53:10 2007 -0800

    Darwin: Use UTF8String since lossyCString is deprecated
    (cherry picked from commit 1786f9464af51ff606a612aec6fe420fa9688a28)

diff --git a/hw/darwin/quartz/quartzCocoa.m b/hw/darwin/quartz/quartzCocoa.m
index 46a9828..48cadc6 100644
--- a/hw/darwin/quartz/quartzCocoa.m
+++ b/hw/darwin/quartz/quartzCocoa.m
@@ -94,7 +94,7 @@ char *QuartzReadCocoaPasteboard(void)
         char *buffer;
 
         if (! string) return NULL;
-        buffer = (char *) [string lossyCString];
+        buffer = (char *) [string UTF8String];
         text = (char *) malloc(strlen(buffer)+1);
         if (text)
             strcpy(text, buffer);
commit 13666e287c347aab2a5e9d8ee5f6bb29b9b85171
Author: Ben Byer <bbyer at bbyer.local>
Date:   Sun Nov 18 17:44:12 2007 -0800

    Darwin: Added some DEBUG_LOG sauce to the XP_EVENT handling code
    (cherry picked from commit ec84a4cef66a2b46ed71f9758c434ea629d2f270)

diff --git a/hw/darwin/quartz/xpr/xprScreen.c b/hw/darwin/quartz/xpr/xprScreen.c
index 2db249f..57a60a2 100644
--- a/hw/darwin/quartz/xpr/xprScreen.c
+++ b/hw/darwin/quartz/xpr/xprScreen.c
@@ -63,26 +63,24 @@ static void
 eventHandler(unsigned int type, const void *arg,
              unsigned int arg_size, void *data)
 {
-    switch (type)
-    {
+    switch (type) {
     case XP_EVENT_DISPLAY_CHANGED:
-      //      ErrorF("XP_EVENT_DISPLAY_MOVED\n");
-        QuartzMessageServerThread(kXDarwinDisplayChanged, 0);
-        break;
+      DEBUG_LOG("XP_EVENT_DISPLAY_CHANGED\n");
+      QuartzMessageServerThread(kXDarwinDisplayChanged, 0);
+      break;
 
     case XP_EVENT_WINDOW_STATE_CHANGED:
-      //      ErrorF("XP_EVENT_WINDOW_STATE_CHANGED\n");
-        if (arg_size >= sizeof(xp_window_state_event))
-        {
-            const xp_window_state_event *ws_arg = arg;
-
-            QuartzMessageServerThread(kXDarwinWindowState, 2,
-                                      ws_arg->id, ws_arg->state);
-        }
-        break;
+      DEBUG_LOG("XP_EVENT_WINDOW_STATE_CHANGED\n");
+      if (arg_size >= sizeof(xp_window_state_event)) {
+	const xp_window_state_event *ws_arg = arg;
+	
+	QuartzMessageServerThread(kXDarwinWindowState, 2,
+				  ws_arg->id, ws_arg->state);
+      }
+      break;
 
     case XP_EVENT_WINDOW_MOVED:
-      //      ErrorF("XP_EVENT_WINDOW_MOVED\n");
+     	DEBUG_LOG("XP_EVENT_WINDOW_MOVED\n");
         if (arg_size == sizeof(xp_window_id))
         {
             xp_window_id id = * (xp_window_id *) arg;
@@ -98,20 +96,23 @@ eventHandler(unsigned int type, const void *arg,
         break;
 
     case XP_EVENT_SURFACE_DESTROYED:
+      DEBUG_LOG("XP_EVENT_SURFACE_DESTROYED\n");
     case XP_EVENT_SURFACE_CHANGED:
-      //      ErrorF("XP_EVENT_SURFACE_MOVED\n");
-        if (arg_size == sizeof(xp_surface_id))
-        {
-            int kind;
-
-            if (type == XP_EVENT_SURFACE_DESTROYED)
-                kind = AppleDRISurfaceNotifyDestroyed;
-            else
-                kind = AppleDRISurfaceNotifyChanged;
-
-            DRISurfaceNotify(*(xp_surface_id *) arg, kind);
+      DEBUG_LOG("XP_EVENT_SURFACE_CHANGED\n");
+        if (arg_size == sizeof(xp_surface_id)) {
+	  int kind;
+	  
+	  if (type == XP_EVENT_SURFACE_DESTROYED)
+	    kind = AppleDRISurfaceNotifyDestroyed;
+	  else
+	    kind = AppleDRISurfaceNotifyChanged;
+	  
+	  DRISurfaceNotify(*(xp_surface_id *) arg, kind);
         }
         break;
+    default:
+      ErrorF("Unknown XP_EVENT type (%d) in xprScreen:eventHandler\n",
+	     type);
     }
 }
 
commit 829b6641bd64c352e1e8a7c619f84dedbdb07a09
Author: Ben Byer <bbyer at bbyer.local>
Date:   Sun Nov 18 17:43:40 2007 -0800

    Darwin: Disabled ALT_IS_MODE_SWITCH
    (cherry picked from commit fd181254f85543558190140787dc7b41f6cf90db)

diff --git a/hw/darwin/darwinKeyboard.c b/hw/darwin/darwinKeyboard.c
index 4e7a136..932cdd5 100644
--- a/hw/darwin/darwinKeyboard.c
+++ b/hw/darwin/darwinKeyboard.c
@@ -61,7 +61,7 @@
 #undef DUMP_DARWIN_KEYMAP
 
 /* Define this to use Alt for Mode_switch. */
-#define ALT_IS_MODE_SWITCH 1
+//#define ALT_IS_MODE_SWITCH 1
 
 #include <stdio.h>
 #include <stdlib.h>
commit 8486f8af91b477c7bcb8438a0e9a72d0c11d1d63
Author: Ben Byer <bbyer at bbyer.local>
Date:   Thu Nov 15 02:25:50 2007 -0800

    Darwin: Added a lightweight debugging facility to support troubleshooting
    (for example) the stuck modifier key issue
    (cherry picked from commit 0e0b452d10c0af55497c3299b5f3db45d5b381cb)

diff --git a/hw/darwin/darwin.c b/hw/darwin/darwin.c
index a4ec002..a772218 100644
--- a/hw/darwin/darwin.c
+++ b/hw/darwin/darwin.c
@@ -75,6 +75,10 @@
 #include "darwin.h"
 #include "darwinClut8.h"
 
+#ifdef ENABLE_DEBUG_LOG
+FILE *debug_log_fp = NULL;
+#endif
+
 /*
  * X server shared global variables
  */
@@ -652,6 +656,20 @@ void OsVendorInit(void)
 {
     if (serverGeneration == 1) {
         DarwinPrintBanner();
+#ifdef ENABLE_DEBUG_LOG
+	{
+	  char *home_dir=NULL, *log_file_path=NULL;
+	  home_dir = getenv("HOME");
+	  if (home_dir) asprintf(&log_file_path, "%s/%s", home_dir, DEBUG_LOG_NAME);
+	  if (log_file_path) {
+	    if (!access(log_file_path, F_OK)) {
+	      debug_log_fp = fopen(log_file_path, "a");
+	      if (debug_log_fp) ErrorF("Debug logging enabled to %s\n", log_file_path);
+	    }
+	    free(log_file_path);
+	  }
+	}
+#endif
     }
 
     // Find the full path to the keymapping file.
diff --git a/hw/darwin/darwin.h b/hw/darwin/darwin.h
index 587ba1c..646bb24 100644
--- a/hw/darwin/darwin.h
+++ b/hw/darwin/darwin.h
@@ -157,4 +157,14 @@ enum {
     kXDarwinWindowMoved       // window has moved on screen
 };
 
+#define ENABLE_DEBUG_LOG 1
+
+#ifdef ENABLE_DEBUG_LOG
+extern FILE *debug_log_fp;
+#define DEBUG_LOG_NAME "x11-debug.txt"
+#define DEBUG_LOG(msg, args...) if (debug_log_fp) fprintf(debug_log_fp, "%s:%d: " msg, __FUNCTION__, __LINE__, ##args )
+#else
+#define DEBUG_LOG(msg, args...) 
+#endif
+
 #endif  /* _DARWIN_H */
commit 74214a9f42b931f99d83ddb4efb3720881a2de16
Author: Ben Byer <bbyer at bbyer.local>
Date:   Thu Nov 15 00:56:54 2007 -0800

    Darwin: Patch to avert (some) damage / rootless crashes, courtesy of Ken Thomases
    (cherry picked from commit 148a87ff20aa5e7a6d839610aa14fa1a31505c4a)

diff --git a/miext/rootless/rootless.h b/miext/rootless/rootless.h
index b4a5b2a..5224dca 100644
--- a/miext/rootless/rootless.h
+++ b/miext/rootless/rootless.h
@@ -66,7 +66,6 @@ typedef struct _RootlessWindowRec {
     int bytesPerRow;
 
     PixmapPtr pixmap;
-    PixmapPtr oldPixmap;
 
 #ifdef ROOTLESS_TRACK_DAMAGE
     RegionRec damage;
diff --git a/miext/rootless/rootlessCommon.c b/miext/rootless/rootlessCommon.c
index 03842e4..562f655 100644
--- a/miext/rootless/rootlessCommon.c
+++ b/miext/rootless/rootlessCommon.c
@@ -172,8 +172,24 @@ void RootlessStartDrawing(WindowPtr pWindow)
         winRec->is_drawing = TRUE;
     }
 
-    winRec->oldPixmap = pScreen->GetWindowPixmap(pWindow);
-    pScreen->SetWindowPixmap(pWindow, winRec->pixmap);
+    PixmapPtr curPixmap = pScreen->GetWindowPixmap(pWindow);
+    if (curPixmap == winRec->pixmap)
+    {
+        RL_DEBUG_MSG("Window %p already has winRec->pixmap %p; not pushing\n", pWindow, winRec->pixmap);
+    }
+    else
+    {
+        PixmapPtr oldPixmap = pWindow->devPrivates[rootlessWindowOldPixmapPrivateIndex].ptr;
+        if (oldPixmap != NULL)
+        {
+            if (oldPixmap == curPixmap)
+                RL_DEBUG_MSG("Window %p's curPixmap %p is the same as its oldPixmap; strange\n", pWindow, curPixmap);
+            else
+                RL_DEBUG_MSG("Window %p's existing oldPixmap %p being lost!\n", pWindow, oldPixmap);
+        }
+        pWindow->devPrivates[rootlessWindowOldPixmapPrivateIndex].ptr = curPixmap;
+        pScreen->SetWindowPixmap(pWindow, winRec->pixmap);
+    }
 }
 
 
@@ -182,6 +198,29 @@ void RootlessStartDrawing(WindowPtr pWindow)
  *  Stop drawing to a window's backing buffer. If flush is true,
  *  damaged regions are flushed to the screen.
  */
+static int RestorePreDrawingPixmapVisitor(WindowPtr pWindow, pointer data)
+{
+    RootlessWindowRec *winRec = (RootlessWindowRec*)data;
+    ScreenPtr pScreen = pWindow->drawable.pScreen;
+    PixmapPtr exPixmap = pScreen->GetWindowPixmap(pWindow);
+    PixmapPtr oldPixmap = pWindow->devPrivates[rootlessWindowOldPixmapPrivateIndex].ptr;
+    if (oldPixmap == NULL)
+    {
+        if (exPixmap == winRec->pixmap)
+            RL_DEBUG_MSG("Window %p appears to be in drawing mode (ex-pixmap %p equals winRec->pixmap, which is being freed) but has no oldPixmap!\n", pWindow, exPixmap);
+    }
+    else
+    {
+        if (exPixmap != winRec->pixmap)
+            RL_DEBUG_MSG("Window %p appears to be in drawing mode (oldPixmap %p) but ex-pixmap %p not winRec->pixmap %p!\n", pWindow, oldPixmap, exPixmap, winRec->pixmap);
+        if (oldPixmap == winRec->pixmap)
+            RL_DEBUG_MSG("Window %p's oldPixmap %p is winRec->pixmap, which has just been freed!\n", pWindow, oldPixmap);
+        pScreen->SetWindowPixmap(pWindow, oldPixmap);
+        pWindow->devPrivates[rootlessWindowOldPixmapPrivateIndex].ptr = NULL;
+    }
+    return WT_WALKCHILDREN;
+}
+
 void RootlessStopDrawing(WindowPtr pWindow, Bool flush)
 {
     ScreenPtr pScreen = pWindow->drawable.pScreen;
@@ -198,7 +237,7 @@ void RootlessStopDrawing(WindowPtr pWindow, Bool flush)
         SCREENREC(pScreen)->imp->StopDrawing(winRec->wid, flush);
 
         FreeScratchPixmapHeader(winRec->pixmap);
-        pScreen->SetWindowPixmap(pWindow, winRec->oldPixmap);
+        TraverseTree(top, RestorePreDrawingPixmapVisitor, (pointer)winRec);
         winRec->pixmap = NULL;
 
         winRec->is_drawing = FALSE;
diff --git a/miext/rootless/rootlessCommon.h b/miext/rootless/rootlessCommon.h
index d6a0161..fd8725a 100644
--- a/miext/rootless/rootlessCommon.h
+++ b/miext/rootless/rootlessCommon.h
@@ -60,6 +60,7 @@
 extern int rootlessGCPrivateIndex;
 extern int rootlessScreenPrivateIndex;
 extern int rootlessWindowPrivateIndex;
+extern int rootlessWindowOldPixmapPrivateIndex;
 
 
 // RootlessGCRec: private per-gc data
diff --git a/miext/rootless/rootlessScreen.c b/miext/rootless/rootlessScreen.c
index 6b54042..538b698 100644
--- a/miext/rootless/rootlessScreen.c
+++ b/miext/rootless/rootlessScreen.c
@@ -65,6 +65,7 @@ extern Bool RootlessCreateGC(GCPtr pGC);
 int rootlessGCPrivateIndex = -1;
 int rootlessScreenPrivateIndex = -1;
 int rootlessWindowPrivateIndex = -1;
+int rootlessWindowOldPixmapPrivateIndex = -1;
 
 
 /*
@@ -618,6 +619,8 @@ RootlessAllocatePrivates(ScreenPtr pScreen)
         if (rootlessGCPrivateIndex == -1) return FALSE;
         rootlessWindowPrivateIndex = AllocateWindowPrivateIndex();
         if (rootlessWindowPrivateIndex == -1) return FALSE;
+        rootlessWindowOldPixmapPrivateIndex = AllocateWindowPrivateIndex();
+        if (rootlessWindowOldPixmapPrivateIndex == -1) return FALSE;
         rootlessGeneration = serverGeneration;
     }
 
@@ -627,6 +630,8 @@ RootlessAllocatePrivates(ScreenPtr pScreen)
         return FALSE;
     if (!AllocateWindowPrivate(pScreen, rootlessWindowPrivateIndex, 0))
         return FALSE;
+    if (!AllocateWindowPrivate(pScreen, rootlessWindowOldPixmapPrivateIndex, 0))
+        return FALSE;
 
     s = xalloc(sizeof(RootlessScreenRec));
     if (! s) return FALSE;
diff --git a/miext/rootless/rootlessWindow.c b/miext/rootless/rootlessWindow.c
index 3074a3f..14bc674 100644
--- a/miext/rootless/rootlessWindow.c
+++ b/miext/rootless/rootlessWindow.c
@@ -198,6 +198,7 @@ RootlessCreateWindow(WindowPtr pWin)
     RegionRec saveRoot;
 
     WINREC(pWin) = NULL;
+    pWin->devPrivates[rootlessWindowOldPixmapPrivateIndex].ptr = NULL;
 
     SCREEN_UNWRAP(pWin->drawable.pScreen, CreateWindow);
 
commit f5f833b80609f1f98c93113183bd2b1bab3bfec9
Author: Ben Byer <bbyer at bbyer.local>
Date:   Sun Nov 11 04:30:34 2007 -0800

    Darwin: These changes are necessary, yet not sufficient, to get 8-bit indexed
    color mode working in Xquartz.
    (cherry picked from commit a415f62f5289fae99ea9b0038d21fad7695b1336)

diff --git a/miext/rootless/rootlessCommon.c b/miext/rootless/rootlessCommon.c
index 9cbb7fa..03842e4 100644
--- a/miext/rootless/rootlessCommon.c
+++ b/miext/rootless/rootlessCommon.c
@@ -37,6 +37,7 @@
 #include <limits.h> /* For CHAR_BIT */
 
 #include "rootlessCommon.h"
+#include "colormapst.h"
 
 unsigned int rootless_CopyBytes_threshold = 0;
 unsigned int rootless_FillBytes_threshold = 0;
@@ -98,6 +99,41 @@ IsFramedWindow(WindowPtr pWin)
     return (top && WINREC(top));
 }
 
+Bool
+RootlessResolveColormap (ScreenPtr pScreen, int first_color,
+                         int n_colors, uint32_t *colors)
+{
+  int last, i;
+  ColormapPtr map;
+
+  map = RootlessGetColormap (pScreen);
+  if (map == NULL || map->class != PseudoColor) return FALSE;
+
+  last = MIN (map->pVisual->ColormapEntries, first_color + n_colors);
+  for (i = MAX (0, first_color); i < last; i++) {
+    Entry *ent = map->red + i;
+    uint16_t red, green, blue;
+
+      if (!ent->refcnt)	continue;
+      if (ent->fShared) {
+	red = ent->co.shco.red->color;
+	green = ent->co.shco.green->color;
+	blue = ent->co.shco.blue->color;
+      } else {
+	red = ent->co.local.red;
+	green = ent->co.local.green;
+	blue = ent->co.local.blue;
+      }
+
+      colors[i - first_color] = (0xFF000000UL
+				 | ((uint32_t) red & 0xff00) << 8
+				 | (green & 0xff00)
+				 | (blue >> 8));
+    }
+
+  return TRUE;
+}
+
 
 /*
  * RootlessStartDrawing
diff --git a/miext/rootless/rootlessCommon.h b/miext/rootless/rootlessCommon.h
index b7f11bd..d6a0161 100644
--- a/miext/rootless/rootlessCommon.h
+++ b/miext/rootless/rootlessCommon.h
@@ -32,6 +32,7 @@
 #include <dix-config.h>
 #endif
 
+#include <stdint.h>
 #ifndef _ROOTLESSCOMMON_H
 #define _ROOTLESSCOMMON_H
 
@@ -106,13 +107,20 @@ typedef struct _RootlessScreenRec {
     GlyphsProcPtr Glyphs;
 #endif
 
+    InstallColormapProcPtr InstallColormap;
+    UninstallColormapProcPtr UninstallColormap;
+    StoreColorsProcPtr StoreColors;
+
     void *pixmap_data;
     unsigned int pixmap_data_size;
 
+    ColormapPtr colormap;
+
     void *redisplay_timer;
     unsigned int redisplay_timer_set :1;
     unsigned int redisplay_queued :1;
     unsigned int redisplay_expired :1;
+    unsigned int colormap_changed :1;
 } RootlessScreenRec, *RootlessScreenPtr;
 
 
@@ -253,6 +261,16 @@ void RootlessRedisplayScreen(ScreenPtr pScreen);
 
 void RootlessQueueRedisplay(ScreenPtr pScreen);
 
+/* Return the colormap currently installed on the given screen. */
+ColormapPtr RootlessGetColormap (ScreenPtr pScreen);
+
+/* Convert colormap to ARGB. */
+Bool RootlessResolveColormap (ScreenPtr pScreen, int first_color,
+			      int n_colors, uint32_t *colors);
+
+void RootlessFlushWindowColormap (WindowPtr pWin);
+void RootlessFlushScreenColormaps (ScreenPtr pScreen);
+
 // Move a window to its proper location on the screen.
 void RootlessRepositionWindow(WindowPtr pWin);
 
diff --git a/miext/rootless/rootlessScreen.c b/miext/rootless/rootlessScreen.c
index 489d3fb..6b54042 100644
--- a/miext/rootless/rootlessScreen.c
+++ b/miext/rootless/rootlessScreen.c
@@ -42,6 +42,7 @@
 #include "propertyst.h"
 #include "mivalidate.h"
 #include "picturestr.h"
+#include "colormapst.h"
 
 #include <sys/types.h>
 #include <sys/stat.h>
@@ -469,6 +470,67 @@ RootlessMarkOverlappedWindows(WindowPtr pWin, WindowPtr pFirst,
     return result;
 }
 
+ColormapPtr
+RootlessGetColormap (ScreenPtr pScreen)
+{
+  RootlessScreenRec *s = SCREENREC (pScreen);
+
+  return s->colormap;
+}
+
+static void
+RootlessInstallColormap (ColormapPtr pMap)
+{
+  ScreenPtr pScreen = pMap->pScreen;
+  RootlessScreenRec *s = SCREENREC (pScreen);
+
+  SCREEN_UNWRAP(pScreen, InstallColormap);
+
+  if (s->colormap != pMap) {
+    s->colormap = pMap;
+    s->colormap_changed = TRUE;
+    RootlessQueueRedisplay (pScreen);
+  }
+
+  pScreen->InstallColormap (pMap);
+
+  SCREEN_WRAP (pScreen, InstallColormap);
+}
+
+static void
+RootlessUninstallColormap (ColormapPtr pMap)
+{
+  ScreenPtr pScreen = pMap->pScreen;
+  RootlessScreenRec *s = SCREENREC (pScreen);
+
+  SCREEN_UNWRAP(pScreen, UninstallColormap);
+
+  if (s->colormap == pMap)
+    s->colormap = NULL;
+
+  pScreen->UninstallColormap (pMap);
+
+  SCREEN_WRAP(pScreen, UninstallColormap);
+}
+
+static void
+RootlessStoreColors (ColormapPtr pMap, int ndef, xColorItem *pdef)
+{
+  ScreenPtr pScreen = pMap->pScreen;
+  RootlessScreenRec *s = SCREENREC (pScreen);
+
+  SCREEN_UNWRAP(pScreen, StoreColors);
+
+  if (s->colormap == pMap && ndef > 0) {
+    s->colormap_changed = TRUE;
+    RootlessQueueRedisplay (pScreen);
+  }
+
+  pScreen->StoreColors (pMap, ndef, pdef);
+
+  SCREEN_WRAP(pScreen, StoreColors);
+}
+
 
 static CARD32
 RootlessRedisplayCallback(OsTimerPtr timer, CARD32 time, void *arg)
@@ -614,6 +676,9 @@ RootlessWrap(ScreenPtr pScreen)
     WRAP(MarkOverlappedWindows);
     WRAP(ValidateTree);
     WRAP(ChangeWindowAttributes);
+    WRAP(InstallColormap);
+    WRAP(UninstallColormap);
+    WRAP(StoreColors);
 
 #ifdef SHAPE
     WRAP(SetShape);
diff --git a/miext/rootless/rootlessWindow.c b/miext/rootless/rootlessWindow.c
index 89c02f8..3074a3f 100644
--- a/miext/rootless/rootlessWindow.c
+++ b/miext/rootless/rootlessWindow.c
@@ -445,6 +445,12 @@ RootlessInitializeFrame(WindowPtr pWin, RootlessWindowRec *winRec)
 }
 
 
+Bool
+RootlessColormapCallback (void *data, int first_color, int n_colors, uint32_t *colors)
+{
+  return RootlessResolveColormap (data, first_color, n_colors, colors);
+}
+
 /*
  * RootlessEnsureFrame
  *  Make sure the given window is framed. If the window doesn't have a
@@ -503,6 +509,9 @@ RootlessEnsureFrame(WindowPtr pWin)
         return NULL;
     }
 
+    if (pWin->drawable.depth == 8)
+      RootlessFlushWindowColormap(pWin);
+
 #ifdef SHAPE
     if (pShape != NULL)
         REGION_UNINIT(pScreen, &shape);
@@ -1455,6 +1464,115 @@ out:
     }
 }
 
+
+void
+RootlessFlushWindowColormap (WindowPtr pWin)
+{
+  RootlessWindowRec *winRec = WINREC (pWin);
+  xp_window_changes wc;
+
+  if (winRec == NULL)
+    return;
+
+  RootlessStopDrawing (pWin, FALSE);
+
+  /* This is how we tell xp that the colormap may have changed. */
+
+  wc.colormap = RootlessColormapCallback;
+  wc.colormap_data = pWin->drawable.pScreen;
+
+  configure_window (winRec->wid, XP_COLORMAP, &wc);
+}
+
+/*
+ * SetPixmapOfAncestors
+ *  Set the Pixmaps on all ParentRelative windows up the ancestor chain.
+ */
+static void
+SetPixmapOfAncestors(WindowPtr pWin)
+{
+    ScreenPtr pScreen = pWin->drawable.pScreen;
+    WindowPtr topWin = TopLevelParent(pWin);
+    RootlessWindowRec *topWinRec = WINREC(topWin);
+
+    while (pWin->backgroundState == ParentRelative) {
+        if (pWin == topWin) {
+            // disallow ParentRelative background state on top level
+            XID pixel = 0;
+            ChangeWindowAttributes(pWin, CWBackPixel, &pixel, serverClient);
+            RL_DEBUG_MSG("Cleared ParentRelative on 0x%x.\n", pWin);
+            break;
+        }
+
+        pWin = pWin->parent;
+        pScreen->SetWindowPixmap(pWin, topWinRec->pixmap);
+    }
+}
+
+
+/*
+ * RootlessPaintWindowBackground
+ */
+void
+RootlessPaintWindowBackground(WindowPtr pWin, RegionPtr pRegion, int what)
+{
+    ScreenPtr pScreen = pWin->drawable.pScreen;
+ 
+    if (IsRoot(pWin))
+        return;
+
+    RL_DEBUG_MSG("paintwindowbackground start (win 0x%x, framed %i) ",
+                 pWin, IsFramedWindow(pWin));
+
+    if (IsFramedWindow(pWin)) {
+        RootlessStartDrawing(pWin);
+        RootlessDamageRegion(pWin, pRegion);
+
+        // For ParentRelative windows, we have to make sure the window
+        // pixmap is set correctly all the way up the ancestor chain.
+        if (pWin->backgroundState == ParentRelative) {
+            SetPixmapOfAncestors(pWin);
+        }
+    }
+
+    SCREEN_UNWRAP(pScreen, PaintWindowBackground);
+    pScreen->PaintWindowBackground(pWin, pRegion, what);
+    SCREEN_WRAP(pScreen, PaintWindowBackground);
+
+    RL_DEBUG_MSG("paintwindowbackground end\n");
+}
+
+
+/*
+ * RootlessPaintWindowBorder
+ */
+void
+RootlessPaintWindowBorder(WindowPtr pWin, RegionPtr pRegion, int what)
+{
+    RL_DEBUG_MSG("paintwindowborder start (win 0x%x) ", pWin);
+
+    if (IsFramedWindow(pWin)) {
+        RootlessStartDrawing(pWin);
+        RootlessDamageRegion(pWin, pRegion);
+
+        // For ParentRelative windows with tiled borders, we have to make
+        // sure the window pixmap is set correctly all the way up the
+        // ancestor chain.
+        if (!pWin->borderIsPixel &&
+            pWin->backgroundState == ParentRelative)
+        {
+            SetPixmapOfAncestors(pWin);
+        }
+    }
+
+    SCREEN_UNWRAP(pWin->drawable.pScreen, PaintWindowBorder);
+    pWin->drawable.pScreen->PaintWindowBorder(pWin, pRegion, what);
+    SCREEN_WRAP(pWin->drawable.pScreen, PaintWindowBorder);
+
+    RL_DEBUG_MSG("paintwindowborder end\n");
+}
+
+
 /*
  * RootlessChangeBorderWidth
  *  FIXME: untested!
@@ -1516,20 +1634,20 @@ RootlessChangeBorderWidth(WindowPtr pWin, unsigned int width)
 void
 RootlessOrderAllWindows (void)
 {
-  int i;
-  WindowPtr pWin;
-  
-  RL_DEBUG_MSG("RootlessOrderAllWindows() ");
-  for (i = 0; i < screenInfo.numScreens; i++) {
-    if (screenInfo.screens[i] == NULL) continue;
-    pWin = WindowTable[i];
-    if (pWin == NULL) continue;
+    int i;
+    WindowPtr pWin;
+    
+    RL_DEBUG_MSG("RootlessOrderAllWindows() ");
+    for (i = 0; i < screenInfo.numScreens; i++) {
+      if (screenInfo.screens[i] == NULL) continue;
+      pWin = WindowTable[i];
+      if (pWin == NULL) continue;
       
-    for (pWin = pWin->firstChild; pWin != NULL; pWin = pWin->nextSib) {
-      if (!pWin->realized) continue;
-      if (RootlessEnsureFrame(pWin) == NULL) continue;
-      RootlessReorderWindow (pWin);
+      for (pWin = pWin->firstChild; pWin != NULL; pWin = pWin->nextSib) {
+	if (!pWin->realized) continue;
+	if (RootlessEnsureFrame(pWin) == NULL) continue;
+	RootlessReorderWindow (pWin);
+      }
     }
-  }
-  RL_DEBUG_MSG("RootlessOrderAllWindows() done");
+    RL_DEBUG_MSG("RootlessOrderAllWindows() done");
 }
commit 8358334180a4f8c1e73fc5647a62bcd3539dee45
Author: Ben Byer <bbyer at bbyer.local>
Date:   Sun Nov 11 04:30:00 2007 -0800

    Darwin: Fixed the call to xp_init so that we now receive Motion notifications even
    if X is not the active application.
    fixes <rdar://problem/5167664> xeyes dead until window activation
    (cherry picked from commit c7573379a85a1480cc51650075078e41dafe56af)

diff --git a/hw/darwin/quartz/xpr/xprScreen.c b/hw/darwin/quartz/xpr/xprScreen.c
index 674a268..2db249f 100644
--- a/hw/darwin/quartz/xpr/xprScreen.c
+++ b/hw/darwin/quartz/xpr/xprScreen.c
@@ -231,7 +231,8 @@ xprDisplayInit(void)
     else
         darwinScreensFound =  1;
 
-    if (xp_init(XP_IN_BACKGROUND | XP_NO_DEFERRED_UPDATES) != Success)
+    if (xp_init(XP_BACKGROUND_EVENTS | XP_NO_DEFERRED_UPDATES) != Success)
+    {
         FatalError("Could not initialize the Xplugin library.");
 
     xp_select_events(XP_EVENT_DISPLAY_CHANGED
commit 512dee90878e552ad1b2bb5b27366707f6464f28
Author: Ben Byer <bbyer at bbyer.apple.com>
Date:   Thu Nov 8 22:17:38 2007 -0800

    Darwin: fix for spurious "Are you sure you want to quit?" message
    (cherry picked from commit 30cbfc786e4fedda3fe070bacceabe1d9212d00b)

diff --git a/hw/darwin/quartz/quartz.c b/hw/darwin/quartz/quartz.c
index ac1c347..8565e34 100644
--- a/hw/darwin/quartz/quartz.c
+++ b/hw/darwin/quartz/quartz.c
@@ -189,6 +189,7 @@ void DarwinModeInitInput(
     int argc,
     char **argv )
 {
+    X11ApplicationSetCanQuit(1);
     X11ApplicationServerReady();
     // Do final display mode specific initialization before handling events
     if (quartzProcs->InitInput)
commit 28e73e99a9a59223963312c5dd43ce5566d1db9d
Author: Ben Byer <bbyer at bbyer.apple.com>
Date:   Thu Nov 8 22:12:41 2007 -0800

    Darwin: Adding "fake RandR" support from old X11.app
    (cherry picked from commit 633490c4e8dab30af7ecbe1bef076c22ad5f5da9)

diff --git a/hw/darwin/quartz/quartz.c b/hw/darwin/quartz/quartz.c
index 0bbbada..ac1c347 100644
--- a/hw/darwin/quartz/quartz.c
+++ b/hw/darwin/quartz/quartz.c
@@ -54,6 +54,8 @@
 #include <fcntl.h>
 #include <IOKit/pwr_mgt/IOPMLib.h>
 
+#define FAKE_RANDR 1
+
 // Shared global variables for Quartz modes
 int                     quartzEventWriteFD = -1;
 int                     quartzStartClients = 1;
@@ -69,6 +71,30 @@ int                     noPseudoramiXExtension = FALSE;
 QuartzModeProcsPtr      quartzProcs = NULL;
 const char             *quartzOpenGLBundle = NULL;
 
+#if defined(RANDR) && !defined(FAKE_RANDR)
+Bool DarwinModeRandRGetInfo (ScreenPtr pScreen, Rotation *rotations) {
+  return FALSE;
+}
+
+Bool DarwinModeRandRSetConfig (ScreenPtr           pScreen,
+			       Rotation            randr,
+			       int                 rate,
+			       RRScreenSizePtr     pSize) {
+  return FALSE;
+}
+
+Bool DarwinModeRandRInit (ScreenPtr pScreen) {
+  rrScrPrivPtr    pScrPriv;
+    
+  if (!RRScreenInit (pScreen)) return FALSE;
+
+  pScrPriv = rrGetScrPriv(pScreen);
+  pScrPriv->rrGetInfo = DarwinModeRandRGetInfo;
+  pScrPriv->rrSetConfig = DarwinModeRandRSetConfig;
+  return TRUE;
+}
+#endif
+
 /*
 ===========================================================================
 
@@ -170,6 +196,51 @@ void DarwinModeInitInput(
 }
 
 
+#ifdef FAKE_RANDR
+extern char	*ConnectionInfo;
+
+static int padlength[4] = {0, 3, 2, 1};
+
+static void
+RREditConnectionInfo (ScreenPtr pScreen)
+{
+    xConnSetup	    *connSetup;
+    char	    *vendor;
+    xPixmapFormat   *formats;
+    xWindowRoot	    *root;
+    xDepth	    *depth;
+    xVisualType	    *visual;
+    int		    screen = 0;
+    int		    d;
+
+    connSetup = (xConnSetup *) ConnectionInfo;
+    vendor = (char *) connSetup + sizeof (xConnSetup);
+    formats = (xPixmapFormat *) ((char *) vendor +
+				 connSetup->nbytesVendor +
+				 padlength[connSetup->nbytesVendor & 3]);
+    root = (xWindowRoot *) ((char *) formats +
+			    sizeof (xPixmapFormat) * screenInfo.numPixmapFormats);
+    while (screen != pScreen->myNum)
+    {
+	depth = (xDepth *) ((char *) root + 
+			    sizeof (xWindowRoot));
+	for (d = 0; d < root->nDepths; d++)
+	{
+	    visual = (xVisualType *) ((char *) depth +
+				      sizeof (xDepth));
+	    depth = (xDepth *) ((char *) visual +
+				depth->nVisuals * sizeof (xVisualType));
+	}
+	root = (xWindowRoot *) ((char *) depth);
+	screen++;
+    }
+    root->pixWidth = pScreen->width;
+    root->pixHeight = pScreen->height;
+    root->mmWidth = pScreen->mmWidth;
+    root->mmHeight = pScreen->mmHeight;
+}
+#endif
+
 /*
  * QuartzUpdateScreens
  *  Adjust for screen arrangement changes.
@@ -181,6 +252,7 @@ static void QuartzUpdateScreens(void)
     int x, y, width, height, sx, sy;
     xEvent e;
 
+    ErrorF("QuartzUpdateScreens()\n");
     if (noPseudoramiXExtension || screenInfo.numScreens != 1)
     {
         /* FIXME: if not using Xinerama, we have multiple screens, and
@@ -202,8 +274,11 @@ static void QuartzUpdateScreens(void)
     pScreen->mmHeight = pScreen->mmHeight * ((double) height / pScreen->height);
     pScreen->width = width;
     pScreen->height = height;
-
-    /* FIXME: should probably do something with RandR here. */
+    
+#ifndef FAKE_RANDR
+    if(!DarwinModeRandRInit(pScreen))
+      FatalError("Failed to init RandR extension.\n");
+#endif
 
     DarwinAdjustScreenOrigins(&screenInfo);
     quartzProcs->UpdateScreen(pScreen);
@@ -231,7 +306,9 @@ static void QuartzUpdateScreens(void)
     e.u.configureNotify.override = pRoot->overrideRedirect;
     DeliverEvents(pRoot, &e, 1, NullWindow);
 
-    /* FIXME: Should we use RREditConnectionInfo(pScreen)? */
+#ifdef FAKE_RANDR
+    RREditConnectionInfo(pScreen);
+#endif
 }
 
 
commit 01b70afaac0990b41d1fb6fadbfd64df1486b669
Author: Ben Byer <bbyer at bbyer.local>
Date:   Sat Nov 3 05:34:19 2007 -0700

    Darwin: Initial support for Spaces -- if you use Expose to drag an X11
    window to another Space, it will work correctly (as opposed
    to just leaving a ghost window).  We accomplish this by listening
    for the notification from Xplugin that our window has been moved,
    and then we ask X11 to move the window to the new location.
    (cherry picked from commit 2d50ea8013e7c1639d570e227b53b037fb567565)

diff --git a/hw/darwin/quartz/quartz.c b/hw/darwin/quartz/quartz.c
index 3374baa..0bbbada 100644
--- a/hw/darwin/quartz/quartz.c
+++ b/hw/darwin/quartz/quartz.c
@@ -426,6 +426,18 @@ void DarwinModeProcessEvent(
 	    RootlessOrderAllWindows();
             break;
 
+        case kXDarwinWindowState:
+	  ErrorF("kXDarwinWindowState\n");
+	  break;
+    case kXDarwinWindowMoved: {
+	  WindowPtr pWin = (WindowPtr)xe->u.clientMessage.u.l.longs0;
+	  short x = xe->u.clientMessage.u.l.longs1,
+	        y = xe->u.clientMessage.u.l.longs2;
+	  ErrorF("kXDarwinWindowMoved(%p, %hd, %hd)\n", pWin, x, y);
+	  RootlessMoveWindow(pWin, x, y, pWin->nextSib, VTMove);
+    }
+	  break;
+
         default:
             ErrorF("Unknown application defined event type %d.\n", xe->u.u.type);
     }
diff --git a/hw/darwin/quartz/xpr/xprScreen.c b/hw/darwin/quartz/xpr/xprScreen.c
index a625e62..674a268 100644
--- a/hw/darwin/quartz/xpr/xprScreen.c
+++ b/hw/darwin/quartz/xpr/xprScreen.c
@@ -87,7 +87,13 @@ eventHandler(unsigned int type, const void *arg,
         {
             xp_window_id id = * (xp_window_id *) arg;
 	    WindowPtr pWin = xprGetXWindow(id);
-            QuartzMessageServerThread(kXDarwinWindowMoved, 1, pWin);
+	    BoxRec box;
+	    xp_error retval  = xp_get_window_bounds(id, &box);
+	    if (retval != Success) {
+	      ErrorF("Unable to find new bounds for window\n");
+	      break;
+	    }
+            QuartzMessageServerThread(kXDarwinWindowMoved, 3, pWin, box.x1, box.y1);
         }
         break;
 
commit b39edc01a6588697b65f831e8ab1dbb24cbe7b24
Author: Ben Byer <bbyer at bbyer.local>
Date:   Wed Oct 31 23:46:50 2007 -0700

    Darwin: Swap modifier keys for buttons 2 and 3 -- now Option-click is the middle click
    (cherry picked from commit 0aa61293b62aeb69a93b2035d0aef8644343eed3)

diff --git a/hw/darwin/darwin.c b/hw/darwin/darwin.c
index 22e1338..a4ec002 100644
--- a/hw/darwin/darwin.c
+++ b/hw/darwin/darwin.c
@@ -99,8 +99,8 @@ int                     darwinSyncKeymap = FALSE;
 int                     darwinSwapAltMeta = FALSE;
 
 // modifier masks for faking mouse buttons
-int                     darwinFakeMouse2Mask = NX_COMMANDMASK;
-int                     darwinFakeMouse3Mask = NX_ALTERNATEMASK;
+int                     darwinFakeMouse2Mask = NX_ALTERNATEMASK;
+int                     darwinFakeMouse3Mask = NX_COMMANDMASK;
 
 // devices
 DeviceIntPtr            darwinPointer = NULL;
commit 606a8dc73d91a198d72d249934dc027a23f4c338
Author: Ben Byer <bbyer at bbyer.local>
Date:   Wed Oct 31 03:39:47 2007 -0700

    Darwin: Trap Deactivate messages and release modifiers to avoid "stuck shift lock" (etc) bugs
    (cherry picked from commit 2b189a99330eb465fa0d17020fb1db1e38829151)

diff --git a/hw/darwin/darwinEvents.c b/hw/darwin/darwinEvents.c
index bc3a041..06c4cc7 100644
--- a/hw/darwin/darwinEvents.c
+++ b/hw/darwin/darwinEvents.c
@@ -147,6 +147,16 @@ static void DarwinUpdateModifiers(
     }
 }
 
+/*
+ * DarwinReleaseModifiers
+ * This hacky function releases all modifier keys.  It should be called when X11.app
+ * is deactivated (kXDarwinDeactivate) to prevent modifiers from getting stuck if they
+ * are held down during a "context" switch -- otherwise, we would miss the KeyUp.
+ */
+static void DarwinReleaseModifiers(void) {
+	xEvent e;
+	DarwinUpdateModifiers(&e, KeyRelease, COMMAND_MASK(-1) | CONTROL_MASK(-1) | ALTERNATE_MASK(-1) | SHIFT_MASK(-1));
+}
 
 /*
  * DarwinSimulateMouseClick
@@ -347,6 +357,9 @@ void ProcessInputEvents(void) {
 	      ErrorF("Unexpected XDarwinScrollWheel event in DarwinProcessInputEvents\n");
 	      break;
 
+			case kXDarwinDeactivate:
+				DarwinReleaseModifiers();
+				// fall through
             default:
                 // Check for mode specific event
                 DarwinModeProcessEvent(&xe);
commit 4c18ef4331aaee268431a3ba50991f0312b82870
Author: Ben Byer <bbyer at bbyer.local>
Date:   Wed Oct 31 03:22:18 2007 -0700

    Darwin: Workaround for a bug where the holding down Command to make a "fake"
    button 2 click would actually result in a Command-2 chord.
    (I.e. it wasn't releasing Command before clicking the fake button.)
    (cherry picked from commit 0d5dd5dffa4c5ce3f54dfe53720a39d524dc8e37)

diff --git a/hw/darwin/darwinEvents.c b/hw/darwin/darwinEvents.c
index 3d7f268..bc3a041 100644
--- a/hw/darwin/darwinEvents.c
+++ b/hw/darwin/darwinEvents.c
@@ -166,6 +166,9 @@ static void DarwinSimulateMouseClick(
     int modifierMask)   // modifiers used for the fake click
 {
     // first fool X into forgetting about the keys
+	// for some reason, it's not enough to tell X we released the Command key -- 
+	// it has to be the *left* Command key.
+	if (modifierMask & NX_COMMANDMASK) modifierMask |=NX_DEVICELCMDKEYMASK ;
     DarwinUpdateModifiers(KeyRelease, modifierMask);
 
     // push the mouse button
commit 7f2972d47a5d74fe92268c6d609b1eb6ad845824
Author: Jeremy Huddleston <jeremy at tifa.local>
Date:   Wed Nov 21 21:59:59 2007 -0800

    Darwin: Really add launcher this time

diff --git a/hw/darwin/launcher/Info.plist b/hw/darwin/launcher/Info.plist
new file mode 100644
index 0000000..b5385b6
--- /dev/null
+++ b/hw/darwin/launcher/Info.plist
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+	<key>CFBundleDevelopmentRegion</key>
+	<string>English</string>
+	<key>CFBundleExecutable</key>
+	<string>X11</string>
+	<key>CFBundleGetInfoString</key>
+	<string>2.0, Copyright © 2003-2007, Apple Inc.</string>
+	<key>CFBundleIconFile</key>
+	<string>X11.icns</string>
+	<key>CFBundleIdentifier</key>
+	<string>org.x.X11_launcher</string>
+	<key>CFBundleInfoDictionaryVersion</key>
+	<string>6.0</string>
+	<key>CFBundleName</key>
+	<string>X11</string>
+	<key>CFBundlePackageType</key>
+	<string>APPL</string>
+	<key>CFBundleShortVersionString</key>
+	<string>2.0</string>
+	<key>CFBundleSignature</key>
+	<string>x11l</string>
+	<key>LSUIElement</key>
+	<string>1</string>
+	<key>NSHumanReadableCopyright</key>
+	<string>Copyright © 2007, Apple Inc.</string>
+</dict>
+</plist>
diff --git a/hw/darwin/launcher/X11.icns b/hw/darwin/launcher/X11.icns
new file mode 100644
index 0000000..d770e61
Binary files /dev/null and b/hw/darwin/launcher/X11.icns differ
diff --git a/hw/darwin/launcher/X11.xcodeproj/project.pbxproj b/hw/darwin/launcher/X11.xcodeproj/project.pbxproj
new file mode 100644
index 0000000..34b76da
--- /dev/null
+++ b/hw/darwin/launcher/X11.xcodeproj/project.pbxproj
@@ -0,0 +1,290 @@
+// !$*UTF8*$!
+{
+	archiveVersion = 1;
+	classes = {
+	};
+	objectVersion = 42;
+	objects = {
+
+/* Begin PBXBuildFile section */
+		527F241B0B5D938C007840A7 /* X11.icns in Resources */ = {isa = PBXBuildFile; fileRef = 50459C5F038587C60ECA21EC /* X11.icns */; };
+		527F241D0B5D938C007840A7 /* bundle-main.c in Sources */ = {isa = PBXBuildFile; fileRef = 50EE2AB703849F0B0ECA21EC /* bundle-main.c */; };
+		527F241F0B5D938C007840A7 /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 50F4F0A7039D6ACA0E82C0CB /* CoreFoundation.framework */; };
+		527F24370B5D9D89007840A7 /* Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = 527F24260B5D938C007840A7 /* Info.plist */; };
+/* End PBXBuildFile section */
+
+/* Begin PBXFileReference section */
+		50459C5F038587C60ECA21EC /* X11.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; path = X11.icns; sourceTree = "<group>"; };
+		50EE2AB703849F0B0ECA21EC /* bundle-main.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; path = "bundle-main.c"; sourceTree = "<group>"; };
+		50F4F0A7039D6ACA0E82C0CB /* CoreFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreFoundation.framework; path = /System/Library/Frameworks/CoreFoundation.framework; sourceTree = "<absolute>"; };
+		527F24260B5D938C007840A7 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = Info.plist; sourceTree = "<group>"; };
+		527F24270B5D938C007840A7 /* X11.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = X11.app; sourceTree = BUILT_PRODUCTS_DIR; };
+/* End PBXFileReference section */
+
+/* Begin PBXFrameworksBuildPhase section */
+		527F241E0B5D938C007840A7 /* Frameworks */ = {
+			isa = PBXFrameworksBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				527F241F0B5D938C007840A7 /* CoreFoundation.framework in Frameworks */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+/* End PBXFrameworksBuildPhase section */
+
+/* Begin PBXGroup section */
+		195DF8CFFE9D517E11CA2CBB /* Products */ = {
+			isa = PBXGroup;
+			children = (
+				527F24270B5D938C007840A7 /* X11.app */,
+			);
+			name = Products;
+			sourceTree = "<group>";
+		};
+		20286C29FDCF999611CA2CEA /* X11 */ = {
+			isa = PBXGroup;
+			children = (
+				20286C2AFDCF999611CA2CEA /* Sources */,
+				20286C2CFDCF999611CA2CEA /* Resources */,
+				20286C32FDCF999611CA2CEA /* External Frameworks and Libraries */,
+				195DF8CFFE9D517E11CA2CBB /* Products */,
+				527F24260B5D938C007840A7 /* Info.plist */,
+			);
+			name = X11;
+			sourceTree = "<group>";
+		};
+		20286C2AFDCF999611CA2CEA /* Sources */ = {
+			isa = PBXGroup;
+			children = (
+				50EE2AB703849F0B0ECA21EC /* bundle-main.c */,
+			);
+			name = Sources;
+			sourceTree = "<group>";
+		};
+		20286C2CFDCF999611CA2CEA /* Resources */ = {
+			isa = PBXGroup;
+			children = (
+				50459C5F038587C60ECA21EC /* X11.icns */,
+			);
+			name = Resources;
+			sourceTree = "<group>";
+		};
+		20286C32FDCF999611CA2CEA /* External Frameworks and Libraries */ = {
+			isa = PBXGroup;
+			children = (
+				50F4F0A7039D6ACA0E82C0CB /* CoreFoundation.framework */,
+			);
+			name = "External Frameworks and Libraries";
+			sourceTree = "<group>";
+		};
+/* End PBXGroup section */
+
+/* Begin PBXHeadersBuildPhase section */
+		527F24170B5D938C007840A7 /* Headers */ = {
+			isa = PBXHeadersBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+/* End PBXHeadersBuildPhase section */
+
+/* Begin PBXNativeTarget section */
+		527F24160B5D938C007840A7 /* X11 */ = {
+			isa = PBXNativeTarget;
+			buildConfigurationList = 527F24220B5D938C007840A7 /* Build configuration list for PBXNativeTarget "X11" */;
+			buildPhases = (
+				527F24170B5D938C007840A7 /* Headers */,
+				527F24180B5D938C007840A7 /* Resources */,
+				527F241C0B5D938C007840A7 /* Sources */,
+				527F241E0B5D938C007840A7 /* Frameworks */,
+				527F24210B5D938C007840A7 /* Rez */,
+			);
+			buildRules = (
+			);
+			dependencies = (
+			);
+			name = X11;
+			productName = X11;
+			productReference = 527F24270B5D938C007840A7 /* X11.app */;
+			productType = "com.apple.product-type.application";
+		};
+/* End PBXNativeTarget section */
+
+/* Begin PBXProject section */
+		20286C28FDCF999611CA2CEA /* Project object */ = {
+			isa = PBXProject;
+			buildConfigurationList = 527F24080B5D8FFC007840A7 /* Build configuration list for PBXProject "X11" */;
+			compatibilityVersion = "Xcode 2.4";
+			hasScannedForEncodings = 1;
+			mainGroup = 20286C29FDCF999611CA2CEA /* X11 */;
+			projectDirPath = "";
+			projectRoot = "";
+			shouldCheckCompatibility = 1;
+			targets = (
+				527F24160B5D938C007840A7 /* X11 */,
+			);
+		};
+/* End PBXProject section */
+
+/* Begin PBXResourcesBuildPhase section */
+		527F24180B5D938C007840A7 /* Resources */ = {
+			isa = PBXResourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				527F24370B5D9D89007840A7 /* Info.plist in Resources */,
+				527F241B0B5D938C007840A7 /* X11.icns in Resources */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+/* End PBXResourcesBuildPhase section */
+
+/* Begin PBXRezBuildPhase section */
+		527F24210B5D938C007840A7 /* Rez */ = {
+			isa = PBXRezBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+/* End PBXRezBuildPhase section */
+
+/* Begin PBXSourcesBuildPhase section */
+		527F241C0B5D938C007840A7 /* Sources */ = {
+			isa = PBXSourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				527F241D0B5D938C007840A7 /* bundle-main.c in Sources */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+/* End PBXSourcesBuildPhase section */
+
+/* Begin XCBuildConfiguration section */
+		527F24090B5D8FFC007840A7 /* Development */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				INSTALL_MODE_FLAG = "a+rX";
+			};
+			name = Development;
+		};
+		527F240A0B5D8FFC007840A7 /* Deployment */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				INSTALL_MODE_FLAG = "a+rX";
+			};
+			name = Deployment;
+		};
+		527F240B0B5D8FFC007840A7 /* Default */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				INSTALL_MODE_FLAG = "a+rX";
+			};
+			name = Default;
+		};
+		527F24230B5D938C007840A7 /* Development */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				COPY_PHASE_STRIP = NO;
+				FRAMEWORK_SEARCH_PATHS = "";
+				GCC_SYMBOLS_PRIVATE_EXTERN = NO;
+				HEADER_SEARCH_PATHS = /usr/X11/include;
+				INFOPLIST_FILE = Info.plist;
+				INSTALL_PATH = $DSTROOT/Applications/Utilties;
+				LIBRARY_SEARCH_PATHS = /usr/X11/lib;
+				OTHER_CFLAGS = "";
+				OTHER_LDFLAGS = (
+					"-lXau",
+					"-lxcb",
+					"-lX11",
+				);
+				OTHER_REZFLAGS = "";
+				PRODUCT_NAME = X11;
+				SECTORDER_FLAGS = "";
+				WARNING_CFLAGS = (
+					"-Wmost",
+					"-Wno-four-char-constants",
+					"-Wno-unknown-pragmas",
+				);
+				WRAPPER_EXTENSION = app;
+			};
+			name = Development;
+		};
+		527F24240B5D938C007840A7 /* Deployment */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				COPY_PHASE_STRIP = YES;
+				FRAMEWORK_SEARCH_PATHS = "";
+				GCC_SYMBOLS_PRIVATE_EXTERN = NO;
+				HEADER_SEARCH_PATHS = /usr/X11/include;
+				INFOPLIST_FILE = Info.plist;
+				INSTALL_PATH = /Applications/Utilties;
+				LIBRARY_SEARCH_PATHS = /usr/X11/lib;
+				OTHER_CFLAGS = "";
+				OTHER_LDFLAGS = "";
+				OTHER_REZFLAGS = "";
+				PRODUCT_NAME = X11;
+				SECTORDER_FLAGS = "";
+				WARNING_CFLAGS = (
+					"-Wmost",
+					"-Wno-four-char-constants",
+					"-Wno-unknown-pragmas",
+				);
+				WRAPPER_EXTENSION = app;
+			};
+			name = Deployment;
+		};
+		527F24250B5D938C007840A7 /* Default */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				FRAMEWORK_SEARCH_PATHS = "";
+				GCC_SYMBOLS_PRIVATE_EXTERN = NO;
+				HEADER_SEARCH_PATHS = /usr/X11/include;
+				INFOPLIST_FILE = Info.plist;
+				INSTALL_PATH = /Applications/Utilties;
+				LIBRARY_SEARCH_PATHS = /usr/X11/lib;
+				OTHER_CFLAGS = "";
+				OTHER_LDFLAGS = (
+					"-lXau",
+					"-lxcb",
+					"-lX11",
+				);
+				OTHER_REZFLAGS = "";
+				PRODUCT_NAME = X11;
+				SECTORDER_FLAGS = "";
+				WARNING_CFLAGS = (
+					"-Wmost",
+					"-Wno-four-char-constants",
+					"-Wno-unknown-pragmas",
+				);
+				WRAPPER_EXTENSION = app;
+			};
+			name = Default;
+		};
+/* End XCBuildConfiguration section */
+
+/* Begin XCConfigurationList section */
+		527F24080B5D8FFC007840A7 /* Build configuration list for PBXProject "X11" */ = {
+			isa = XCConfigurationList;
+			buildConfigurations = (
+				527F24090B5D8FFC007840A7 /* Development */,
+				527F240A0B5D8FFC007840A7 /* Deployment */,
+				527F240B0B5D8FFC007840A7 /* Default */,
+			);
+			defaultConfigurationIsVisible = 0;
+			defaultConfigurationName = Default;
+		};
+		527F24220B5D938C007840A7 /* Build configuration list for PBXNativeTarget "X11" */ = {
+			isa = XCConfigurationList;
+			buildConfigurations = (
+				527F24230B5D938C007840A7 /* Development */,
+				527F24240B5D938C007840A7 /* Deployment */,
+				527F24250B5D938C007840A7 /* Default */,
+			);
+			defaultConfigurationIsVisible = 0;
+			defaultConfigurationName = Default;
+		};
+/* End XCConfigurationList section */
+	};
+	rootObject = 20286C28FDCF999611CA2CEA /* Project object */;
+}
diff --git a/hw/darwin/launcher/bundle-main.c b/hw/darwin/launcher/bundle-main.c
new file mode 100644
index 0000000..ca62553
--- /dev/null
+++ b/hw/darwin/launcher/bundle-main.c
@@ -0,0 +1,81 @@
+/* main.c -- X application launcher
+ 
+ Copyright (c) 2007 Apple Inc.
+ 
+ Permission is hereby granted, free of charge, to any person
+ obtaining a copy of this software and associated documentation files
+ (the "Software"), to deal in the Software without restriction,
+ including without limitation the rights to use, copy, modify, merge,
+ publish, distribute, sublicense, and/or sell copies of the Software,
+ and to permit persons to whom the Software is furnished to do so,
+ subject to the following conditions:
+ 
+ The above copyright notice and this permission notice shall be
+ included in all copies or substantial portions of the Software.
+ 
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ NONINFRINGEMENT.  IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT
+ HOLDER(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+ WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ DEALINGS IN THE SOFTWARE.
+ 
+ Except as contained in this notice, the name(s) of the above
+ copyright holders shall not be used in advertising or otherwise to
+ promote the sale, use or other dealings in this Software without
+ prior written authorization. */
+
+#include <stdio.h>
+#include <unistd.h>
+#include <stdlib.h>
+
+#include <CoreFoundation/CoreFoundation.h>
+
+#define DEFAULT_APP "/usr/X11/bin/xterm"
+
+int main (int argc, char **argv) {
+  char *command = DEFAULT_APP;
+  const char *newargv[7];
+  int child;
+  
+
+	CFPropertyListRef PlistRef = CFPreferencesCopyAppValue(CFSTR("app_to_run"),
+									kCFPreferencesCurrentApplication);
+	
+	if ((PlistRef == NULL) || (CFGetTypeID(PlistRef) != CFStringGetTypeID())) {
+		CFPreferencesSetAppValue(CFSTR("app_to_run"), CFSTR(DEFAULT_APP), 
+								 kCFPreferencesCurrentApplication);
+		CFPreferencesAppSynchronize(kCFPreferencesCurrentApplication);
+	} else {
+		int len = CFStringGetLength((CFStringRef)PlistRef)+1;
+		command = (char *) malloc(len);
+		CFStringGetCString((CFStringRef)PlistRef, command, len,  kCFStringEncodingASCII);
+		fprintf(stderr, "command=%s\n", command);
+	}
+	
+	if (PlistRef) CFRelease(PlistRef);
+	
+	newargv[0] = "/usr/bin/login";
+	newargv[1] = "-fp";
+	newargv[2] = getlogin();
+	newargv[3] = "/bin/sh";
+	newargv[4] = "-c";
+	newargv[5] = command;
+	newargv[6] = NULL;
+
+    child = fork();
+	
+    switch (child) {
+    case -1:				/* error */
+      perror ("fork");
+      return EXIT_FAILURE;		
+    case 0:				    /* child */
+      execvp (newargv[0], (char **const) newargv);
+      perror ("Couldn't exec");
+      _exit (1);
+   }
+	
+    return 0;
+}
commit bcbaf2a0ce34b6c5e41d2831b8b87dbd0617a89b
Author: Jeremy Huddleston <jeremy at tifa.local>
Date:   Wed Nov 21 19:51:14 2007 -0800

    Darwin: Dead code removal, Code cleanup, Added launcher
    Imported changes from xorg-server-1.2-apple to make master more current wrt
    file layout, build system changes, and dead code removal.

diff --git a/GL/Makefile.am b/GL/Makefile.am
index 38cef7b..29d03f2 100644
--- a/GL/Makefile.am
+++ b/GL/Makefile.am
@@ -1,7 +1,9 @@
-if XDARWIN
-DARWIN_SUBDIRS = apple
+if XQUARTZ
+XQUARTZ_SUBDIRS = apple
 endif
-SUBDIRS = glx mesa $(DARWIN_SUBDIRS)
+
+SUBDIRS = glx mesa $(XQUARTZ_SUBDIRS)
+DIST_SUBDIRS = glx mesa apple
 
 WINDOWS_EXTRAS = \
 	windows/ChangeLog \
diff --git a/GL/apple/Makefile.am b/GL/apple/Makefile.am
index 2b2d10c..6f0b68d 100644
--- a/GL/apple/Makefile.am
+++ b/GL/apple/Makefile.am
@@ -1,8 +1,9 @@
-AM_CFLAGS = -I$(top_srcdir) \
-	 -I$(top_srcdir)/hw/darwin/quartz \
-	 -I$(top_srcdir)/GL/glx \
-	 -I$(top_srcdir)/hw/darwin/quartz/cr \
-	 -I$(top_srcdir)/GL/include
+AM_CPPFLAGS = \
+	-I$(top_srcdir) \
+	-I$(top_srcdir)/GL/glx \
+	-I$(top_srcdir)/GL/include \
+	-I$(top_srcdir)/hw/darwin/quartz \
+	-I$(top_srcdir)/hw/darwin/quartz/cr
 
 if HAVE_AGL_FRAMEWORK
 noinst_LIBRARIES = libAGLcore.a 
diff --git a/configure.ac b/configure.ac
index f8c8fe4..b81d786 100644
--- a/configure.ac
+++ b/configure.ac
@@ -101,8 +101,6 @@ AC_HEADER_DIRENT
 AC_HEADER_STDC
 AC_CHECK_HEADERS([fcntl.h stdlib.h string.h unistd.h])
 
-AC_CHECK_PROG(HAVE_LAUNCHD, [launchd], [yes], [])
-
 dnl Checks for typedefs, structures, and compiler characteristics.
 AC_C_CONST
 AC_C_BIGENDIAN([ENDIAN="X_BIG_ENDIAN"], [ENDIAN="X_LITTLE_ENDIAN"])
@@ -470,10 +468,13 @@ AC_ARG_WITH(xkb-output,       AS_HELP_STRING([--with-xkb-output=PATH], [Path to
 AC_ARG_WITH(serverconfig-path, AS_HELP_STRING([--with-serverconfig-path=PATH], [Path to server config (default: ${libdir}/xserver)]),
 				[ SERVERCONFIG="$withval" ],
 				[ SERVERCONFIG="${libdir}/xserver" ])
-APPLE_APPLICATIONS_DIR="${bindir}/Applications"
-AC_ARG_WITH(apple-applications-dir,AS_HELP_STRING([--with-apple-applications-dir=PATH], [Path to the Applications directory (default: ${bindir}/Applications)]),
-                               [ APPLE_APPLICATIONS_DIR="${withval}" ].
-                               [ APPLE_APPLICATIONS_DIR="${bindir}/Applications" ])
+APPLE_APPLICATIONS_DIR="/Applications/Utilities"
+AC_ARG_WITH(apple-applications-dir,AS_HELP_STRING([--with-apple-applications-dir=PATH], [Path to the Applications directory (default: /Applications/Utilities)]),
+				[ APPLE_APPLICATIONS_DIR="${withval}" ].
+				[ APPLE_APPLICATIONS_DIR="/Applications/Utilities" ])
+
+AC_ARG_WITH(launchd,          AS_HELP_STRING([--with-launchd], [Build with support for Apple's launchd (default: auto)]), [LAUNCHD=$withval], [LAUNCHD=auto])
+
 AC_ARG_WITH(pci-txt-ids-dir, AS_HELP_STRING([--with-pci-txt-ids-dir=PATH],
 [Path to pci id directory (default: ${datadir}/X11/pci)]),
 				[ PCI_TXT_IDS_DIR="$withval" ],
@@ -546,10 +547,10 @@ AC_ARG_ENABLE(xorg,    	      AS_HELP_STRING([--enable-xorg], [Build Xorg server
 AC_ARG_ENABLE(dmx,    	      AS_HELP_STRING([--enable-dmx], [Build DMX server (default: no)]), [DMX=$enableval], [DMX=no])
 AC_ARG_ENABLE(xvfb,    	      AS_HELP_STRING([--enable-xvfb], [Build Xvfb server (default: yes)]), [XVFB=$enableval], [XVFB=yes])
 AC_ARG_ENABLE(xnest,   	      AS_HELP_STRING([--enable-xnest], [Build Xnest server (default: auto)]), [XNEST=$enableval], [XNEST=auto])
-AC_ARG_ENABLE(xdarwin, 	      AS_HELP_STRING([--enable-xdarwin], [Build XDarwin server (default: auto)]), [XDARWIN=$enableval], [XDARWIN=auto])
-AC_ARG_ENABLE(xdarwinapp,     AS_HELP_STRING([--enable-xdarwinapp], [Build XDarwin.app server (default: no)]), [XDARWINAPP=$enableval], [XDARWINAPP=no])
-AC_ARG_ENABLE(xquartz,        AS_HELP_STRING([--disable-xquartz], [Build Xquartz server on Darwin (default: auto)]), [XQUARTZ=$enableval], [XQUARTZ=auto])
-AC_ARG_ENABLE(x11app,         AS_HELP_STRING([--enable-x11app], [Build Apple's X11.app wrapper for Xquartz (default: no)]), [X11APP=$enableval], [X11APP=no])
+AC_ARG_ENABLE(xquartz,        AS_HELP_STRING([--enable-xquartz], [Build Xquartz server for OS-X (default: auto)]), [XQUARTZ=$enableval], [XQUARTZ=auto])
+AC_ARG_ENABLE(x11app,         AS_HELP_STRING([--enable-x11app], [Build Apple's X11.app for Xquartz (default: auto)]), [X11APP=$enableval], [X11APP=auto])
+AC_ARG_WITH(x11app-archs,     AS_HELP_STRING([--with-x11app-archs=ARCHS], [Architectures to build X11.app for, space delimeted (default: "ppc i386")]), [X11APP_ARCHS=$enableval], [X11APP_ARCHS="ppc i386"])
+AC_SUBST([X11APP_ARCHS])
 AC_ARG_ENABLE(xwin,    	      AS_HELP_STRING([--enable-xwin], [Build XWin server (default: auto)]), [XWIN=$enableval], [XWIN=auto])
 AC_ARG_ENABLE(xprint,         AS_HELP_STRING([--enable-xprint], [Build Xprint extension and server (default: no)]), [XPRINT=$enableval], [XPRINT=no])
 AC_ARG_ENABLE(xgl,            AS_HELP_STRING([--enable-xgl], [Build Xgl server (default: no)]), [XGL=$enableval], [XGL=no])
@@ -1155,58 +1156,6 @@ dnl ---------------------------------------------------------------------------
 dnl DDX section.
 dnl ---------------------------------------------------------------------------
 
-dnl DMX DDX
-
-AC_MSG_CHECKING([whether to build Xdmx DDX])
-PKG_CHECK_MODULES([DMXMODULES], [xmuu xext x11 xrender xfixes xfont xi dmxproto xau $XDMCP_MODULES], [have_dmx=yes], [have_dmx=no])
-if test "x$DMX" = xauto; then
-	DMX="$have_dmx"
-fi
-AC_MSG_RESULT([$DMX])
-AM_CONDITIONAL(DMX, [test "x$DMX" = xyes])
-
-if test "x$DMX" = xyes; then
-	if test "x$have_dmx" = xno; then
-		AC_MSG_ERROR([Xdmx build explicitly requested, but required
-		              modules not found.])
-	fi
-	DMX_INCLUDES="$XEXT_INC $RENDER_INC $XTRAP_INC $RECORD_INC"
-	XDMX_CFLAGS="$DMXMODULES_CFLAGS"
-	XDMX_LIBS="$XEXT_LIB $FB_LIB $CONFIG_LIB $RENDER_LIB $XTRAP_LIB $RECORD_LIB $XI_LIB $XKB_LIB $XKB_STUB_LIB $MIEXT_SHADOW_LIB $MIEXT_DAMAGE_LIB $CWRAP_LIB"
-	XDMX_SYS_LIBS="$DMXMODULES_LIBS"
-	AC_SUBST([XDMX_CFLAGS])
-	AC_SUBST([XDMX_LIBS])
-	AC_SUBST([XDMX_SYS_LIBS])
-
-dnl USB sources in DMX require <linux/input.h>
-	AC_CHECK_HEADER([linux/input.h], DMX_BUILD_USB="yes",
-			DMX_BUILD_USB="no")
-dnl Linux sources in DMX require <linux/keyboard.h>
-	AC_CHECK_HEADER([linux/keyboard.h], DMX_BUILD_LNX="yes",
-			DMX_BUILD_LNX="no")
-	if test "x$GLX" = xyes; then
-		PKG_CHECK_MODULES([GL], [glproto])
-	fi
-	PKG_CHECK_MODULES([XDMXCONFIG_DEP], [xaw7 xmu xt xpm x11])
-	AC_SUBST(XDMXCONFIG_DEP_CFLAGS)
-	AC_SUBST(XDMXCONFIG_DEP_LIBS)
-	PKG_CHECK_MODULES([DMXEXAMPLES_DEP], [dmx xext x11])
-	AC_SUBST(DMXEXAMPLES_DEP_LIBS)
-	PKG_CHECK_MODULES([DMXXMUEXAMPLES_DEP], [dmx xmu xext x11])
-	AC_SUBST(DMXXMUEXAMPLES_DEP_LIBS)
-	PKG_CHECK_MODULES([DMXXIEXAMPLES_DEP], [dmx xi xext x11])
-	AC_SUBST(DMXXIEXAMPLES_DEP_LIBS)
-	PKG_CHECK_MODULES([XTSTEXAMPLES_DEP], [xtst xext x11])
-	AC_SUBST(XTSTEXAMPLES_DEP_LIBS)
-	PKG_CHECK_MODULES([XRESEXAMPLES_DEP], [xres xext x11])
-	AC_SUBST(XRESEXAMPLES_DEP_LIBS)
-	PKG_CHECK_MODULES([X11EXAMPLES_DEP], [xext x11])
-	AC_SUBST(X11EXAMPLES_DEP_LIBS)
-fi
-AM_CONDITIONAL([DMX_BUILD_LNX], [test "x$DMX_BUILD_LNX" = xyes])
-AM_CONDITIONAL([DMX_BUILD_USB], [test "x$DMX_BUILD_USB" = xyes])
-
-
 dnl Xvfb DDX
 
 AC_MSG_CHECKING([whether to build Xvfb DDX])
@@ -1712,35 +1661,25 @@ AM_CONDITIONAL(XWIN_RANDR, [test "x$XWIN" = xyes])
 AM_CONDITIONAL(XWIN_XV, [test "x$XWIN" = xyes && test "x$XV" = xyes])
 
 dnl Darwin / OS X DDX
-AC_MSG_CHECKING([whether to build XDarwin (Mac OS X) DDX])
-if test "x$XDARWIN" = xauto; then
-	case $host_os in
-		darwin*) XDARWIN="yes" ;;
-		*) XDARWIN="no" ;;
-	esac
+if test "X$XQUARTZ" = Xauto; then
+	AC_CACHE_CHECK([whether to build Xquartz],xorg_cv_Carbon_framework,[
+	 	save_LDFLAGS=$LDFLAGS
+		LDFLAGS="$LDFLAGS -framework Carbon"
+		AC_LINK_IFELSE([char FSFindFolder(); int main() { FSFindFolder(); return 0;}],
+			[xorg_cv_Carbon_framework=yes],
+			[xorg_cv_Carbon_framework=no])
+		LDFLAGS=$save_LDFLAGS])
+                
+	if test "X$xorg_cv_Carbon_framework" = Xyes; then
+		XQUARTZ=yes
+	else
+		XQUARTZ=no
+	fi
 fi
-AC_MSG_RESULT([$XDARWIN])
-
-if test "x$XDARWIN" = xyes; then
-        if test "X$XQUARTZ" = Xauto; then
-                 AC_CACHE_CHECK([for Carbon framework],xorg_cv_Carbon_framework,[
-                 save_LDFLAGS=$LDFLAGS
-                 LDFLAGS="$LDFLAGS -framework Carbon"
-                 AC_LINK_IFELSE([char FSFindFolder();
-int main() {
-FSFindFolder();
-return 0;}
-                 ],[xorg_cv_Carbon_framework=yes],
-                  [xorg_cv_Carbon_framework=no])
-                  LDFLAGS=$save_LDFLAGS])
-                 if test "X$xorg_cv_Carbon_framework" = Xyes; then
-                   AC_DEFINE([DARWIN_WITH_QUARTZ],[1],
-                         [Have Quartz])
-                   XQUARTZ=yes
-                 else
-                   XQUARTZ=no
-                 fi
-               fi
+
+if test "x$XQUARTZ" = xyes; then
+	AC_DEFINE([XQUARTZ],[1],[Have Quartz])
+
 #	       glxAGL / glxCGL don't work yet
 #               AC_CACHE_CHECK([for AGL framework],xorg_cv_AGL_framework,[
 #               save_LDFLAGS=$LDFLAGS
@@ -1755,11 +1694,11 @@ return 0;}
 #               ])
                xorg_cv_AGL_framework=no
                DARWIN_GLX_LIBS='$(top_builddir)/GL/apple/indirect.o $(top_builddir)/GL/glx/libglx.la'
-	       DARWIN_LIBS="$FB_LIB $FIXES_LIB $XEXT_LIB $CONFIG_LIB $DBE_LIB $XTRAP_LIB $RECORD_LIB $DARWIN_GLX_LIBS $RENDER_LIB $RANDR_LIB $DAMAGE_LIB $MIEXT_DAMAGE_LIB $MIEXT_SHADOW_LIB $XI_LIB $XKB_LIB $XKB_STUB_LIB $COMPOSITE_LIB $XPSTUBS_LIB"
+	       DARWIN_LIBS="$FB_LIB $FIXES_LIB $XEXT_LIB $CONFIG_LIB $DBE_LIB $XTRAP_LIB $RECORD_LIB $RENDER_LIB $RANDR_LIB $DAMAGE_LIB $MIEXT_DAMAGE_LIB $MIEXT_SHADOW_LIB $XI_LIB $XKB_LIB $XKB_STUB_LIB $COMPOSITE_LIB $XPSTUBS_LIB"
 	       AC_SUBST([DARWIN_LIBS])
                AC_CHECK_LIB([Xplugin],[xp_init],[:])
                AC_SUBST([APPLE_APPLICATIONS_DIR])
-               CFLAGS="${CFLAGS} -D__DARWIN__"
+               CFLAGS="${CFLAGS} -D__DARWIN__ -DROOTLESS_WORKAROUND"
                PLIST_VERSION_STRING=$PACKAGE_VERSION
                AC_SUBST([PLIST_VERSION_STRING])
                PLIST_VENDOR_WEB=$VENDOR_WEB
@@ -1780,7 +1719,38 @@ return 0;}
                        AC_MSG_NOTICE([Disabling DGA extension])
                        DGA=no
                fi
+               if test "x$DMX" = xyes || test "x$DMX" = xauto; then
+                       AC_MSG_NOTICE([Disabling DMX DDX])
+                       DMX=no
+               fi
 fi
+
+if test "x$X11APP" = xauto; then
+	AC_MSG_CHECKING([whether to build X11.app])
+	if test "x$XQUARTZ" = xyes ; then
+		X11APP=yes
+	else
+		X11APP=no
+	fi
+	AC_MSG_RESULT([$X11APP])
+fi
+
+if test "x$LAUNCHD" = xauto; then
+	# Do we want to have this default to on for Xquartz builds only or any time we have launchd (like Xnest or Xvfb on OS-X)
+	#AC_CHECK_PROG(LAUNCHD, [launchd], [yes], [no])
+	AC_MSG_CHECKING([whether to support launchd])
+	if test "x$XQUARTZ" = xyes ; then
+		LAUNCHD=yes
+	else
+		LAUNCHD=no
+	fi
+	AC_MSG_RESULT([$LAUNCHD])
+fi
+
+if test "x$LAUNCHD" = xyes ; then
+	AC_DEFINE(HAVE_LAUNCHD, 1, [launchd support available])
+fi
+
 # Support for objc in autotools is minimal and not documented.
 OBJC='$(CC)'
 OBJCLD='$(CCLD)'
@@ -1794,9 +1764,59 @@ AC_SUBST([OBJCFLAGS])
 _AM_DEPENDENCIES([OBJC])
 AM_CONDITIONAL(HAVE_XPLUGIN, [test "x$ac_cv_lib_Xplugin_xp_init" = xyes])
 AM_CONDITIONAL(HAVE_AGL_FRAMEWORK, [test "x$xorg_cv_AGL_framework" = xyes])
-AM_CONDITIONAL(XDARWIN, [test "x$XDARWIN" = xyes])
-AM_CONDITIONAL(XDARWINAPP, [test "x$XDARWINAPP" = xyes])
 AM_CONDITIONAL(XQUARTZ, [test "x$XQUARTZ" = xyes])
+AM_CONDITIONAL(X11APP,[test "X$X11APP" = Xyes]) 
+
+dnl DMX DDX
+
+AC_MSG_CHECKING([whether to build Xdmx DDX])
+PKG_CHECK_MODULES([DMXMODULES], [xmuu xext x11 xrender xfixes xfont xi dmxproto xau $XDMCP_MODULES], [have_dmx=yes], [have_dmx=no])
+if test "x$DMX" = xauto; then
+	DMX="$have_dmx"
+fi
+AC_MSG_RESULT([$DMX])
+AM_CONDITIONAL(DMX, [test "x$DMX" = xyes])
+
+if test "x$DMX" = xyes; then
+	if test "x$have_dmx" = xno; then
+		AC_MSG_ERROR([Xdmx build explicitly requested, but required
+		              modules not found.])
+	fi
+	DMX_INCLUDES="$XEXT_INC $RENDER_INC $XTRAP_INC $RECORD_INC"
+	XDMX_CFLAGS="$DMXMODULES_CFLAGS"
+	XDMX_LIBS="$XEXT_LIB $FB_LIB $CONFIG_LIB $RENDER_LIB $XTRAP_LIB $RECORD_LIB $XI_LIB $XKB_LIB $XKB_STUB_LIB $MIEXT_SHADOW_LIB $MIEXT_DAMAGE_LIB $CWRAP_LIB"
+	XDMX_SYS_LIBS="$DMXMODULES_LIBS"
+	AC_SUBST([XDMX_CFLAGS])
+	AC_SUBST([XDMX_LIBS])
+	AC_SUBST([XDMX_SYS_LIBS])
+
+dnl USB sources in DMX require <linux/input.h>
+	AC_CHECK_HEADER([linux/input.h], DMX_BUILD_USB="yes",
+			DMX_BUILD_USB="no")
+dnl Linux sources in DMX require <linux/keyboard.h>
+	AC_CHECK_HEADER([linux/keyboard.h], DMX_BUILD_LNX="yes",
+			DMX_BUILD_LNX="no")
+	if test "x$GLX" = xyes; then
+		PKG_CHECK_MODULES([GL], [glproto])
+	fi
+	PKG_CHECK_MODULES([XDMXCONFIG_DEP], [xaw7 xmu xt xpm x11])
+	AC_SUBST(XDMXCONFIG_DEP_CFLAGS)
+	AC_SUBST(XDMXCONFIG_DEP_LIBS)
+	PKG_CHECK_MODULES([DMXEXAMPLES_DEP], [dmx xext x11])
+	AC_SUBST(DMXEXAMPLES_DEP_LIBS)
+	PKG_CHECK_MODULES([DMXXMUEXAMPLES_DEP], [dmx xmu xext x11])
+	AC_SUBST(DMXXMUEXAMPLES_DEP_LIBS)
+	PKG_CHECK_MODULES([DMXXIEXAMPLES_DEP], [dmx xi xext x11])
+	AC_SUBST(DMXXIEXAMPLES_DEP_LIBS)
+	PKG_CHECK_MODULES([XTSTEXAMPLES_DEP], [xtst xext x11])
+	AC_SUBST(XTSTEXAMPLES_DEP_LIBS)
+	PKG_CHECK_MODULES([XRESEXAMPLES_DEP], [xres xext x11])
+	AC_SUBST(XRESEXAMPLES_DEP_LIBS)
+	PKG_CHECK_MODULES([X11EXAMPLES_DEP], [xext x11])
+	AC_SUBST(X11EXAMPLES_DEP_LIBS)
+fi
+AM_CONDITIONAL([DMX_BUILD_LNX], [test "x$DMX_BUILD_LNX" = xyes])
+AM_CONDITIONAL([DMX_BUILD_USB], [test "x$DMX_BUILD_USB" = xyes])
 
 dnl kdrive DDX
 
@@ -2144,19 +2164,8 @@ hw/xgl/glxext/module/Makefile
 hw/xnest/Makefile
 hw/xwin/Makefile
 hw/darwin/Makefile
-hw/darwin/bundle/Makefile
-hw/darwin/bundle/Dutch.lproj/Makefile
-hw/darwin/bundle/English.lproj/Makefile
-hw/darwin/bundle/French.lproj/Makefile
-hw/darwin/bundle/German.lproj/Makefile
-hw/darwin/bundle/Japanese.lproj/Makefile
-hw/darwin/bundle/Portuguese.lproj/Makefile
-hw/darwin/bundle/Spanish.lproj/Makefile
-hw/darwin/bundle/Swedish.lproj/Makefile
-hw/darwin/bundle/ko.lproj/Makefile
-hw/darwin/iokit/Makefile
 hw/darwin/quartz/Makefile
-hw/darwin/utils/Makefile
+hw/darwin/quartz/xpr/Makefile
 hw/kdrive/Makefile
 hw/kdrive/ati/Makefile
 hw/kdrive/chips/Makefile
diff --git a/dix/main.c b/dix/main.c
index e5c5578..eea7eed 100644
--- a/dix/main.c
+++ b/dix/main.c
@@ -256,10 +256,10 @@ main(int argc, char *argv[], char *envp[])
     PrinterInitGlobals();
 #endif
 
+#ifdef XQUARTZ
     /* Quartz support on Mac OS X requires that the Cocoa event loop be in
      * the main thread. This allows the X server main to be called again
      * from another thread. */
-#if defined(__DARWIN__) && defined(DARWIN_WITH_QUARTZ)
     DarwinHandleGUI(argc, argv, envp);
 #endif
 
diff --git a/hw/Makefile.am b/hw/Makefile.am
index 30662cc..0e65f71 100644
--- a/hw/Makefile.am
+++ b/hw/Makefile.am
@@ -1,10 +1,6 @@
 if DMX
-if XDARWIN
-# Darwin does not need the dmx subdir
-else
 DMX_SUBDIRS = dmx
 endif
-endif
 
 if XORG
 XORG_SUBDIRS = xfree86
@@ -34,19 +30,19 @@ if XPRINT
 XPRINT_SUBDIRS = xprint
 endif
 
-if XDARWIN
-XDARWIN_SUBDIRS = darwin
+if XQUARTZ
+XQUARTZ_SUBDIRS = darwin
 endif
 
 SUBDIRS =			\
 	$(XORG_SUBDIRS)		\
 	$(XGL_SUBDIRS)		\
 	$(XWIN_SUBDIRS)		\
-	$(XDARWIN_SUBDIRS)	\
+	$(XQUARTZ_SUBDIRS)	\
 	$(XVFB_SUBDIRS)		\
 	$(XNEST_SUBDIRS)	\
 	$(DMX_SUBDIRS)          \
-        $(KDRIVE_SUBDIRS)	\
+	$(KDRIVE_SUBDIRS)	\
 	$(XPRINT_SUBDIRS)
 
 DIST_SUBDIRS = dmx xfree86 vfb xnest xwin darwin kdrive xgl xprint
diff --git a/hw/darwin/Makefile.am b/hw/darwin/Makefile.am
index 71b9767..cd3f7f4 100644
--- a/hw/darwin/Makefile.am
+++ b/hw/darwin/Makefile.am
@@ -1,290 +1,106 @@
-noinst_LIBRARIES = libdarwinShared.a
-libdarwin_XINPUT_SRCS = darwinXinput.c
+AM_CFLAGS = $(XORG_CFLAGS) $(DIX_CFLAGS)
+AM_CPPFLAGS = $(XORG_INCS) \
+	-DINXQUARTZ \
+	-DUSE_NEW_CLUT \
+	-DXFree86Server \
+	-I$(top_srcdir)/miext/rootless
 
-AM_CFLAGS = @XORG_CFLAGS@ @DIX_CFLAGS@
-AM_CPPFLAGS = @XORG_CFLAGS@ @DIX_CFLAGS@
-INCLUDES = @XORG_INCS@ -I../../miext/rootless
+SUBDIRS = quartz utils
 
-DEFS = @DEFS@ -DUSE_NEW_CLUT
-
-if XQUARTZ
-XQUARTZ_SUBDIRS = quartz
-XQUARTZ_PROGS = Xquartz
-XQUARTZ_HOOK = xquartz-install-hook
-endif
-
-if XDARWINAPP
-XDARWINAPP_SUBDIRS = bundle
-XDARWINAPP_HOOK = xdarwinapp-install-hook
-endif
-
-SUBDIRS = \
-	  iokit \
-	  $(XQUARTZ_SUBDIRS) \
-	  $(XDARWINAPP_SUBDIRS) \
-	  utils \
-	  .
-
-libdarwinShared_a_SOURCES = darwin.c \
-			  darwinEvents.c \
-			  darwinKeyboard.c \
-			  $(darwin_XINPUT_SRCS) 
-
-# bin_PROGRAMS = XDarwin Xquartz
-bin_PROGRAMS = $(XQUARTZ_PROGS)
-
-#XDarwin_SOURCES = \
-#                  $(top_srcdir)/fb/fbcmap_mi.c \
-#                  $(top_srcdir)/mi/miinitext.c \
-#                  $(top_srcdir)/Xi/stubs.c
+bin_PROGRAMS = Xquartz
+man1_MANS = Xquartz.man
 
 Xquartz_SOURCES = \
-                  $(top_srcdir)/fb/fbcmap_mi.c \
-                  $(top_srcdir)/mi/miinitext.c \
-                  $(top_srcdir)/Xi/stubs.c \
-                  apple/X11Application.m \
-                  apple/X11Controller.m \
-                  quartz/Preferences.m \
-                  quartz/applewm.c \
-                  quartz/keysym2ucs.c \
-                  quartz/pseudoramiX.c \
-                  quartz/quartz.c \
-                  quartz/quartzAudio.c \
-                  quartz/quartzCocoa.m \
-                  quartz/quartzKeyboard.c \
-                  quartz/quartzPasteboard.c \
-                  quartz/quartzStartup.c \
-                  quartz/xpr/appledri.c \
-                  quartz/xpr/dri.c \
-                  quartz/xpr/xprAppleWM.c \
-                  quartz/xpr/xprCursor.c \
-                  quartz/xpr/xprFrame.c \
-                  quartz/xpr/xprScreen.c \
-                  quartz/xpr/x-hash.c \
-                  quartz/xpr/x-hook.c \
-                  quartz/xpr/x-list.c
+	darwin.c \
+	darwinEvents.c \
+	darwinKeyboard.c \
+	darwinXinput.c \
+	$(top_srcdir)/fb/fbcmap_mi.c \
+	$(top_srcdir)/mi/miinitext.c
+
+#		We should probably add these once they're working, or are these obsolete and to be removed?
+#		./quartz/cr/libcr.a
+#		./quartz/fullscreen/libfullscreen.a
 
-DARWIN_LIBS = \
+Xquartz_LDADD = \
+	./quartz/libXquartz.a \
+	./quartz/xpr/libxpr.a \
 	$(top_builddir)/dix/dixfonts.lo \
 	$(top_builddir)/config/libconfig.a \
+	$(top_builddir)/dix/libdix.la \
+	$(top_builddir)/os/libos.la \
+	$(top_builddir)/dix/libxpstubs.la \
 	$(top_builddir)/miext/shadow/libshadow.la \
+	$(top_builddir)/fb/libfb.la \
+	$(top_builddir)/mi/libmi.la \
+	$(top_builddir)/composite/libcomposite.la \
+	$(top_builddir)/damageext/libdamageext.la \
+	$(top_builddir)/miext/damage/libdamage.la \
+	$(top_builddir)/xfixes/libxfixes.la \
 	$(top_builddir)/miext/cw/libcw.la \
-	@DARWIN_LIBS@ \
+	$(top_builddir)/Xext/libXext.la \
+	$(top_builddir)/xkb/libxkb.la \
+	$(top_builddir)/xkb/libxkbstubs.la \
+	$(top_builddir)/Xi/libXi.la \
+	$(top_builddir)/dbe/libdbe.la \
+	$(top_builddir)/record/librecord.la \
+	$(top_builddir)/XTrap/libxtrap.la \
 	$(top_builddir)/miext/rootless/librootless.la \
 	$(top_builddir)/miext/rootless/safeAlpha/libsafeAlpha.la \
 	$(top_builddir)/miext/rootless/accel/librlAccel.la \
-	./libdarwinShared.a \
-	$(XSERVER_LIBS)
-
-#XDARWIN_LIBS = \
-#	$(DARWIN_LIBS) \
-#	./iokit/libiokit.a
-XQUARTZ_LIBS = \
-	$(DARWIN_LIBS)
-
-#XDarwin_DEPENDENCIES = $(XDARWIN_LIBS)
-#XDarwin_LDADD = $(XDARWIN_LIBS) $(XSERVER_SYS_LIBS)
-
-Xquartz_DEPENDENCIES = $(XQUARTZ_LIBS)
-Xquartz_LDADD = $(XQUARTZ_LIBS) $(XSERVER_SYS_LIBS) -lXplugin
-
-#XDarwin_LDFLAGS =  \
-#                 -XCClinker -Objc \
-#                 -Wl,-u,_miDCInitialize \
-#                 -Wl,-framework,IOKit
+	$(DARWIN_LIBS) $(XSERVER_LIBS) -lXplugin
 
 Xquartz_LDFLAGS =  \
-                 -XCClinker -Objc \
-                 -Wl,-u,_miDCInitialize \
-                 -Wl,-framework,Carbon \
-                 -Wl,-framework,OpenGL \
-		 -Wl,-dylib_file,/System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGL.dylib:/System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGL.dylib \
-                 -Wl,-framework,Cocoa \
-                 -Wl,-framework,CoreAudio \
-                 -Wl,-framework,IOKit
-
-#XDarwin_CFLAGS = -DINXDARWIN
-Xquartz_CFLAGS = -DINXQUARTZ -DHAS_CG_MACH_PORT -DHAS_KL_API  -DHAVE_XORG_CONFIG_H
-
-if XQUARTZ
-DEFS += -DDARWIN_WITH_QUARTZ -DXFree86Server
-
-bin_SCRIPTS = x11app
+	-XCClinker -Objc \
+	-Wl,-u,_miDCInitialize \
+	-Wl,-framework,Carbon \
+	-L/System/Library/Frameworks/OpenGL.framework/Libraries -lGL \
+	-Wl,-framework,OpenGL \
+	-Wl,-framework,Cocoa \
+	-Wl,-framework,CoreAudio \
+	-Wl,-framework,IOKit
+
+if X11APP
+bin_SCRIPTS = x11app x11launcher
 
 x11app:
-	cd apple && xcodebuild CFLAGS="$(XSERVERCFLAGS_CFLAGS)" LDFLAGS="$(XSERVERCFLAGS_LIBS)"
-endif
-
-if XDARWINAPP
-macosdir = $(darwinappdir)/Contents/MacOS
-
-macos_PROGRAMS = XDarwinApp
-darwinappdir = @APPLE_APPLICATIONS_DIR@/XDarwin.app
-
-XDarwinApp_SOURCES = \
-                $(top_srcdir)/fb/fbcmap_mi.c \
-                $(top_srcdir)/mi/miinitext.c \
-		$(top_srcdir)/Xi/stubs.c 
-
-XDARWINAPP_LIBS = \
-	$(DARWIN_LIBS) \
-	./quartz/XApplication.o \
-	./libdarwinShared.a \
-	./quartz/libXQuartz.a \
-	$(XSERVER_LIBS)
-
-XDarwinApp_DEPENDENCIES = $(XDARWINAPP_LIBS)
-XDarwinApp_LDADD = $(XDARWINAPP_LIBS) $(XSERVER_SYS_LIBS)
+	cd apple && xcodebuild CFLAGS="$(CFLAGS)" LDFLAGS="$(LDFLAGS)" ARCHS="$(X11APP_ARCHS)"
 
-XDarwinApp_LDFLAGS =  \
-		 -XCClinker -Objc \
-		 -Wl,-u,_miDCInitialize \
-		 -Wl,-framework,Carbon \
-		 -Wl,-framework,ApplicationServices \
-		 -Wl,-framework,Cocoa \
-		 -Wl,-framework,CoreAudio \
-		 -Wl,-framework,IOKit
+x11launcher:
+	cd launcher && xcodebuild CFLAGS="$(CFLAGS)" LDFLAGS="$(LDFLAGS)" ARCHS="$(X11APP_ARCHS)"
 
-XDarwinApp_CFLAGS = -DINXDARWINAPP
+x11app-install:
+	cd apple && xcodebuild install DSTROOT=$(DESTDIR) INSTALL_PATH=$(prefix) DEPLOYMENT_LOCATION=YES SKIP_INSTALL=NO ARCHS="$(X11APP_ARCHS)"
 
-crplugindir = $(darwinappdir)/Contents/Resources/cr.bundle/Contents/MacOS
-crplugin_LTLIBRARIES = cr.la
-cr_la_SOURCES = \
-		quartz/cr/crAppleWM.m \
-		quartz/cr/crFrame.m \
-		quartz/cr/crScreen.m \
-		quartz/fullscreen/quartzCursor.c \
-		quartz/cr/XView.m
+x11launcher-install:
+	cd launcher && xcodebuild install DSTROOT=$(DESTDIR) INSTALL_PATH=$(APPLE_APPLICATIONS_DIR) DEPLOYMENT_LOCATION=YES SKIP_INSTALL=NO ARCHS="$(X11APP_ARCHS)"
 
-cr_la_LIBADD = \
-		$(top_builddir)/miext/rootless/librootless.la \
-		$(top_builddir)/miext/rootless/safeAlpha/libsafeAlpha.la \
-		$(top_builddir)/miext/rootless/accel/librlAccel.la
+x11app-clean:
+	rm -rf apple/build
 
-cr_la_LDFLAGS = -shrext '' -Wl,-framework,ApplicationServices \
-		-lpixman-1 \
-		-Wl,-framework,Cocoa \
-		-Wl,-framework,Carbon \
-		-XCClinker -ObjC \
-		-XCClinker -bundle_loader -XCClinker XDarwinApp \
-		-module -avoid-version -no-undefined
-cr_la_DEPENDENCIES = XDarwinApp	
+x11launcher-clean:
+	rm -rf launcher/build
 
-fullscreenplugindir = $(darwinappdir)/Contents/Resources/fullscreen.bundle/Contents/MacOS
-fullscreenplugin_LTLIBRARIES = fullscreen.la
-fullscreen_la_SOURCES = \
-		quartz/fullscreen/fullscreen.c \
-		quartz/fullscreen/quartzCursor.c
+install-data-hook: x11app-install x11launcher-install
+clean-local: x11app-clean x11launcher-clean
 
-fullscreen_la_LIBADD = \
-		$(top_builddir)/miext/shadow/libshadow.la
-
-fullscreen_la_LDFLAGS = -shrext '' -Wl,-framework,ApplicationServices \
-		-XCClinker -bundle_loader -XCClinker XDarwinApp \
-		-module -avoid-version -no-undefined
-fullscreen_la_DEPENDENCIES = XDarwinApp	
-
-if GLX
-glxMesaplugindir = $(darwinappdir)/Contents/Resources/glxMesa.bundle/Contents/MacOS
-glxMesaplugin_LTLIBRARIES = glxMesa.la
-glxMesa_la_SOURCES =
-glxMesa_la_LIBADD = \
-		$(top_builddir)/GL/glx/libglx.la \
-		$(top_builddir)/GL/mesa/libGLcore.la 
-glxMesa_la_LDFLAGS = -shrext '' \
-		-Wl,-framework,AGL \
-		-Wl,-framework,OpenGL \
-		-XCClinker -ObjC \
-		-XCClinker -bundle_loader -XCClinker XDarwinApp \
-		-module -avoid-version -no-undefined
-glxMesa_la_DEPENDENCIES = XDarwinApp	
 endif
 
-if HAVE_XPLUGIN
-
-xprplugindir = $(darwinappdir)/Contents/Resources/xpr.bundle/Contents/MacOS
-xprplugin_LTLIBRARIES = xpr.la
-xpr_la_SOURCES = \
-		quartz/xpr/appledri.c \
-		quartz/xpr/dri.c \
-		quartz/xpr/xprAppleWM.c \
-		quartz/xpr/xprCursor.c \
-		quartz/xpr/xprFrame.c \
-		quartz/xpr/xprScreen.c \
-		quartz/xpr/x-hash.c \
-		quartz/xpr/x-hook.c \
-		quartz/xpr/x-list.c
-
-xpr_la_LIBADD = \
-		$(top_builddir)/miext/rootless/librootless.la \
-		$(top_builddir)/miext/rootless/safeAlpha/libsafeAlpha.la \
-		$(top_builddir)/miext/rootless/accel/librlAccel.la
-
-xpr_la_LDFLAGS = -shrext '' -Wl,-framework,ApplicationServices \
-		-lpixman-1 \
-		-lXplugin \
-		-XCClinker -bundle_loader -XCClinker XDarwinApp \
-		-module -avoid-version -no-undefined
-xpr_la_DEPENDENCIES = XDarwinApp	
-
-endif
-
-if HAVE_AGL_FRAMEWORK
-glxCGLplugindir = $(darwinappdir)/Contents/Resources/glxCGL.bundle/Contents/MacOS
-glxCGLplugin_LTLIBRARIES = glxCGL.la
-glxCGL_la_SOURCES =
-glxCGL_la_LIBADD = \
-		$(top_builddir)/GL/glx/glxext.o \
-		$(top_builddir)/GL/glx/libglx.a \
-		$(top_builddir)/GL/apple/libAGLcore.a
-glxCGL_la_LDFLAGS = -shrext '' -Wl,-framework,ApplicationServices \
-		-Wl,-framework,AGL \
-		-Wl,-framework,OpenGL \
-		-XCClinker -ObjC \
-		-XCClinker -bundle_loader -XCClinker XDarwinApp \
-		-module -avoid-version -no-undefined
-glxCGL_la_DEPENDENCIES = XDarwinApp	
-
-
-glxAGLplugindir = $(darwinappdir)/Contents/Resources/glxAGL.bundle/Contents/MacOS
-glxAGLplugin_LTLIBRARIES = glxAGL.la
-glxAGL_la_SOURCES =
-glxAGL_la_LIBADD = \
-		$(top_builddir)/GL/glx/glxext.o \
-		$(top_builddir)/GL/glx/libglx.a \
-		$(top_builddir)/GL/apple/libAGLcore.a
-glxAGL_la_LDFLAGS = -shrext '' \
-		-Wl,-framework,AGL \
-		-Wl,-framework,OpenGL \
-		-XCClinker -ObjC \
-		-XCClinker -bundle_loader -XCClinker XDarwinApp \
-		-module -avoid-version -no-undefined
-glxAGL_la_DEPENDENCIES = XDarwinApp	
-
-
-
-endif
-endif
-
-#man1_MANS = XDarwin.man
-
-#uninstall-hook:
-#	rm -rf $(DESTDIR)$(macosdir)/XDarwin
-
-install-data-hook: $(XQUARTZ_HOOK) $(XDARWINAPP_HOOK)
-
-xquartz-install-hook::
-	cd apple && xcodebuild install CFLAGS="$(XSERVERCFLAGS_CFLAGS)" LDFLAGS="$(XSERVERCFLAGS_LIBS)"
-
-xdarwinapp-install hook:
-	mv $(DESTDIR)$(macosdir)/XDarwinApp $(DESTDIR)$(macosdir)/XDarwin
-
 EXTRA_DIST = \
-	darwin.c \
+	Xquartz.man \
 	darwinClut8.h \
-	darwinEvents.c \
 	darwin.h \
-	darwinKeyboard.c \
 	darwinKeyboard.h \
-	darwinXinput.c \
-	XDarwin.man
+	apple/Info.plist \
+	apple/X11.icns \
+	apple/bundle-main.c \
+	apple/English.lproj/InfoPlist.strings \
+	apple/English.lproj/Localizable.strings \
+	apple/English.lproj/main.nib/classes.nib \
+	apple/English.lproj/main.nib/info.nib \
+	apple/English.lproj/main.nib/keyedobjects.nib \
+	apple/X11.xcodeproj/project.pbxproj \
+	launcher/bundle-main.c \
+	launcher/Info.plist \
+	launcher/X11.icns \
+	launcher/X11.xcodeproj/project.pbxproj
diff --git a/hw/darwin/README.apple b/hw/darwin/README.apple
deleted file mode 100644
index 229ab17..0000000
--- a/hw/darwin/README.apple
+++ /dev/null
@@ -1,35 +0,0 @@
-This directory contains a port of the XDarwin code to the modular X.org
-codebase to be compiled on Darwin/OS X; this would not have been possible
-without the help of Torrey Lyons and Peter O'Gorman, to whom I am
-grateful for their patches, time and moral support.
-
-The server builds 4 targets:
-
-* XDarwin: this server runs on Darwin systems without Quartz
-  (i.e. non-OS X); it has not been well-tested.
-
-* XDarwinApp: this builds XDarwin.app, which is a full X server using
-  Quartz.  It has loadable module support for AGL and CGL, and well as
-  fullscreen and rootless support.
-
-* Xquartz: this server runs on Quartz-based systems, and is meant to
-  work with X11.app
-
-* x11app: this builds a version of Apple's X11.app using patches by
-  Torrey Lyons; most, but not all, functionality of Apple's original
-  X11.app is present in this release.
-
-Known issues:
-
-* AGL and CGL support for 3D indirect acceleration does not work;
-  indirect.c has been rewritten, but not yet integrated into this source tree.
-
-* Fullscreen mode does not work; I don't know why.
-
-* Some features in X11.app are not yet implemented; these are marked
-  with #ifdef DARWIN_DDX_MISSING in the code.
-
-* The build system code could probably be cleaned up slightly.
-
-Any patches or code contributions would be most welcome and may be
-sent to me at bbyer at apple.com.
diff --git a/hw/darwin/XDarwin.man b/hw/darwin/XDarwin.man
deleted file mode 100644
index 6fc9aec..0000000
--- a/hw/darwin/XDarwin.man
+++ /dev/null
@@ -1,203 +0,0 @@
-.TH XDARWIN 1 __vendorversion__
-.SH NAME
-XDarwin \- X window system server for Darwin operating system
-.SH SYNOPSIS
-.B XDarwin
-[ options ] ...
-.SH DESCRIPTION
-#ifdef DARWIN_WITH_QUARTZ
-.I XDarwin
-is the X window server for Mac OS X and the Darwin operating system
-provided by the X.Org Foundation.
-.I XDarwin
-can run in three different modes. On Mac OS X,
-.I XDarwin
-runs in parallel with Aqua in full screen or rootless modes. These modes
-are called Quartz modes, named after the Quartz 2D compositing engine used
-by Aqua. XDarwin can also be run from the Darwin text console in IOKit mode.
-.PP
-When running from the console,
-.I XDarwin
-acts as the window server and uses IOKit services to access the display
-framebuffer, mouse and keyboard and to provide a layer of hardware
-abstraction. In console mode,
-.I XDarwin
-will normally be started by the \fIxdm(1)\fP display manager or by a script
-that runs the program \fIxinit(1)\fP.
-.PP
-When running with the Mac OS X Aqua GUI,
-.I XDarwin
-will normally be started by launching from the Finder, but it may also be
-started from the command line with the \fB\-quartz\fP, \fB\-fullscreen\fP, or
-\fB\-rootless\fP options. Note that the defaults for various command line
-options are set by the
-.I XDarwin
-application preferences in the Quartz modes.
-.PP
-In full screen Quartz mode, when the X Window System is active, it takes over
-the entire screen. CoreGraphics is used to capture and draw to the screen. The
-.I XDarwin
-application allows easy switching between the Mac OS X and X window
-desktops. More information is available in the Help menu of the
-.I XDarwin
-application.
-.PP
-In rootless mode, the X window system and Aqua share your display.  The root
-window of the X11 display is the size of the screen and contains all the
-other windows. The X11 root window is not displayed in rootless mode as Aqua
-handles the desktop background.
-#else
-.I XDarwin
-is the X window server for Mac OS X and the Darwin operating system
-provided by the X.Org Foundation. This version of
-.I XDarwin
-can only be started from the Darwin text console. The Mac OS X Aqua GUI, if
-present, must be shut down.
-.I XDarwin
-uses IOKit services to access the display
-framebuffer, mouse and keyboard and to provide a layer of hardware
-abstraction.
-.I XDarwin
-will normally be started by the \fIxdm(1)\fP display manager or by a script
-that runs the program \fIxinit(1)\fP.
-#endif
-.SH OPTIONS
-.PP
-In addition to the normal server options described in the \fIXserver(1)\fP
-manual page, \fIXDarwin\fP accepts the following command line switches:
-.TP 8
-.B \-fakebuttons
-Emulates a 3 button mouse using modifier keys. By default, the Command modifier
-is used to emulate button 2 and Option is used for button 3. Thus, clicking the
-first mouse button while holding down Command will act like clicking
-button 2. Holding down Option will simulate button 3.
-.TP 8
-.B \-nofakebuttons
-Do not emulate a 3 button mouse. This is the default.
-.TP 8
-.B "\-fakemouse2 \fImodifiers\fP"
-Change the modifier keys used to emulate the second mouse button. By default,
-Command is used to emulate the second button. Any combination of the following
-modifier names may be used: Shift, Option, Control, Command, Fn. For example,
-.B \-fakemouse2 """Option,Shift""
-will set holding Option, Shift and clicking on button one as equivalent to
-clicking the second mouse button.
-.TP 8
-.B "\-fakemouse3 \fImodifiers\fP"
-Change the modifier keys used to emulate the third mouse button. By default,
-Option is used to emulate the third button. Any combination of the following
-modifier names may be used: Shift, Option, Control, Command, Fn. For example,
-.B \-fakemouse3 """Control,Shift""
-will set holding Control, Shift and clicking on button one as equivalent to
-clicking the third mouse button.
-.TP 8
-.B "\-keymap \fIfile\fP"
-On startup \fIXDarwin\fP translates a Darwin keymapping into an X keymap.
-The default is to read this keymapping from USA.keymapping. With this option
-the keymapping will be read from \fIfile\fP instead. If the file's path is
-not specified, it will be searched for in Library/Keyboards/ underneath the
-following directories (in order): ~, /, /Network, /System.
-.TP 8
-.B \-nokeymap
-On startup \fIXDarwin\fP translates a Darwin keymapping into an X keymap.
-With this option XDarwin queries the kernel for the current keymapping
-instead of reading it from a file. This will often fail on newer kernels.
-#ifdef DARWIN_WITH_QUARTZ
-.TP 8
-.B "\-size \fIwidth\fP \fIheight\fP"
-Sets the screen resolution for the X server to use.
-Ignored in rootless mode.
-.TP 8
-.B "\-depth \fIdepth\fP"
-Specifies the color bit depth to use. Currently only 8, 15, and 24 color bits
-per pixel are supported.
-Ignored in rootless mode.
-.TP 8
-.B "\-refresh \fIrate\fP"
-Gives the refresh rate to use in Hz. For LCD displays this should be 0.
-Ignored in rootless mode.
-.TP 8
-.B \-fullscreen
-Run full screen in parallel with Mac OS X Aqua GUI.
-.TP 8
-.B \-rootless
-Run rootless inside Mac OS X Aqua GUI.
-.TP 8
-.B \-quartz
-Run in parallel with the Mac OS X Aqua GUI using the default mode.
-#else
-.TP 8
-.B "\-size \fIwidth\fP \fIheight\fP"
-Sets the screen resolution for the X server to use.
-.TP 8
-.B "\-depth \fIdepth\fP"
-Specifies the color bit depth to use. Currently only 8, 15, and 24 color bits
-per pixel are supported.
-.TP 8
-.B "\-refresh \fIrate\fP"
-Gives the refresh rate to use in Hz. For LCD displays this should be 0.
-#endif
-.TP 8
-.B \-showconfig
-Print out the server version and patchlevel.
-.TP 8
-.B \-version
-Same as \fB\-showconfig\fP.
-.SH "SEE ALSO"
-.PP
-X(__miscmansuffix__), Xorg(1), Xserver(1), xdm(1), xinit(1)
-.SH BUGS
-.I XDarwin
-and this man page still have many limitations. Some of the more obvious
-ones are:
-.br
-- The display mode cannot be changed once the X server has started.
-.br
-- A screen saver is not supported.
-.PP
-.SH AUTHORS
-XFree86 was originally ported to Mac OS X Server by John Carmack. Dave
-Zarzycki used this as the basis of his port of XFree86 4.0 to Darwin 1.0.
-Torrey T. Lyons improved and integrated this code into the XFree86
-Project's mainline for the 4.0.2 release.
-.PP
-The following members of the XonX Team contributed to the following
-releases (in alphabetical order):
-.TP 4
-XFree86 4.1.0:
-.br
-Rob Braun - Darwin x86 support
-.br
-Torrey T. Lyons - Project Lead
-.br
-Andreas Monitzer - Cocoa version of XDarwin front end
-.br
-Gregory Robert Parker - Original Quartz implementation
-.br
-Christoph Pfisterer - Dynamic shared X libraries
-.br
-Toshimitsu Tanaka - Japanese localization
-.TP 4
-XFree86 4.2.0:
-.br
-Rob Braun - Darwin x86 support
-.br
-Pablo Di Noto - Spanish localization
-.br
-Paul Edens - Dutch localization
-.br
-Kyunghwan Kim - Korean localization
-.br
-Mario Klebsch - Non-US keyboard support
-.br
-Torrey T. Lyons - Project Lead
-.br
-Andreas Monitzer - German localization
-.br
-Patrik Montgomery - Swedish localization
-.br
-Greg Parker - Rootless support
-.br
-Toshimitsu Tanaka - Japanese localization
-.br
-Olivier Verdier - French localization
diff --git a/hw/darwin/Xquartz.man b/hw/darwin/Xquartz.man
new file mode 100644
index 0000000..edac30e
--- /dev/null
+++ b/hw/darwin/Xquartz.man
@@ -0,0 +1,158 @@
+.\" $XFree86: xc/programs/Xserver/hw/darwin/XDarwin.man,v 1.4 2002/01/09 18:01:58 torrey Exp $
+.\"
+.TH XQUARTZ 1 __vendorversion__
+.SH NAME
+Xquartz \- X window system server for Quartz operating system
+.SH SYNOPSIS
+.B Xquartz
+[ options ] ...
+.SH DESCRIPTION
+.I Xquartz
+is the X window server for Mac OS X provided by Apple.
+.I Xquartz
+runs in parallel with Aqua in rootless mode. In rootless mode, the X
+window system and Mac OS X share your display.  The root window of the
+X11 display is the size of the screen and contains all the other
+windows. The X11 root window is not displayed in rootless mode as Mac
+OS X handles the desktop background.
+.SH OPTIONS
+.PP
+In addition to the normal server options described in the \fIXserver(1)\fP
+manual page, \fIXquartz\fP accepts the following command line switches:
+.TP 8
+.B \-fakebuttons
+Emulates a 3 button mouse using modifier keys. By default, the Command modifier
+is used to emulate button 2 and Option is used for button 3. Thus, clicking the
+first mouse button while holding down Command will act like clicking
+button 2. Holding down Option will simulate button 3.
+.TP 8
+.B \-nofakebuttons
+Do not emulate a 3 button mouse. This is the default.
+.TP 8
+.B "\-fakemouse2 \fImodifiers\fP"
+Change the modifier keys used to emulate the second mouse button. By default,
+Command is used to emulate the second button. Any combination of the following
+modifier names may be used: Shift, Option, Control, Command, Fn. For example,
+.B \-fakemouse2 """Option,Shift""
+will set holding Option, Shift and clicking on button one as equivalent to
+clicking the second mouse button.
+.TP 8
+.B "\-fakemouse3 \fImodifiers\fP"
+Change the modifier keys used to emulate the third mouse button. By default,
+Option is used to emulate the third button. Any combination of the following
+modifier names may be used: Shift, Option, Control, Command, Fn. For example,
+.B \-fakemouse3 """Control,Shift""
+will set holding Control, Shift and clicking on button one as equivalent to
+clicking the third mouse button.
+.TP 8
+.B "\-swapAltMeta"
+Swaps the meaning of the Alt and Meta modifier keys.
+.TP 8
+.B "\-keymap \fIfile\fP"
+On startup \fIXquartz\fP translates a Darwin keymapping into an X keymap.
+The default is to read this keymapping from USA.keymapping. With this option
+the keymapping will be read from \fIfile\fP instead. If the file's path is
+not specified, it will be searched for in Library/Keyboards/ underneath the
+following directories (in order): ~, /, /Network, /System.
+.TP 8
+.B \-nokeymap
+On startup \fIXquartz\fP translates a Darwin keymapping into an X keymap.
+With this option \fIXquartz\fP queries the kernel for the current keymapping
+instead of reading it from a file. This will often fail on newer kernels.
+.TP 8
+.B "\-depth \fIdepth\fP"
+Specifies the color bit depth to use. Currently only 15, and 24 color
+bits per pixel are supported. If not specified, defaults to the depth
+of the main display.
+.SH CUSTOMIZATION
+\fIXquartz\fP can also be customized using the defaults(1) command. The available options are:
+.TP 8
+.B defaults write com.apple.x11 enable_fake_buttons -boolean true
+Equivalent to the \fB-fakebuttons\fP command line option.
+.TP 8
+.B defaults write com.apple.x11 fake_button2 \fImodifiers\fP
+Equivalent to the \fB-fakemouse2\fP option.
+.TP 8
+.B defaults write com.apple.x11 fake_button3 \fImodifiers\fP
+Equivalent to the \fB-fakemouse3\fP option.
+.TP 8
+.B defaults write com.apple.x11 swap_alt_meta -boolean true
+Equivalent to the \fB-swapAltMeta\fP option.
+.TP 8
+.B defaults write com.apple.x11 keymap_file \fIfilename\fP
+Equivalent to the \fB-keymap\fP option.
+.TP 8
+.B defaults write com.apple.x11 no_quit_alert -boolean true
+Disables the alert dialog displayed when attempting to quit X11.
+.TP 8
+.B defaults write com.apple.x11 no_auth -boolean true
+Stops the X server requiring that clients authenticate themselves when
+connecting. See Xsecurity(__miscmansuffix__).
+.TP 8
+.B defaults write com.apple.x11 nolisten_tcp -boolean true
+Prevents the X server accepting remote connections.
+.TP 8
+.B defaults write com.apple.x11 xinit_kills_server -boolean false
+Stops the X server exiting when the xinitrc script terminates.
+.TP 8
+.B defaults write com.apple.x11 fullscreen_hotkeys -boolean false
+Allows system hotkeys to be handled while in X11 fullscreen mode.
+.TP 8
+.B defaults write com.apple.x11 enable_system_beep -boolean false
+Don't use the standard system beep effect for X11 alerts.
+.TP 8
+.B defaults write com.apple.x11 enable_key_equivalents -boolean false
+Disable menu keyboard equivalents while X11 windows are focused.
+.TP 8
+.B defaults write com.apple.x11 depth \fIdepth\fP
+Equivalent to the \fB-depth\fP option.
+.SH "SEE ALSO"
+.PP
+X(__miscmansuffix__), XFree86(1), Xserver(1), xdm(1), xinit(1)
+.PP
+.SH AUTHORS
+XFree86 was originally ported to Mac OS X Server by John Carmack. Dave
+Zarzycki used this as the basis of his port of XFree86 4.0 to Darwin 1.0.
+Torrey T. Lyons improved and integrated this code into the XFree86
+Project's mainline for the 4.0.2 release.
+.PP
+The following members of the XonX Team contributed to the following
+releases (in alphabetical order):
+.TP 4
+XFree86 4.1.0:
+.br
+Rob Braun - Darwin x86 support
+.br
+Torrey T. Lyons - Project Lead
+.br
+Andreas Monitzer - Cocoa version of XDarwin front end
+.br
+Gregory Robert Parker - Original Quartz implementation
+.br
+Christoph Pfisterer - Dynamic shared X libraries
+.br
+Toshimitsu Tanaka - Japanese localization
+.TP 4
+XFree86 4.2.0:
+.br
+Rob Braun - Darwin x86 support
+.br
+Pablo Di Noto - Spanish localization
+.br
+Paul Edens - Dutch localization
+.br
+Kyunghwan Kim - Korean localization
+.br
+Mario Klebsch - Non-US keyboard support
+.br
+Torrey T. Lyons - Project Lead
+.br
+Andreas Monitzer - German localization
+.br
+Patrik Montgomery - Swedish localization
+.br
+Greg Parker - Rootless support
+.br
+Toshimitsu Tanaka - Japanese localization
+.br
+Olivier Verdier - French localization
diff --git a/hw/darwin/apple/X11.xcodeproj/project.pbxproj b/hw/darwin/apple/X11.xcodeproj/project.pbxproj
index 2fef99b..27cab8d 100644
--- a/hw/darwin/apple/X11.xcodeproj/project.pbxproj
+++ b/hw/darwin/apple/X11.xcodeproj/project.pbxproj
@@ -195,41 +195,40 @@
 		527F24090B5D8FFC007840A7 /* Development */ = {
 			isa = XCBuildConfiguration;
 			buildSettings = {
-				DSTROOT = "$(DSTROOT)";
-				SKIP_INSTALL = YES;
+				INSTALL_MODE_FLAG = "a+rX";
 			};
 			name = Development;
 		};
 		527F240A0B5D8FFC007840A7 /* Deployment */ = {
 			isa = XCBuildConfiguration;
 			buildSettings = {
-				DSTROOT = "$(DSTROOT)";
-				SKIP_INSTALL = YES;
+				INSTALL_MODE_FLAG = "a+rX";
 			};
 			name = Deployment;
 		};
 		527F240B0B5D8FFC007840A7 /* Default */ = {
 			isa = XCBuildConfiguration;
 			buildSettings = {
-				DSTROOT = "$(DSTROOT)";
-				SKIP_INSTALL = YES;
+				INSTALL_MODE_FLAG = "a+rX";
 			};
 			name = Default;
 		};
 		527F24230B5D938C007840A7 /* Development */ = {
 			isa = XCBuildConfiguration;
 			buildSettings = {
-				ARCHS = "$(NATIVE_ARCH_32_BIT)";
 				COPY_PHASE_STRIP = NO;
-				DSTROOT = "$(DSTROOT)";
 				FRAMEWORK_SEARCH_PATHS = "";
 				GCC_SYMBOLS_PRIVATE_EXTERN = NO;
 				HEADER_SEARCH_PATHS = "";
 				INFOPLIST_FILE = Info.plist;
-				INSTALL_PATH = $DSTROOT/Applications/Utilties;
-				LIBRARY_SEARCH_PATHS = "";
-				OTHER_CFLAGS = "$(CFLAGS)";
-				OTHER_LDFLAGS = "$(LDFLAGS)";
+				INSTALL_PATH = /usr/X11;
+				LIBRARY_SEARCH_PATHS = /usr/X11/lib;
+				OTHER_CFLAGS = "";
+				OTHER_LDFLAGS = (
+					"-lXau",
+					"-lxcb",
+					"-lX11",
+				);
 				OTHER_REZFLAGS = "";
 				PRODUCT_NAME = X11;
 				SECTORDER_FLAGS = "";
@@ -246,15 +245,18 @@
 			isa = XCBuildConfiguration;
 			buildSettings = {
 				COPY_PHASE_STRIP = YES;
-				DSTROOT = "$(DSTROOT)";
 				FRAMEWORK_SEARCH_PATHS = "";
 				GCC_SYMBOLS_PRIVATE_EXTERN = NO;
 				HEADER_SEARCH_PATHS = "";
 				INFOPLIST_FILE = Info.plist;
-				INSTALL_PATH = $DSTROOT/Applications/Utilties;
-				LIBRARY_SEARCH_PATHS = "";
-				OTHER_CFLAGS = "$(CFLAGS)";
-				OTHER_LDFLAGS = "$(LDFLAGS)";
+				INSTALL_PATH = /usr/X11;
+				LIBRARY_SEARCH_PATHS = /usr/X11/lib;
+				OTHER_CFLAGS = "";
+				OTHER_LDFLAGS = (
+					"-lXau",
+					"-lxcb",
+					"-lX11",
+				);
 				OTHER_REZFLAGS = "";
 				PRODUCT_NAME = X11;
 				SECTORDER_FLAGS = "";
@@ -270,15 +272,18 @@
 		527F24250B5D938C007840A7 /* Default */ = {
 			isa = XCBuildConfiguration;
 			buildSettings = {
-				DSTROOT = "$(DSTROOT)";
 				FRAMEWORK_SEARCH_PATHS = "";
 				GCC_SYMBOLS_PRIVATE_EXTERN = NO;
 				HEADER_SEARCH_PATHS = "";
 				INFOPLIST_FILE = Info.plist;
-				INSTALL_PATH = $DSTROOT/Applications/Utilties;
-				LIBRARY_SEARCH_PATHS = "";
-				OTHER_CFLAGS = "$(CFLAGS)";
-				OTHER_LDFLAGS = "$(LDFLAGS)";
+				INSTALL_PATH = /usr/X11;
+				LIBRARY_SEARCH_PATHS = /usr/X11/lib;
+				OTHER_CFLAGS = "";
+				OTHER_LDFLAGS = (
+					"-lXau",
+					"-lxcb",
+					"-lX11",
+				);
 				OTHER_REZFLAGS = "";
 				PRODUCT_NAME = X11;
 				SECTORDER_FLAGS = "";
diff --git a/hw/darwin/apple/X11Application.h b/hw/darwin/apple/X11Application.h
deleted file mode 100644
index 8615657..0000000
--- a/hw/darwin/apple/X11Application.h
+++ /dev/null
@@ -1,103 +0,0 @@
-/* X11Application.h -- subclass of NSApplication to multiplex events
-
-   Copyright (c) 2002-2007 Apple Inc. All rights reserved.
-
-   Permission is hereby granted, free of charge, to any person
-   obtaining a copy of this software and associated documentation files
-   (the "Software"), to deal in the Software without restriction,
-   including without limitation the rights to use, copy, modify, merge,
-   publish, distribute, sublicense, and/or sell copies of the Software,
-   and to permit persons to whom the Software is furnished to do so,
-   subject to the following conditions:
-
-   The above copyright notice and this permission notice shall be
-   included in all copies or substantial portions of the Software.
-
-   THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-   EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-   MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-   NONINFRINGEMENT.  IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT
-   HOLDER(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-   WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-   OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-   DEALINGS IN THE SOFTWARE.
-
-   Except as contained in this notice, the name(s) of the above
-   copyright holders shall not be used in advertising or otherwise to
-   promote the sale, use or other dealings in this Software without
-   prior written authorization. */
-
-#ifndef X11APPLICATION_H
-#define X11APPLICATION_H 1
-
-#if __OBJC__
-
-#import <Cocoa/Cocoa.h>
-#import "X11Controller.h"
-
- at interface X11Application : NSApplication {
-    X11Controller *_controller;
-
-    unsigned int _x_active :1;
-}
-
-- (void) set_controller:controller;
-- (void) set_window_menu:(NSArray *)list;
-
-- (int) prefs_get_integer:(NSString *)key default:(int)def;
-- (const char *) prefs_get_string:(NSString *)key default:(const char *)def;
-- (float) prefs_get_float:(NSString *)key default:(float)def;
-- (int) prefs_get_boolean:(NSString *)key default:(int)def;
-- (NSArray *) prefs_get_array:(NSString *)key;
-- (void) prefs_set_integer:(NSString *)key value:(int)value;
-- (void) prefs_set_float:(NSString *)key value:(float)value;
-- (void) prefs_set_boolean:(NSString *)key value:(int)value;
-- (void) prefs_set_array:(NSString *)key value:(NSArray *)value;
-- (void) prefs_set_string:(NSString *)key value:(NSString *)value;
-- (void) prefs_synchronize;
-
-- (BOOL) x_active;
-
- at end
-
-extern X11Application *X11App;
-
-#endif /* __OBJC__ */
-
-extern void X11ApplicationSetWindowMenu (int nitems, const char **items,
-					 const char *shortcuts);
-extern void X11ApplicationSetWindowMenuCheck (int idx);
-extern void X11ApplicationSetFrontProcess (void);
-extern void X11ApplicationSetCanQuit (int state);
-extern void X11ApplicationServerReady (void);
-extern void X11ApplicationShowHideMenubar (int state);
-
-extern void X11ApplicationMain (int argc, const char *argv[],
-				void (*server_thread) (void *),
-				void *server_arg);
-
-extern int X11EnableKeyEquivalents;
-extern int quartzHasRoot, quartzEnableRootless;
-
-#define APP_PREFS "org.x.X11"
-
-#define PREFS_APPSMENU		"apps_menu"
-#define PREFS_FAKEBUTTONS	"enable_fake_buttons"
-#define PREFS_SYSBEEP		"enable_system_beep"
-#define PREFS_KEYEQUIVS		"enable_key_equivalents"
-#define PREFS_KEYMAP_FILE	"keymap_file"
-#define PREFS_SYNC_KEYMAP	"sync_keymap"
-#define PREFS_DEPTH		"depth"
-#define PREFS_NO_AUTH		"no_auth"
-#define PREFS_NO_TCP		"nolisten_tcp"
-#define PREFS_DONE_XINIT_CHECK	"done_xinit_check"
-#define PREFS_NO_QUIT_ALERT	"no_quit_alert"
-#define PREFS_FAKE_BUTTON2	"fake_button2"
-#define PREFS_FAKE_BUTTON3	"fake_button3"
-#define PREFS_ROOTLESS		"rootless"
-#define PREFS_FULLSCREEN_HOTKEYS "fullscreen_hotkeys"
-#define PREFS_SWAP_ALT_META	"swap_alt_meta"
-#define PREFS_XP_OPTIONS	"xp_options"
-#define PREFS_ENABLE_STEREO	"enable_stereo"
-
-#endif /* X11APPLICATION_H */
diff --git a/hw/darwin/apple/X11Application.m b/hw/darwin/apple/X11Application.m
deleted file mode 100644
index 461ca39..0000000
--- a/hw/darwin/apple/X11Application.m
+++ /dev/null
@@ -1,915 +0,0 @@
-/* X11Application.m -- subclass of NSApplication to multiplex events
- 
- Copyright (c) 2002-2007 Apple Inc.
- 
- Permission is hereby granted, free of charge, to any person
- obtaining a copy of this software and associated documentation files
- (the "Software"), to deal in the Software without restriction,
- including without limitation the rights to use, copy, modify, merge,
- publish, distribute, sublicense, and/or sell copies of the Software,
- and to permit persons to whom the Software is furnished to do so,
- subject to the following conditions:
- 
- The above copyright notice and this permission notice shall be
- included in all copies or substantial portions of the Software.
- 
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- NONINFRINGEMENT.  IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT
- HOLDER(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
- WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
- DEALINGS IN THE SOFTWARE.
- 
- Except as contained in this notice, the name(s) of the above
- copyright holders shall not be used in advertising or otherwise to
- promote the sale, use or other dealings in this Software without
- prior written authorization. */
-
-#include "../quartz/quartzCommon.h"
-
-#import "X11Application.h"
-#include <Carbon/Carbon.h>
-
-/* ouch! */
-#define BOOL X_BOOL
-# include "darwin.h"
-# include "../quartz/quartz.h"
-# define _APPLEWM_SERVER_
-# include "X11/extensions/applewm.h"
-# include "micmap.h"
-#undef BOOL
-
-#include <mach/mach.h>
-#include <unistd.h>
-#include <pthread.h>
-
-#define DEFAULTS_FILE "/usr/X11/lib/X11/xserver/Xquartz.plist"
-
-int X11EnableKeyEquivalents = TRUE;
-int quartzHasRoot = FALSE, quartzEnableRootless = TRUE;
-
-extern int darwinFakeButtons, input_check_flag;
-// extern Bool enable_stereo; 
-Bool enable_stereo;  //<-- this needs to go back to being an extern once glxCGL is fixed
-
-extern xEvent *darwinEvents;
-
-X11Application *X11App;
-
-#define ALL_KEY_MASKS (NSShiftKeyMask | NSControlKeyMask | NSAlternateKeyMask | NSCommandKeyMask)
-
- at implementation X11Application
-
-typedef struct message_struct message;
-struct message_struct {
-    mach_msg_header_t hdr;
-    SEL selector;
-    NSObject *arg;
-};
-
-static mach_port_t _port;
-
-static void send_nsevent (NSEventType type, NSEvent *e);
-
-/* Quartz mode initialization routine. This is often dynamically loaded
- but is statically linked into this X server. */
-extern Bool QuartzModeBundleInit(void);
-
-static void init_ports (void) {
-    kern_return_t r;
-    NSPort *p;
-	
-    if (_port != MACH_PORT_NULL) return;
-	
-    r = mach_port_allocate (mach_task_self (), MACH_PORT_RIGHT_RECEIVE, &_port);
-    if (r != KERN_SUCCESS) return;
-	
-    p = [NSMachPort portWithMachPort:_port];
-    [p setDelegate:NSApp];
-    [p scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode];
-}
-
-static void message_kit_thread (SEL selector, NSObject *arg) {
-    message msg;
-    kern_return_t r;
-	
-    msg.hdr.msgh_bits = MACH_MSGH_BITS (MACH_MSG_TYPE_MAKE_SEND, 0);
-    msg.hdr.msgh_size = sizeof (msg);
-    msg.hdr.msgh_remote_port = _port;
-    msg.hdr.msgh_local_port = MACH_PORT_NULL;
-    msg.hdr.msgh_reserved = 0;
-    msg.hdr.msgh_id = 0;
-	
-    msg.selector = selector;
-    msg.arg = [arg retain];
-	
-    r = mach_msg (&msg.hdr, MACH_SEND_MSG, msg.hdr.msgh_size,
-		  0, MACH_PORT_NULL, 0, MACH_PORT_NULL);
-    if (r != KERN_SUCCESS)
-		ErrorF("%s: mach_msg failed: %x\n", __FUNCTION__, r);
-}
-
-- (void) handleMachMessage:(void *)_msg {
-    message *msg = _msg;
-	
-    [self performSelector:msg->selector withObject:msg->arg];
-    [msg->arg release];
-}
-
-- (void) set_controller:obj {
-    if (_controller == nil) _controller = [obj retain];
-}
-
-- (void) dealloc {
-    if (_controller != nil) [_controller release];
-	
-    if (_port != MACH_PORT_NULL)
-		mach_port_deallocate (mach_task_self (), _port);
-	
-    [super dealloc];
-}
-
-- (void) orderFrontStandardAboutPanel: (id) sender {
-    NSMutableDictionary *dict;
-    NSDictionary *infoDict;
-    NSString *tem;
-	
-    dict = [NSMutableDictionary dictionaryWithCapacity:2];
-    infoDict = [[NSBundle mainBundle] infoDictionary];
-	
-    [dict setObject: NSLocalizedString (@"The X Window System", @"About panel")
-			 forKey:@"ApplicationName"];
-	
-    tem = [infoDict objectForKey:@"CFBundleShortVersionString"];
-	
-    [dict setObject:[NSString stringWithFormat:@"X11.app %@ - X.org X11R7.3", tem] 
-	  forKey:@"ApplicationVersion"];
-	
-    [self orderFrontStandardAboutPanelWithOptions: dict];
-}
-
-- (void) activateX:(BOOL)state {
-    /* Create a TSM document that supports full Unicode input, and
-	 have it activated while X is active (unless using the old
-	 keymapping files) */
-    static TSMDocumentID x11_document;
-	
-    if (state) {
-      QuartzMessageServerThread (kXDarwinActivate, 0);
-      
-      if (!_x_active) {
-	if (x11_document == 0 && darwinKeymapFile == NULL) {
-	  OSType types[1];
-	  types[0] = kUnicodeDocument;
-	  NewTSMDocument (1, types, &x11_document, 0);
-	}
-	
-	if (x11_document != 0)	ActivateTSMDocument (x11_document);
-      }
-    } else {
-      QuartzMessageServerThread (kXDarwinDeactivate, 0);
-      
-      if (_x_active && x11_document != 0)
-	DeactivateTSMDocument (x11_document);
-    }
-    
-    _x_active = state;
-}
-
-- (void) became_key:(NSWindow *)win {
-    [self activateX:NO];
-}
-
-- (void) sendEvent:(NSEvent *)e {
-  NSEventType type;
-  BOOL for_appkit, for_x;
-  
-  type = [e type];
-  
-  /* By default pass down the responder chain and to X. */
-  for_appkit = YES;
-  for_x = YES;
-  
-  switch (type) {
-  case NSLeftMouseDown: case NSRightMouseDown: case NSOtherMouseDown:
-  case NSLeftMouseUp: case NSRightMouseUp: case NSOtherMouseUp:
-    if ([e window] != nil) {
-      /* Pointer event has an (AppKit) window. Probably something for the kit. */
-      for_x = NO;
-      if (_x_active) [self activateX:NO];
-    } else if ([self modalWindow] == nil) {
-      /* Must be an X window. Tell appkit it doesn't have focus. */
-      WindowPtr pWin = xprGetXWindowFromAppKit([e windowNumber]);
-      if (pWin) RootlessReorderWindow(pWin);
-      for_appkit = NO;
-      
-      if ([self isActive]) {
-	[self deactivate];
-	
-	if (!_x_active && quartzProcs->IsX11Window([e window],
-						   [e windowNumber]))
-	  [self activateX:YES];
-      }
-    }
-    break;
-      
-  case NSKeyDown: case NSKeyUp:
-    if (_x_active) {
-      static int swallow_up;
-      
-      /* No kit window is focused, so send it to X. */
-      for_appkit = NO;
-      if (type == NSKeyDown) {
-	/* Before that though, see if there are any global
-	   shortcuts bound to it. */
-	
-	if (X11EnableKeyEquivalents
-	    && [[self mainMenu] performKeyEquivalent:e]) {
-	  swallow_up = [e keyCode];
-	  for_x = NO;
-	} else if (!quartzEnableRootless
-		   && ([e modifierFlags] & ALL_KEY_MASKS)
-		   == (NSCommandKeyMask | NSAlternateKeyMask)
-		   && ([e keyCode] == 0 /*a*/
-		    || [e keyCode] == 53 /*Esc*/)) {
-	  swallow_up = 0;
-	  for_x = NO;
-#ifdef DARWIN_DDX_MISSING
-	  QuartzMessageServerThread (kXDarwinToggleFullscreen, 0);
-#endif
-	}
-      } else {
-	/* If we saw a key equivalent on the down, don't pass
-	   the up through to X. */
-	
-	if (swallow_up != 0 && [e keyCode] == swallow_up) {
-	  swallow_up = 0;
-	  for_x = NO;
-	}
-      }
-    } else for_x = NO;
-    break;
-    
-  case NSFlagsChanged:
-    /* For the l33t X users who remap modifier keys to normal keysyms. */
-    if (!_x_active) for_x = NO;
-    break;
-    
-  case NSAppKitDefined:
-    switch ([e subtype]) {
-    case NSApplicationActivatedEventType:
-      for_x = NO;
-      if ([self modalWindow] == nil) {
-	for_appkit = NO;
-	
-	/* FIXME: hack to avoid having to pass the event to appkit,
-	   which would cause it to raise one of its windows. */
-	_appFlags._active = YES;
-	
-	[self activateX:YES];
-	if ([e data2] & 0x10) X11ApplicationSetFrontProcess();
-      }
-      break;
-      
-    case 18: /* ApplicationDidReactivate */
-      if (quartzHasRoot) for_appkit = NO;
-      break;
-      
-    case NSApplicationDeactivatedEventType:
-      for_x = NO;
-      [self activateX:NO];
-      break;
-    }
-    break;
-    
-  default: break; /* for gcc */
-  }
-  
-  if (for_appkit) [super sendEvent:e];
-  
-  if (for_x) send_nsevent (type, e);
-}
-
-- (void) set_window_menu:(NSArray *)list {
-    [_controller set_window_menu:list];
-}
-
-- (void) set_window_menu_check:(NSNumber *)n {
-    [_controller set_window_menu_check:n];
-}
-
-- (void) set_apps_menu:(NSArray *)list {
-    [_controller set_apps_menu:list];
-}
-
-- (void) set_front_process:unused {
-    [NSApp activateIgnoringOtherApps:YES];
-	
-    if ([self modalWindow] == nil) [self activateX:YES];
-    QuartzMessageServerThread(kXDarwinBringAllToFront, 0);
-}
-
-- (void) set_can_quit:(NSNumber *)state {
-    [_controller set_can_quit:[state boolValue]];
-}
-
-- (void) server_ready:unused {
-    [_controller server_ready];
-}
-
-- (void) show_hide_menubar:(NSNumber *)state {
-    if ([state boolValue]) ShowMenuBar ();
-    else HideMenuBar ();
-}
-
-
-/* user preferences */
-
-/* Note that these functions only work for arrays whose elements
- can be toll-free-bridged between NS and CF worlds. */
-
-static const void *cfretain (CFAllocatorRef a, const void *b) {
-    return CFRetain (b);
-}
-
-static void cfrelease (CFAllocatorRef a, const void *b) {
-    CFRelease (b);
-}
-
-static CFMutableArrayRef nsarray_to_cfarray (NSArray *in) {
-    CFMutableArrayRef out;
-    CFArrayCallBacks cb;
-    NSObject *ns;
-    const CFTypeRef *cf;
-    int i, count;
-	
-    memset (&cb, 0, sizeof (cb));
-    cb.version = 0;
-    cb.retain = cfretain;
-    cb.release = cfrelease;
-	
-    count = [in count];
-    out = CFArrayCreateMutable (NULL, count, &cb);
-	
-    for (i = 0; i < count; i++) {
-      ns = [in objectAtIndex:i];
-      
-      if ([ns isKindOfClass:[NSArray class]])
-	cf = (CFTypeRef) nsarray_to_cfarray ((NSArray *) ns);
-      else
-	cf = CFRetain ((CFTypeRef) ns);
-      
-      CFArrayAppendValue (out, cf);
-      CFRelease (cf);
-    }
-    
-    return out;
-}
-
-static NSMutableArray * cfarray_to_nsarray (CFArrayRef in) {
-    NSMutableArray *out;
-    const CFTypeRef *cf;
-    NSObject *ns;
-    int i, count;
-	
-    count = CFArrayGetCount (in);
-    out = [[NSMutableArray alloc] initWithCapacity:count];
-	
-    for (i = 0; i < count; i++) {
-      cf = CFArrayGetValueAtIndex (in, i);
-		
-      if (CFGetTypeID (cf) == CFArrayGetTypeID ())
-	ns = cfarray_to_nsarray ((CFArrayRef) cf);
-      else
-	ns = [(id)cf retain];
-      
-      [out addObject:ns];
-      [ns release];
-    }
-    
-    return out;
-}
-
-- (CFPropertyListRef) prefs_get:(NSString *)key {
-    CFPropertyListRef value;
-	
-    value = CFPreferencesCopyAppValue ((CFStringRef) key, CFSTR (APP_PREFS));
-	
-    if (value == NULL) {
-      static CFDictionaryRef defaults;
-      
-      if (defaults == NULL) {
-	CFStringRef error = NULL;
-	CFDataRef data;
-	CFURLRef url;
-	SInt32 error_code;
-	
-	url = (CFURLCreateFromFileSystemRepresentation
-	       (NULL, (unsigned char *)DEFAULTS_FILE, strlen (DEFAULTS_FILE), false));
-	if (CFURLCreateDataAndPropertiesFromResource (NULL, url, &data,
-						      NULL, NULL, &error_code)) {
-	  defaults = (CFPropertyListCreateFromXMLData
-		      (NULL, data, kCFPropertyListMutableContainersAndLeaves, &error));
-	  if (error != NULL) CFRelease (error);
-	  CFRelease (data);
-	}
-	CFRelease (url);
-			
-	if (defaults != NULL) {
-	  NSMutableArray *apps, *elt;
-	  int count, i;
-	  NSString *name, *nname;
-	  
-	  /* Localize the names in the default apps menu. */
-	  
-	  apps = [(NSDictionary *)defaults objectForKey:@PREFS_APPSMENU];
-	  if (apps != nil) {
-	    count = [apps count];
-	    for (i = 0; i < count; i++)	{
-	      elt = [apps objectAtIndex:i];
-	      if (elt != nil && [elt isKindOfClass:[NSArray class]]) {
-		name = [elt objectAtIndex:0];
-		if (name != nil) {
-		  nname = NSLocalizedString (name, nil);
-		  if (nname != nil && nname != name)
-		    [elt replaceObjectAtIndex:0 withObject:nname];
-		}
-	      }
-	    }
-	  }
-	}
-      }
-		
-      if (defaults != NULL) value = CFDictionaryGetValue (defaults, key);
-      if (value != NULL) CFRetain (value);
-    }
-	
-    return value;
-}
-
-- (int) prefs_get_integer:(NSString *)key default:(int)def {
-  CFPropertyListRef value;
-  int ret;
-  
-  value = [self prefs_get:key];
-  
-  if (value != NULL && CFGetTypeID (value) == CFNumberGetTypeID ())
-    CFNumberGetValue (value, kCFNumberIntType, &ret);
-  else if (value != NULL && CFGetTypeID (value) == CFStringGetTypeID ())
-    ret = CFStringGetIntValue (value);
-  else
-    ret = def;
-  
-  if (value != NULL) CFRelease (value);
-  
-  return ret;
-}
-
-- (const char *) prefs_get_string:(NSString *)key default:(const char *)def {
-  CFPropertyListRef value;
-  const char *ret = NULL;
-  
-  value = [self prefs_get:key];
-  
-  if (value != NULL && CFGetTypeID (value) == CFStringGetTypeID ()) {
-    NSString *s = (NSString *) value;
-    
-    ret = [s UTF8String];
-  }
-  
-  if (value != NULL) CFRelease (value);
-  
-  return ret != NULL ? ret : def;
-}
-
-- (float) prefs_get_float:(NSString *)key default:(float)def {
-  CFPropertyListRef value;
-  float ret = def;
-  
-  value = [self prefs_get:key];
-  
-  if (value != NULL
-      && CFGetTypeID (value) == CFNumberGetTypeID ()
-      && CFNumberIsFloatType (value)) 
-    CFNumberGetValue (value, kCFNumberFloatType, &ret);
-  else if (value != NULL && CFGetTypeID (value) == CFStringGetTypeID ())
-    ret = CFStringGetDoubleValue (value);
-	
-  if (value != NULL) CFRelease (value);
-  
-  return ret;
-}
-
-- (int) prefs_get_boolean:(NSString *)key default:(int)def {
-  CFPropertyListRef value;
-  int ret = def;
-  
-  value = [self prefs_get:key];
-  
-  if (value != NULL) {
-    if (CFGetTypeID (value) == CFNumberGetTypeID ())
-      CFNumberGetValue (value, kCFNumberIntType, &ret);
-    else if (CFGetTypeID (value) == CFBooleanGetTypeID ())
-      ret = CFBooleanGetValue (value);
-    else if (CFGetTypeID (value) == CFStringGetTypeID ()) {
-      const char *tem = [(NSString *) value lossyCString];
-      if (strcasecmp (tem, "true") == 0 || strcasecmp (tem, "yes") == 0)
-	ret = YES;
-      else
-	ret = NO;
-    }
-    
-    CFRelease (value);
-  }
-  return ret;
-}
-
-- (NSArray *) prefs_get_array:(NSString *)key {
-  NSArray *ret = nil;
-  CFPropertyListRef value;
-  
-  value = [self prefs_get:key];
-  
-  if (value != NULL) {
-    if (CFGetTypeID (value) == CFArrayGetTypeID ())
-      ret = [cfarray_to_nsarray (value) autorelease];
-    
-    CFRelease (value);
-  }
-  
-  return ret;
-}
-
-- (void) prefs_set_integer:(NSString *)key value:(int)value {
-    CFNumberRef x;
-	
-    x = CFNumberCreate (NULL, kCFNumberIntType, &value);
-	
-    CFPreferencesSetValue ((CFStringRef) key, (CFTypeRef) x, CFSTR (APP_PREFS),
-			   kCFPreferencesCurrentUser, kCFPreferencesAnyHost);
-	
-    CFRelease (x);
-}
-
-- (void) prefs_set_float:(NSString *)key value:(float)value {
-    CFNumberRef x;
-	
-    x = CFNumberCreate (NULL, kCFNumberFloatType, &value);
-	
-    CFPreferencesSetValue ((CFStringRef) key, (CFTypeRef) x, CFSTR (APP_PREFS),
-			   kCFPreferencesCurrentUser, kCFPreferencesAnyHost);
-	
-    CFRelease (x);
-}
-
-- (void) prefs_set_boolean:(NSString *)key value:(int)value {
-  CFPreferencesSetValue ((CFStringRef) key,
-			 (CFTypeRef) value ? kCFBooleanTrue
-			 : kCFBooleanFalse, CFSTR (APP_PREFS),
-			 kCFPreferencesCurrentUser, kCFPreferencesAnyHost);
-  
-}
-
-- (void) prefs_set_array:(NSString *)key value:(NSArray *)value {
-  CFArrayRef cfarray;
-  
-  cfarray = nsarray_to_cfarray (value);
-  CFPreferencesSetValue ((CFStringRef) key,
-			 (CFTypeRef) cfarray,
-			 CFSTR (APP_PREFS),
-			 kCFPreferencesCurrentUser, kCFPreferencesAnyHost);
-  CFRelease (cfarray);
-}
-
-- (void) prefs_set_string:(NSString *)key value:(NSString *)value {
-  CFPreferencesSetValue ((CFStringRef) key, (CFTypeRef) value,
-			 CFSTR (APP_PREFS), kCFPreferencesCurrentUser,
-			 kCFPreferencesAnyHost);
-}
-
-- (void) prefs_synchronize {
-    CFPreferencesAppSynchronize (kCFPreferencesCurrentApplication);
-}
-
-- (void) read_defaults
-{
-    const char *tem;
-	
-    quartzUseSysBeep = [self prefs_get_boolean:@PREFS_SYSBEEP
-                        default:quartzUseSysBeep];
-    quartzEnableRootless = [self prefs_get_boolean:@PREFS_ROOTLESS
-                        default:quartzEnableRootless];
-#ifdef DARWIN_DDX_MISSING
-    quartzFullscreenDisableHotkeys = ![self prefs_get_boolean:
-					      @PREFS_FULLSCREEN_HOTKEYS default:
-					      !quartzFullscreenDisableHotkeys];
-    quartzXpluginOptions = [self prefs_get_integer:@PREFS_XP_OPTIONS
-                            default:quartzXpluginOptions];
-#endif
-	
-    darwinSwapAltMeta = [self prefs_get_boolean:@PREFS_SWAP_ALT_META
-                         default:darwinSwapAltMeta];
-    darwinFakeButtons = [self prefs_get_boolean:@PREFS_FAKEBUTTONS
-                         default:darwinFakeButtons];
-    if (darwinFakeButtons) {
-      const char *fake2, *fake3;
-      
-      fake2 = [self prefs_get_string:@PREFS_FAKE_BUTTON2 default:NULL];
-      fake3 = [self prefs_get_string:@PREFS_FAKE_BUTTON3 default:NULL];
-      
-      if (fake2 != NULL) darwinFakeMouse2Mask = DarwinParseModifierList(fake2);
-      if (fake3 != NULL) darwinFakeMouse3Mask = DarwinParseModifierList(fake3);
-    }
-	
-    X11EnableKeyEquivalents = [self prefs_get_boolean:@PREFS_KEYEQUIVS
-                               default:X11EnableKeyEquivalents];
-	
-    darwinSyncKeymap = [self prefs_get_boolean:@PREFS_SYNC_KEYMAP
-                        default:darwinSyncKeymap];
-	
-    tem = [self prefs_get_string:@PREFS_KEYMAP_FILE default:NULL];
-    if (tem != NULL) darwinKeymapFile = strdup (tem);
-    else             darwinKeymapFile = NULL;
-	
-    darwinDesiredDepth = [self prefs_get_integer:@PREFS_DEPTH
-                          default:darwinDesiredDepth];
-	
-    enable_stereo = [self prefs_get_boolean:@PREFS_ENABLE_STEREO
-                     default:false];
-}
-
-/* This will end up at the end of the responder chain. */
-- (void) copy:sender {
-  QuartzMessageServerThread (kXDarwinPasteboardNotify, 1,
-			     AppleWMCopyToPasteboard);
-}
-
-- (BOOL) x_active {
-    return _x_active;
-}
-
- at end
-
-static NSArray *
-array_with_strings_and_numbers (int nitems, const char **items,
-				const char *numbers) {
-  NSMutableArray *array, *subarray;
-  NSString *string, *number;
-  int i;
-	
-  /* (Can't autorelease on the X server thread) */
-  
-  array = [[NSMutableArray alloc] initWithCapacity:nitems];
-  
-  for (i = 0; i < nitems; i++) {
-    subarray = [[NSMutableArray alloc] initWithCapacity:2];
-    
-    string = [[NSString alloc] initWithUTF8String:items[i]];
-    [subarray addObject:string];
-    [string release];
-    
-    if (numbers[i] != 0) {
-      number = [[NSString alloc] initWithFormat:@"%d", numbers[i]];
-      [subarray addObject:number];
-      [number release];
-    } else
-      [subarray addObject:@""];
-    
-    [array addObject:subarray];
-    [subarray release];
-  }
-  
-  return array;
-}
-
-void X11ApplicationSetWindowMenu (int nitems, const char **items,
-				  const char *shortcuts) {
-  NSArray *array;
-  array = array_with_strings_and_numbers (nitems, items, shortcuts);
-  
-  /* Send the array of strings over to the appkit thread */
-  
-  message_kit_thread (@selector (set_window_menu:), array);
-  [array release];
-}
-
-void X11ApplicationSetWindowMenuCheck (int idx) {
-  NSNumber *n;
-  
-  n = [[NSNumber alloc] initWithInt:idx];
-  
-  message_kit_thread (@selector (set_window_menu_check:), n);
-  
-  [n release];
-}
-
-void X11ApplicationSetFrontProcess (void) {
-    message_kit_thread (@selector (set_front_process:), nil);
-}
-
-void X11ApplicationSetCanQuit (int state) {
-    NSNumber *n;
-	
-    n = [[NSNumber alloc] initWithBool:state];
-	
-    message_kit_thread (@selector (set_can_quit:), n);
-	
-    [n release];
-}
-
-void X11ApplicationServerReady (void) {
-    message_kit_thread (@selector (server_ready:), nil);
-}
-
-void X11ApplicationShowHideMenubar (int state) {
-    NSNumber *n;
-	
-    n = [[NSNumber alloc] initWithBool:state];
-	
-    message_kit_thread (@selector (show_hide_menubar:), n);
-	
-    [n release];
-}
-
-static void * create_thread (void *func, void *arg) {
-    pthread_attr_t attr;
-    pthread_t tid;
-	
-    pthread_attr_init (&attr);
-    pthread_attr_setscope (&attr, PTHREAD_SCOPE_SYSTEM);
-    pthread_attr_setdetachstate (&attr, PTHREAD_CREATE_DETACHED);
-    pthread_create (&tid, &attr, func, arg);
-    pthread_attr_destroy (&attr);
-	
-    return (void *) tid;
-}
-
-static void check_xinitrc (void) {
-    char *tem, buf[1024];
-    NSString *msg;
-	
-    if ([X11App prefs_get_boolean:@PREFS_DONE_XINIT_CHECK default:NO])
-		return;
-	
-    tem = getenv ("HOME");
-    if (tem == NULL) goto done;
-	
-    snprintf (buf, sizeof (buf), "%s/.xinitrc", tem);
-    if (access (buf, F_OK) != 0)
-		goto done;
-	
-    /* FIXME: put localized strings into Resources/English.lproj */
-	
-    msg = NSLocalizedString (@"You have an existing ~/.xinitrc file.\n\n\
-Windows displayed by X11 applications may not have titlebars, or may look \
-different to windows displayed by native applications.\n\n\
-Would you like to move aside the existing file and use the standard X11 \
-environment?", @"Startup xinitrc dialog");
-	
-    if (NSRunAlertPanel (nil, msg, NSLocalizedString (@"Yes", @""),
-			 NSLocalizedString (@"No", @""), nil)
-	== NSAlertDefaultReturn) {
-      char buf2[1024];
-      int i = -1;
-      
-      snprintf (buf2, sizeof (buf2), "%s.old", buf);
-      
-      for (i = 1; access (buf2, F_OK) == 0; i++)
-	snprintf (buf2, sizeof (buf2), "%s.old.%d", buf, i);
-      
-      rename (buf, buf2);
-    }
-    
- done:
-    [X11App prefs_set_boolean:@PREFS_DONE_XINIT_CHECK value:YES];
-    [X11App prefs_synchronize];
-}
-
-void X11ApplicationMain (int argc, const char *argv[],
-			 void (*server_thread) (void *), void *server_arg) {
-  NSAutoreleasePool *pool;
-  
-#ifdef DEBUG
-  while (access ("/tmp/x11-block", F_OK) == 0) sleep (1);
-#endif
-  
-  pool = [[NSAutoreleasePool alloc] init];
-  X11App = (X11Application *) [X11Application sharedApplication];
-  init_ports ();
-  [NSApp read_defaults];
-  [NSBundle loadNibNamed:@"main" owner:NSApp];
-  [[NSNotificationCenter defaultCenter] addObserver:NSApp
-					selector:@selector (became_key:)
-					name:NSWindowDidBecomeKeyNotification object:nil];
-  check_xinitrc ();
-	
-  /*
-   * The xpr Quartz mode is statically linked into this server.
-   * Initialize all the Quartz functions.
-   */
-  QuartzModeBundleInit();
-  
-  /* Calculate the height of the menubar so we can avoid it. */
-  aquaMenuBarHeight = NSHeight([[NSScreen mainScreen] frame]) -
-    NSMaxY([[NSScreen mainScreen] visibleFrame]);
-  
-  if (!create_thread (server_thread, server_arg)) {
-    ErrorF("can't create secondary thread\n");
-    exit (1);
-  }
-  
-  [NSApp run];
-  
-  /* not reached */
-}
-
-
-/* event conversion */
-
-static inline unsigned short
-convert_flags (unsigned int nsflags) {
-    unsigned int xflags = 0;
-	
-    if (nsflags == ~0) return 0xffff;
-	
-    if (nsflags & NSAlphaShiftKeyMask)	xflags |= LockMask;
-    if (nsflags & NSShiftKeyMask)	xflags |= ShiftMask;
-    if (nsflags & NSControlKeyMask)	xflags |= ControlMask;
-    if (nsflags & NSAlternateKeyMask)	xflags |= Mod1Mask;
-    if (nsflags & NSCommandKeyMask)	xflags |= Mod2Mask;
-    /* FIXME: secondaryfn? */
-	
-    return xflags;
-}
-
-
-// This code should probably be merged with that in XDarwin's XServer.m - BB
-static void send_nsevent (NSEventType type, NSEvent *e) {
-  //    static unsigned int button_state = 0;
-    NSRect screen;
-    NSPoint location;
-    NSWindow *window;
-    int pointer_x, pointer_y, ev_button, ev_type; 
-    //    int num_events=0, i=0, state;
-    xEvent xe;
-	
-    /* convert location to global top-left coordinates */
-    location = [e locationInWindow];
-    window = [e window];
-    screen = [[[NSScreen screens] objectAtIndex:0] frame];
-		
-    if (window != nil)	{
-      NSRect frame = [window frame];
-      pointer_x = location.x + frame.origin.x;
-      pointer_y = (((screen.origin.y + screen.size.height)
-		    - location.y) - frame.origin.y);
-    } else {
-      pointer_x = location.x;
-      pointer_y = (screen.origin.y + screen.size.height) - location.y;
-    }
-    
-    pointer_y -= aquaMenuBarHeight;
-    //    state = convert_flags ([e modifierFlags]);
-    
-    switch (type) {
-    case NSLeftMouseDown:    ev_button=1; ev_type=ButtonPress; goto handle_mouse;
-    case NSOtherMouseDown:   ev_button=2; ev_type=ButtonPress; goto handle_mouse;
-    case NSRightMouseDown:   ev_button=3; ev_type=ButtonPress; goto handle_mouse;
-    case NSLeftMouseUp:      ev_button=1; ev_type=ButtonRelease; goto handle_mouse;
-    case NSOtherMouseUp:     ev_button=2; ev_type=ButtonRelease; goto handle_mouse;
-    case NSRightMouseUp:     ev_button=3; ev_type=ButtonRelease; goto handle_mouse;
-    case NSLeftMouseDragged:  ev_button=1; ev_type=MotionNotify; goto handle_mouse;
-    case NSOtherMouseDragged: ev_button=2; ev_type=MotionNotify; goto handle_mouse;
-    case NSRightMouseDragged: ev_button=3; ev_type=MotionNotify; goto handle_mouse;
-    case NSMouseMoved: ev_button=0; ev_type=MotionNotify; goto handle_mouse;
-    handle_mouse:
-      
-      /* I'm not sure the below code is necessary or useful (-bb)
-	if(ev_type==ButtonPress) {
-	if (!quartzProcs->IsX11Window([e window], [e windowNumber])) {
-	  fprintf(stderr, "Dropping event because it's not a window\n");
-	  break;
-	}
-	button_state |= (1 << ev_button);
-	DarwinSendPointerEvents(ev_type, ev_button, pointer_x, pointer_y);
-      } else if (ev_type==ButtonRelease && (button_state & (1 << ev_button)) == 0) break;
-      */
-      DarwinSendPointerEvents(ev_type, ev_button, pointer_x, pointer_y);
-      break;
-    case NSScrollWheel: 
-      DarwinSendScrollEvents([e deltaY], pointer_x, pointer_y);
-      break;
-      
-    case NSKeyDown:  // do we need to translate these keyCodes?
-    case NSKeyUp:
-      DarwinSendKeyboardEvents((type == NSKeyDown)?KeyPress:KeyRelease, [e keyCode]);
-      break;
-
-    case NSFlagsChanged:
-      DarwinUpdateModKeys([e modifierFlags]);
-      break;
-    default: break; /* for gcc */
-    }	
-}
diff --git a/hw/darwin/apple/X11Controller.h b/hw/darwin/apple/X11Controller.h
deleted file mode 100644
index 8d17fd9..0000000
--- a/hw/darwin/apple/X11Controller.h
+++ /dev/null
@@ -1,85 +0,0 @@
-/* X11Controller.h -- connect the IB ui
-
-   Copyright (c) 2002 Apple Computer, Inc. All rights reserved.
-
-   Permission is hereby granted, free of charge, to any person
-   obtaining a copy of this software and associated documentation files
-   (the "Software"), to deal in the Software without restriction,
-   including without limitation the rights to use, copy, modify, merge,
-   publish, distribute, sublicense, and/or sell copies of the Software,
-   and to permit persons to whom the Software is furnished to do so,
-   subject to the following conditions:
-
-   The above copyright notice and this permission notice shall be
-   included in all copies or substantial portions of the Software.
-
-   THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-   EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-   MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-   NONINFRINGEMENT.  IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT
-   HOLDER(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-   WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-   OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-   DEALINGS IN THE SOFTWARE.
-
-   Except as contained in this notice, the name(s) of the above
-   copyright holders shall not be used in advertising or otherwise to
-   promote the sale, use or other dealings in this Software without
-   prior written authorization. */
-
-#ifndef X11CONTROLLER_H
-#define X11CONTROLLER_H 1
-
-#if __OBJC__
-
-#import <Cocoa/Cocoa.h>
-#include "../quartz/xpr/x-list.h"
-
- at interface X11Controller : NSObject
-{
-    NSPanel *prefs_panel;
-
-    NSButton *fake_buttons;
-    NSButton *enable_fullscreen;
-    NSButton *use_sysbeep;
-    NSButton *enable_keyequivs;
-    NSButton *sync_keymap;
-    NSButton *enable_auth;
-    NSButton *enable_tcp;
-    NSPopUpButton *depth;
-
-    NSMenuItem *x11_about_item;
-    NSMenuItem *window_separator;
-    NSMenuItem *dock_window_separator;
-    NSMenuItem *apps_separator;
-    NSMenuItem *toggle_fullscreen_item;
-    NSMenu *dock_apps_menu;
-    NSTableView *apps_table;
-
-    NSArray *apps;
-    NSMutableArray *table_apps;
-
-    NSMenu *dock_menu;
-
-    int checked_window_item;
-    x_list *pending_apps;
-
-    BOOL finished_launching;
-    BOOL can_quit;
-}
-
-- (void) set_window_menu:(NSArray *)list;
-- (void) set_window_menu_check:(NSNumber *)n;
-- (void) set_apps_menu:(NSArray *)list;
-- (void) set_can_quit:(BOOL)state;
-- (void) server_ready;
-
- at end
-
-#endif /* __OBJC__ */
-
-extern void X11ControllerMain (int argc, const char *argv[],
-			       void (*server_thread) (void *),
-			       void *server_arg);
-
-#endif /* X11CONTROLLER_H */
diff --git a/hw/darwin/apple/X11Controller.m b/hw/darwin/apple/X11Controller.m
deleted file mode 100644
index fbc9c74..0000000
--- a/hw/darwin/apple/X11Controller.m
+++ /dev/null
@@ -1,747 +0,0 @@
-/* X11Controller.m -- connect the IB ui, also the NSApp delegate
- 
-   Copyright (c) 2002-2007 Apple Inc. All rights reserved.
- 
-   Permission is hereby granted, free of charge, to any person
-   obtaining a copy of this software and associated documentation files
-   (the "Software"), to deal in the Software without restriction,
-   including without limitation the rights to use, copy, modify, merge,
-   publish, distribute, sublicense, and/or sell copies of the Software,
-   and to permit persons to whom the Software is furnished to do so,
-   subject to the following conditions:
- 
-   The above copyright notice and this permission notice shall be
-   included in all copies or substantial portions of the Software.
- 
-   THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-   EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-   MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-   NONINFRINGEMENT.  IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT
-   HOLDER(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-   WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-   OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-   DEALINGS IN THE SOFTWARE.
- 
-   Except as contained in this notice, the name(s) of the above
-   copyright holders shall not be used in advertising or otherwise to
-   promote the sale, use or other dealings in this Software without
-   prior written authorization. */
-
-#define DEFAULT_PATH "/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/X11/bin"
-
-#include "../quartz/quartzCommon.h"
-
-#import "X11Controller.h"
-#import "X11Application.h"
-#import <Carbon/Carbon.h>
-
-/* ouch! */
-#define BOOL X_BOOL
-#include "opaque.h"
-# include "darwin.h"
-# include "../quartz/quartz.h"
-# define _APPLEWM_SERVER_
-# include "X11/extensions/applewm.h"
-# include "../quartz/applewmExt.h"
-#undef BOOL
-
-#include <stdio.h>
-#include <unistd.h>
-#include <fcntl.h>
-#include <sys/types.h>
-#include <sys/wait.h>
-
-#define TRACE() fprintf (stderr, "%s\n", __FUNCTION__)
-
- at implementation X11Controller
-
-- (void) awakeFromNib
-{
-  X11Application *xapp = NSApp;
-  NSArray *array;
-	
-  /* Point X11Application at ourself. */
-  [xapp set_controller:self];
-	
-  array = [xapp prefs_get_array:@PREFS_APPSMENU];
-  if (array != nil)
-    {
-      int count;
-		
-      /* convert from [TITLE1 COMMAND1 TITLE2 COMMAND2 ...]
-	 to [[TITLE1 COMMAND1] [TITLE2 COMMAND2] ...] format. */
-		
-      count = [array count];
-      if (count > 0
-	  && ![[array objectAtIndex:0] isKindOfClass:[NSArray class]])
-	{
-	  int i;
-	  NSMutableArray *copy, *sub;
-			
-	  copy = [NSMutableArray arrayWithCapacity:(count / 2)];
-			
-	  for (i = 0; i < count / 2; i++)
-	    {
-	      sub = [[NSMutableArray alloc] initWithCapacity:3];
-	      [sub addObject:[array objectAtIndex:i*2]];
-	      [sub addObject:[array objectAtIndex:i*2+1]];
-	      [sub addObject:@""];
-	      [copy addObject:sub];
-	      [sub release];
-	    }
-			
-	  array = copy;
-	}
-		
-      [self set_apps_menu:array];
-    }
-}
-
-- (void) item_selected:sender
-{
-  [NSApp activateIgnoringOtherApps:YES];
-	
-  QuartzMessageServerThread (kXDarwinControllerNotify, 2,
-			     AppleWMWindowMenuItem, [sender tag]);
-}
-
-- (void) remove_window_menu
-{
-  NSMenu *menu;
-  int first, count, i;
-	
-  /* Work backwards so we don't mess up the indices */
-  menu = [window_separator menu];
-  first = [menu indexOfItem:window_separator] + 1;
-  count = [menu numberOfItems];
-  for (i = count - 1; i >= first; i--)
-    [menu removeItemAtIndex:i];
-	
-  menu = [dock_window_separator menu];
-  count = [menu indexOfItem:dock_window_separator];
-  for (i = 0; i < count; i++)
-    [dock_menu removeItemAtIndex:0];
-}
-
-- (void) install_window_menu:(NSArray *)list
-{
-  NSMenu *menu;
-  NSMenuItem *item;
-  int first, count, i;
-	
-  menu = [window_separator menu];
-  first = [menu indexOfItem:window_separator] + 1;
-  count = [list count];
-  for (i = 0; i < count; i++)
-    {
-      NSString *name, *shortcut;
-		
-      name = [[list objectAtIndex:i] objectAtIndex:0];
-      shortcut = [[list objectAtIndex:i] objectAtIndex:1];
-		
-      item = (NSMenuItem *) [menu addItemWithTitle:name action:@selector
-				  (item_selected:) keyEquivalent:shortcut];
-      [item setTarget:self];
-      [item setTag:i];
-      [item setEnabled:YES];
-		
-      item = (NSMenuItem *) [dock_menu insertItemWithTitle:name
-				       action:@selector
-				       (item_selected:) keyEquivalent:shortcut
-				       atIndex:i];
-      [item setTarget:self];
-      [item setTag:i];
-      [item setEnabled:YES];
-    }
-	
-  if (checked_window_item >= 0 && checked_window_item < count)
-    {
-      item = (NSMenuItem *) [menu itemAtIndex:first + checked_window_item];
-      [item setState:NSOnState];
-      item = (NSMenuItem *) [dock_menu itemAtIndex:checked_window_item];
-      [item setState:NSOnState];
-    }
-}
-
-- (void) remove_apps_menu
-{
-  NSMenu *menu;
-  NSMenuItem *item;
-  int i;
-	
-  if (apps == nil || apps_separator == nil) return;
-	
-  menu = [apps_separator menu];
-	
-  if (menu != nil)
-    {
-      for (i = [menu numberOfItems] - 1; i >= 0; i--)
-	{
-	  item = (NSMenuItem *) [menu itemAtIndex:i];
-	  if ([item tag] != 0)
-	    [menu removeItemAtIndex:i];
-	}
-    }
-    
-  if (dock_apps_menu != nil)
-    {
-      for (i = [dock_apps_menu numberOfItems] - 1; i >= 0; i--)
-	{
-	  item = (NSMenuItem *) [dock_apps_menu itemAtIndex:i];
-	  if ([item tag] != 0)
-	    [dock_apps_menu removeItemAtIndex:i];
-	}
-    }
-    
-  [apps release];
-  apps = nil;
-}
-
-- (void) prepend_apps_item:(NSArray *)list index:(int)i menu:(NSMenu *)menu
-{
-  NSString *title, *shortcut = @"";
-  NSArray *group;
-  NSMenuItem *item;
-	
-  group = [list objectAtIndex:i];
-  title = [group objectAtIndex:0];
-  if ([group count] >= 3)
-    shortcut = [group objectAtIndex:2];
-	
-  if ([title length] != 0)
-    {
-      item = (NSMenuItem *) [menu insertItemWithTitle:title
-				  action:@selector (app_selected:)
-				  keyEquivalent:shortcut atIndex:0];
-      [item setTarget:self];
-      [item setEnabled:YES];
-    }
-  else
-    {
-      item = (NSMenuItem *) [NSMenuItem separatorItem];
-      [menu insertItem:item atIndex:0];
-    }
-	
-  [item setTag:i+1];			/* can't be zero, so add one */
-}
-
-- (void) install_apps_menu:(NSArray *)list
-{
-  NSMenu *menu;
-  int i, count;
-	
-  count = [list count];
-	
-  if (count == 0 || apps_separator == nil) return;
-	
-  menu = [apps_separator menu];
-	
-  for (i = count - 1; i >= 0; i--)
-    {
-      if (menu != nil)
-	[self prepend_apps_item:list index:i menu:menu];
-      if (dock_apps_menu != nil)
-	[self prepend_apps_item:list index:i menu:dock_apps_menu];
-    }
-	
-  apps = [list retain];
-}
-
-- (void) set_window_menu:(NSArray *)list
-{
-  [self remove_window_menu];
-  [self install_window_menu:list];
-	
-  QuartzMessageServerThread (kXDarwinControllerNotify, 1,
-			     AppleWMWindowMenuNotify);
-}
-
-- (void) set_window_menu_check:(NSNumber *)nn
-{
-  NSMenu *menu;
-  NSMenuItem *item;
-  int first, count;
-  int n = [nn intValue];
-
-  menu = [window_separator menu];
-  first = [menu indexOfItem:window_separator] + 1;
-  count = [menu numberOfItems] - first;
-	
-  if (checked_window_item >= 0 && checked_window_item < count)
-    {
-      item = (NSMenuItem *) [menu itemAtIndex:first + checked_window_item];
-      [item setState:NSOffState];
-      item = (NSMenuItem *) [dock_menu itemAtIndex:checked_window_item];
-      [item setState:NSOffState];
-    }
-  if (n >= 0 && n < count)
-    {
-      item = (NSMenuItem *) [menu itemAtIndex:first + n];
-      [item setState:NSOnState];
-      item = (NSMenuItem *) [dock_menu itemAtIndex:n];
-      [item setState:NSOnState];
-    }
-  checked_window_item = n;
-}
-
-- (void) set_apps_menu:(NSArray *)list
-{
-  [self remove_apps_menu];
-  [self install_apps_menu:list];
-}
-
-- (void) launch_client:(NSString *)filename
-{
-  const char *command = [filename UTF8String];
-  const char *argv[7];
-  int child1, child2 = 0;
-  int status;
-	
-  argv[0] = "/usr/bin/login";
-  argv[1] = "-fp";
-  argv[2] = getlogin();
-  argv[3] = "/bin/sh";
-  argv[4] = "-c";
-  argv[5] = command;
-  argv[6] = NULL;
-
-  /* Do the fork-twice trick to avoid having to reap zombies */
-    
-  child1 = fork();
-    
-  switch (child1) {
-  case -1:                                /* error */
-    break;
-      
-  case 0:                                 /* child1 */
-    child2 = fork();
-      
-    switch (child2) {
-      int max_files, i;
-      char buf[1024], *temp;
-	
-    case -1:                            /* error */
-      _exit(1);
-	
-    case 0:                             /* child2 */
-      /* close all open files except for standard streams */
-      max_files = sysconf(_SC_OPEN_MAX);
-      for (i = 3; i < max_files; i++)	close(i);
-	
-      /* ensure stdin is on /dev/null */
-      close(0);
-      open("/dev/null", O_RDONLY);
-	
-      /* Setup environment */
-      temp = getenv("DISPLAY");
-      if (temp == NULL || temp[0] == 0) {
-	snprintf(buf, sizeof(buf), ":%s", display);
-	setenv("DISPLAY", buf, TRUE);
-      }
-	
-      temp = getenv("PATH");
-      if (temp == NULL || temp[0] == 0) 
-	setenv ("PATH", DEFAULT_PATH, TRUE);
-      else if (strnstr(temp, "/usr/X11/bin", sizeof(temp)) == NULL) {
-	snprintf(buf, sizeof(buf), "%s:/usr/X11/bin", temp);            
-	setenv("PATH", buf, TRUE);      
-      }
-      /* cd $HOME */
-      temp = getenv("HOME");
-      if (temp != NULL && temp[0]!=0) chdir(temp);
-	
-      execvp(argv[0], (char **const) argv);
-	
-      _exit(2);
-	
-    default:                            /* parent (child1) */
-      _exit(0);
-    }
-    break;
-      
-  default:                                /* parent */
-    waitpid(child1, &status, 0);
-  }
-}
-
-- (void) app_selected:sender
-{
-  int tag;
-  NSString *item;
-  
-  tag = [sender tag] - 1;
-  if (apps == nil || tag < 0 || tag >= [apps count])
-    return;
-  
-  item = [[apps objectAtIndex:tag] objectAtIndex:1];
-  
-  [self launch_client:item];
-}
-
-- (IBAction) apps_table_show:sender
-{
-  NSArray *columns;
-	
-  if (table_apps == nil) {
-    table_apps = [[NSMutableArray alloc] initWithCapacity:1];
-      
-    if (apps != nil)[table_apps addObjectsFromArray:apps];
-  }
-	
-  columns = [apps_table tableColumns];
-  [[columns objectAtIndex:0] setIdentifier:@"0"];
-  [[columns objectAtIndex:1] setIdentifier:@"1"];
-  [[columns objectAtIndex:2] setIdentifier:@"2"];
-	
-  [apps_table setDataSource:self];
-  [apps_table selectRow:0 byExtendingSelection:NO];
-	
-  [[apps_table window] makeKeyAndOrderFront:sender];
-}
-
-- (IBAction) apps_table_cancel:sender
-{
-  [[apps_table window] orderOut:sender];
-  [apps_table reloadData];
-	
-  [table_apps release];
-  table_apps = nil;
-}
-
-- (IBAction) apps_table_done:sender
-{
-  [apps_table deselectAll:sender];	/* flush edits? */
-	
-  [self remove_apps_menu];
-  [self install_apps_menu:table_apps];
-	
-  [NSApp prefs_set_array:@PREFS_APPSMENU value:table_apps];
-  [NSApp prefs_synchronize];
-	
-  [[apps_table window] orderOut:sender];
-	
-  [table_apps release];
-  table_apps = nil;
-}
-
-- (IBAction) apps_table_new:sender
-{
-  NSMutableArray *item;
-	
-  int row = [apps_table selectedRow], i;
-	
-  if (row < 0) row = 0;
-  else row = row + 1;
-	
-  i = row;
-  if (i > [table_apps count])
-    return;				/* avoid exceptions */
-	
-  [apps_table deselectAll:sender];
-	
-  item = [[NSMutableArray alloc] initWithCapacity:3];
-  [item addObject:@""];
-  [item addObject:@""];
-  [item addObject:@""];
-	
-  [table_apps insertObject:item atIndex:i];
-  [item release];
-	
-  [apps_table reloadData];
-  [apps_table selectRow:row byExtendingSelection:NO];
-}
-
-- (IBAction) apps_table_duplicate:sender
-{
-  int row = [apps_table selectedRow], i;
-  NSObject *item;
-	
-  if (row < 0) {
-    [self apps_table_new:sender];
-    return;
-  }
-	
-  i = row;
-  if (i > [table_apps count] - 1) return;				/* avoid exceptions */
-    
-  [apps_table deselectAll:sender];
-	
-  item = [[table_apps objectAtIndex:i] mutableCopy];
-  [table_apps insertObject:item atIndex:i];
-  [item release];
-	
-  [apps_table reloadData];
-  [apps_table selectRow:row+1 byExtendingSelection:NO];
-}
-
-- (IBAction) apps_table_delete:sender
-{
-  int row = [apps_table selectedRow];
-	
-  if (row >= 0)
-    {
-      int i = row;
-      
-      if (i > [table_apps count] - 1) return;			/* avoid exceptions */
-      
-      [apps_table deselectAll:sender];
-      
-      [table_apps removeObjectAtIndex:i];
-    }
-	
-  [apps_table reloadData];
-	
-  row = MIN (row, [table_apps count] - 1);
-  if (row >= 0)
-    [apps_table selectRow:row byExtendingSelection:NO];
-}
-
-- (int) numberOfRowsInTableView:(NSTableView *)tableView
-{
-  if (table_apps == nil) return 0;
-  
-  return [table_apps count];
-}
-
-- (id) tableView:(NSTableView *)tableView
-objectValueForTableColumn:(NSTableColumn *)tableColumn row:(int)row
-{
-  NSArray *item;
-  int col;
-	
-  if (table_apps == nil) return nil;
-	
-  col = [[tableColumn identifier] intValue];
-	
-  item = [table_apps objectAtIndex:row];
-  if ([item count] > col)
-    return [item objectAtIndex:col];
-  else
-    return @"";
-}
-
-- (void) tableView:(NSTableView *)tableView setObjectValue:(id)object
-    forTableColumn:(NSTableColumn *)tableColumn row:(int)row
-{
-  NSMutableArray *item;
-  int col;
-	
-  if (table_apps == nil) return;
-	
-  col = [[tableColumn identifier] intValue];
-	
-  item = [table_apps objectAtIndex:row];
-  [item replaceObjectAtIndex:col withObject:object];
-}
-
-- (void) hide_window:sender
-{
-  if ([X11App x_active])
-    QuartzMessageServerThread (kXDarwinControllerNotify, 1, AppleWMHideWindow);
-  else
-    NSBeep ();			/* FIXME: something here */
-}
-
-- (IBAction)bring_to_front:sender
-{
-  QuartzMessageServerThread(kXDarwinControllerNotify, 1, AppleWMBringAllToFront);
-}
-
-- (IBAction)close_window:sender
-{
-  if ([X11App x_active])
-    QuartzMessageServerThread (kXDarwinControllerNotify, 1, AppleWMCloseWindow);
-  else
-    [[NSApp keyWindow] performClose:sender];
-}
-
-- (IBAction)minimize_window:sender
-{
-  if ([X11App x_active])
-    QuartzMessageServerThread (kXDarwinControllerNotify, 1, AppleWMMinimizeWindow);
-  else
-    [[NSApp keyWindow] performMiniaturize:sender];
-}
-
-- (IBAction)zoom_window:sender
-{
-  if ([X11App x_active])
-    QuartzMessageServerThread (kXDarwinControllerNotify, 1, AppleWMZoomWindow);
-  else
-    [[NSApp keyWindow] performZoom:sender];
-}
-
-- (IBAction) next_window:sender
-{
-  QuartzMessageServerThread (kXDarwinControllerNotify, 1, AppleWMNextWindow);
-}
-
-- (IBAction) previous_window:sender
-{
-  QuartzMessageServerThread (kXDarwinControllerNotify, 1, AppleWMPreviousWindow);
-}
-
-- (IBAction) enable_fullscreen_changed:sender
-{
-  int value = ![enable_fullscreen intValue];
-	
-#ifdef DARWIN_DDX_MISSING
-  QuartzMessageServerThread (kXDarwinSetRootless, 1, value);
-#endif
-	
-  [NSApp prefs_set_boolean:@PREFS_ROOTLESS value:value];
-  [NSApp prefs_synchronize];
-}
-
-- (IBAction) toggle_fullscreen:sender
-{
-#ifdef DARWIN_DDX_MISSING
-  QuartzMessageServerThread (kXDarwinToggleFullscreen, 0);
-#endif
-}
-
-- (void) set_can_quit:(BOOL)state
-{
-  can_quit = state;
-}
-
-- (IBAction)prefs_changed:sender
-{
-  darwinFakeButtons = [fake_buttons intValue];
-  quartzUseSysBeep = [use_sysbeep intValue];
-  X11EnableKeyEquivalents = [enable_keyequivs intValue];
-  darwinSyncKeymap = [sync_keymap intValue];
-	
-  /* after adding prefs here, also add to [X11Application read_defaults]
-     and below */
-	
-  [NSApp prefs_set_boolean:@PREFS_FAKEBUTTONS value:darwinFakeButtons];
-  [NSApp prefs_set_boolean:@PREFS_SYSBEEP value:quartzUseSysBeep];
-  [NSApp prefs_set_boolean:@PREFS_KEYEQUIVS value:X11EnableKeyEquivalents];
-  [NSApp prefs_set_boolean:@PREFS_SYNC_KEYMAP value:darwinSyncKeymap];
-  [NSApp prefs_set_boolean:@PREFS_NO_AUTH value:![enable_auth intValue]];
-  [NSApp prefs_set_boolean:@PREFS_NO_TCP value:![enable_tcp intValue]];
-  [NSApp prefs_set_integer:@PREFS_DEPTH value:[depth selectedTag]];
-	
-  [NSApp prefs_synchronize];
-}
-
-- (IBAction) prefs_show:sender
-{
-  [fake_buttons setIntValue:darwinFakeButtons];
-  [use_sysbeep setIntValue:quartzUseSysBeep];
-  [enable_keyequivs setIntValue:X11EnableKeyEquivalents];
-  [sync_keymap setIntValue:darwinSyncKeymap];
-  [sync_keymap setEnabled:darwinKeymapFile == NULL];
-	
-  [enable_auth setIntValue:![NSApp prefs_get_boolean:@PREFS_NO_AUTH default:NO]];
-  [enable_tcp setIntValue:![NSApp prefs_get_boolean:@PREFS_NO_TCP default:NO]];
-  [depth selectItemAtIndex:[depth indexOfItemWithTag:[NSApp prefs_get_integer:@PREFS_DEPTH default:-1]]];
-	
-  [enable_fullscreen setIntValue:!quartzEnableRootless];
-	
-  [prefs_panel makeKeyAndOrderFront:sender];
-}
-
-- (IBAction) quit:sender
-{
-  QuartzMessageServerThread (kXDarwinQuit, 0);
-}
-
-- (IBAction) x11_help:sender
-{
-  AHLookupAnchor ((CFStringRef)NSLocalizedString(@"Mac Help", no comment), CFSTR ("mchlp2276"));
-}
-
-- (BOOL) validateMenuItem:(NSMenuItem *)item
-{
-  NSMenu *menu = [item menu];
-	
-  if (item == toggle_fullscreen_item)
-    return !quartzEnableRootless;
-  else if (menu == [window_separator menu] || menu == dock_menu
-	   || (menu == [x11_about_item menu] && [item tag] == 42))
-    return (AppleWMSelectedEvents () & AppleWMControllerNotifyMask) != 0;
-  else
-    return TRUE;
-}
-
-- (void) applicationDidHide:(NSNotification *)notify
-{
-  QuartzMessageServerThread (kXDarwinControllerNotify, 1, AppleWMHideAll);
-}
-
-- (void) applicationDidUnhide:(NSNotification *)notify
-{
-  QuartzMessageServerThread (kXDarwinControllerNotify, 1, AppleWMShowAll);
-}
-
-- (NSApplicationTerminateReply) applicationShouldTerminate:sender
-{
-  NSString *msg;
-	
-  if (can_quit || [X11App prefs_get_boolean:@PREFS_NO_QUIT_ALERT default:NO])
-    return NSTerminateNow;
-	
-  /* Make sure we're frontmost. */
-  [NSApp activateIgnoringOtherApps:YES];
-	
-  msg = NSLocalizedString (@"Are you sure you want to quit X11?\n\nIf you quit X11, any X11 applications you are running will stop immediately and you will lose any changes you have not saved.", @"Dialog when quitting");
-	
-  /* FIXME: safe to run the alert in here? Or should we return Later
-     and then run the alert on a timer? It seems to work here, so.. */
-	
-  return (NSRunAlertPanel (nil, msg, NSLocalizedString (@"Quit", @""),
-			   NSLocalizedString (@"Cancel", @""), nil)
-	  == NSAlertDefaultReturn) ? NSTerminateNow : NSTerminateCancel;
-}
-
-- (void) applicationWillTerminate:(NSNotification *)aNotification
-{
-  [X11App prefs_synchronize];
-	
-  /* shutdown the X server, it will exit () for us. */
-  QuartzMessageServerThread (kXDarwinQuit, 0);
-	
-  /* In case it doesn't, exit anyway after a while. */
-  while (sleep (10) != 0) ;
-  exit (1);
-}
-
-- (void) server_ready
-{
-  x_list *node;
-	
-  finished_launching = YES;
-	
-  for (node = pending_apps; node != NULL; node = node->next)
-    {
-      NSString *filename = node->data;
-      [self launch_client:filename];
-      [filename release];
-    }
-	
-  x_list_free (pending_apps);
-  pending_apps = NULL;
-}
-
-- (BOOL) application:(NSApplication *)app openFile:(NSString *)filename
-{
-  const char *name = [filename UTF8String];
-	
-  if (finished_launching)
-    [self launch_client:filename];
-  else if (name[0] != ':')		/* ignore display names */
-    pending_apps = x_list_prepend (pending_apps, [filename retain]);
-	
-  /* FIXME: report failures. */
-  return YES;
-}
-
- at end
-
-void X11ControllerMain (int argc, const char *argv[],
-			void (*server_thread) (void *), void *server_arg)
-{
-  X11ApplicationMain (argc, argv, server_thread, server_arg);
-}
diff --git a/hw/darwin/apple/Xquartz.man b/hw/darwin/apple/Xquartz.man
deleted file mode 100644
index edac30e..0000000
--- a/hw/darwin/apple/Xquartz.man
+++ /dev/null
@@ -1,158 +0,0 @@
-.\" $XFree86: xc/programs/Xserver/hw/darwin/XDarwin.man,v 1.4 2002/01/09 18:01:58 torrey Exp $
-.\"
-.TH XQUARTZ 1 __vendorversion__
-.SH NAME
-Xquartz \- X window system server for Quartz operating system
-.SH SYNOPSIS
-.B Xquartz
-[ options ] ...
-.SH DESCRIPTION
-.I Xquartz
-is the X window server for Mac OS X provided by Apple.
-.I Xquartz
-runs in parallel with Aqua in rootless mode. In rootless mode, the X
-window system and Mac OS X share your display.  The root window of the
-X11 display is the size of the screen and contains all the other
-windows. The X11 root window is not displayed in rootless mode as Mac
-OS X handles the desktop background.
-.SH OPTIONS
-.PP
-In addition to the normal server options described in the \fIXserver(1)\fP
-manual page, \fIXquartz\fP accepts the following command line switches:
-.TP 8
-.B \-fakebuttons
-Emulates a 3 button mouse using modifier keys. By default, the Command modifier
-is used to emulate button 2 and Option is used for button 3. Thus, clicking the
-first mouse button while holding down Command will act like clicking
-button 2. Holding down Option will simulate button 3.
-.TP 8
-.B \-nofakebuttons
-Do not emulate a 3 button mouse. This is the default.
-.TP 8
-.B "\-fakemouse2 \fImodifiers\fP"
-Change the modifier keys used to emulate the second mouse button. By default,
-Command is used to emulate the second button. Any combination of the following
-modifier names may be used: Shift, Option, Control, Command, Fn. For example,
-.B \-fakemouse2 """Option,Shift""
-will set holding Option, Shift and clicking on button one as equivalent to
-clicking the second mouse button.
-.TP 8
-.B "\-fakemouse3 \fImodifiers\fP"
-Change the modifier keys used to emulate the third mouse button. By default,
-Option is used to emulate the third button. Any combination of the following
-modifier names may be used: Shift, Option, Control, Command, Fn. For example,
-.B \-fakemouse3 """Control,Shift""
-will set holding Control, Shift and clicking on button one as equivalent to
-clicking the third mouse button.
-.TP 8
-.B "\-swapAltMeta"
-Swaps the meaning of the Alt and Meta modifier keys.
-.TP 8
-.B "\-keymap \fIfile\fP"
-On startup \fIXquartz\fP translates a Darwin keymapping into an X keymap.
-The default is to read this keymapping from USA.keymapping. With this option
-the keymapping will be read from \fIfile\fP instead. If the file's path is
-not specified, it will be searched for in Library/Keyboards/ underneath the
-following directories (in order): ~, /, /Network, /System.
-.TP 8
-.B \-nokeymap
-On startup \fIXquartz\fP translates a Darwin keymapping into an X keymap.
-With this option \fIXquartz\fP queries the kernel for the current keymapping
-instead of reading it from a file. This will often fail on newer kernels.
-.TP 8
-.B "\-depth \fIdepth\fP"
-Specifies the color bit depth to use. Currently only 15, and 24 color
-bits per pixel are supported. If not specified, defaults to the depth
-of the main display.
-.SH CUSTOMIZATION
-\fIXquartz\fP can also be customized using the defaults(1) command. The available options are:
-.TP 8
-.B defaults write com.apple.x11 enable_fake_buttons -boolean true
-Equivalent to the \fB-fakebuttons\fP command line option.
-.TP 8
-.B defaults write com.apple.x11 fake_button2 \fImodifiers\fP
-Equivalent to the \fB-fakemouse2\fP option.
-.TP 8
-.B defaults write com.apple.x11 fake_button3 \fImodifiers\fP
-Equivalent to the \fB-fakemouse3\fP option.
-.TP 8
-.B defaults write com.apple.x11 swap_alt_meta -boolean true
-Equivalent to the \fB-swapAltMeta\fP option.
-.TP 8
-.B defaults write com.apple.x11 keymap_file \fIfilename\fP
-Equivalent to the \fB-keymap\fP option.
-.TP 8
-.B defaults write com.apple.x11 no_quit_alert -boolean true
-Disables the alert dialog displayed when attempting to quit X11.
-.TP 8
-.B defaults write com.apple.x11 no_auth -boolean true
-Stops the X server requiring that clients authenticate themselves when
-connecting. See Xsecurity(__miscmansuffix__).
-.TP 8
-.B defaults write com.apple.x11 nolisten_tcp -boolean true
-Prevents the X server accepting remote connections.
-.TP 8
-.B defaults write com.apple.x11 xinit_kills_server -boolean false
-Stops the X server exiting when the xinitrc script terminates.
-.TP 8
-.B defaults write com.apple.x11 fullscreen_hotkeys -boolean false
-Allows system hotkeys to be handled while in X11 fullscreen mode.
-.TP 8
-.B defaults write com.apple.x11 enable_system_beep -boolean false
-Don't use the standard system beep effect for X11 alerts.
-.TP 8
-.B defaults write com.apple.x11 enable_key_equivalents -boolean false
-Disable menu keyboard equivalents while X11 windows are focused.
-.TP 8
-.B defaults write com.apple.x11 depth \fIdepth\fP
-Equivalent to the \fB-depth\fP option.
-.SH "SEE ALSO"
-.PP
-X(__miscmansuffix__), XFree86(1), Xserver(1), xdm(1), xinit(1)
-.PP
-.SH AUTHORS
-XFree86 was originally ported to Mac OS X Server by John Carmack. Dave
-Zarzycki used this as the basis of his port of XFree86 4.0 to Darwin 1.0.
-Torrey T. Lyons improved and integrated this code into the XFree86
-Project's mainline for the 4.0.2 release.
-.PP
-The following members of the XonX Team contributed to the following
-releases (in alphabetical order):
-.TP 4
-XFree86 4.1.0:
-.br
-Rob Braun - Darwin x86 support
-.br
-Torrey T. Lyons - Project Lead
-.br
-Andreas Monitzer - Cocoa version of XDarwin front end
-.br
-Gregory Robert Parker - Original Quartz implementation
-.br
-Christoph Pfisterer - Dynamic shared X libraries
-.br
-Toshimitsu Tanaka - Japanese localization
-.TP 4
-XFree86 4.2.0:
-.br
-Rob Braun - Darwin x86 support
-.br
-Pablo Di Noto - Spanish localization
-.br
-Paul Edens - Dutch localization
-.br
-Kyunghwan Kim - Korean localization
-.br
-Mario Klebsch - Non-US keyboard support
-.br
-Torrey T. Lyons - Project Lead
-.br
-Andreas Monitzer - German localization
-.br
-Patrik Montgomery - Swedish localization
-.br
-Greg Parker - Rootless support
-.br
-Toshimitsu Tanaka - Japanese localization
-.br
-Olivier Verdier - French localization
diff --git a/hw/darwin/bundle/Dutch.lproj/Credits.rtf b/hw/darwin/bundle/Dutch.lproj/Credits.rtf
deleted file mode 100644
index 5858e59..0000000
--- a/hw/darwin/bundle/Dutch.lproj/Credits.rtf
+++ /dev/null
@@ -1,168 +0,0 @@
-{\rtf1\mac\ansicpg10000\cocoartf102
-{\fonttbl\f0\fswiss\fcharset77 Helvetica;\f1\fswiss\fcharset77 Helvetica-Bold;\f2\fswiss\fcharset77 Helvetica-Oblique;
-}
-{\colortbl;\red255\green255\blue255;}
-\vieww9000\viewh9000\viewkind0
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural
-
-\f0\fs24 \cf0 This product includes software developed by The XFree86 Project, Inc  (http://www.xfree86.org/) and its contributors. The following people contributed to Darwin/Mac OS X support.\
-\
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc
-
-\f1\b \cf0 Contributors to Xorg Foundation Release:
-\f0\b0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
-\cf0 Kaleb KEITHLEY\
-     
-\f2\i Working left and right Ctrl, Alt (Option), Meta (Command) and Shift keys.
-\f0\i0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
-
-\f1\b \cf0 \
-\f1\b \cf0 Contributors to XFree86 4.4:
-\f0\b0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
-\cf0 John Harper\
-     
-\f2\i Rootless acceleration and Apple-WM extension
-\f0\i0 \
-Torrey T. Lyons\
-     
-\f2\i Project Lead
-\f0\i0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
-
-\f1\b \cf0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc
-\cf0 Additional XonX Contributors to XFree86 4.3:
-\f0\b0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
-\cf0 Fabr\'92cio Luis de Castro\
-     
-\f2\i Portuguese localization
-\f0\i0 \
-Michael Oland\
-     
-\f2\i New XDarwin icon
-\f0\i0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
-
-\f1\b \cf0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc
-\cf0 XonX Contributors to XFree86 4.2:
-\f0\b0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
-\cf0 Rob Braun\
-     
-\f2\i Darwin x86 support
-\f0\i0 \
-Pablo Di Noto\
-
-\f2\i      Spanish localization
-\f0\i0 \
-Paul Edens\
-
-\f2\i      Dutch localization
-\f0\i0 \
-Kyunghwan Kim\
-
-\f2\i      Korean localization
-\f0\i0 \
-Mario Klebsch\
-     
-\f2\i Non-US keyboard support
-\f0\i0 \
-Torrey T. Lyons\
-     
-\f2\i Project Lead
-\f0\i0 \
-Andreas Monitzer\
-     
-\f2\i German localization
-\f0\i0 \
-Patrik Montgomery\
-
-\f2\i      Swedish localization
-\f0\i0 \
-Greg Parker\
-     
-\f2\i Rootless support
-\f0\i0 \
-Toshimitsu Tanaka\
-     
-\f2\i Japanese localization
-\f0\i0 \
-Olivier Verdier\
-
-\f2\i      French localization
-\f0\i0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
-
-\f1\b \cf0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc
-\cf0 Special Thanks:
-\f0\b0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
-\cf0 Devin Poolman and Zero G Software, Inc.\
-
-\f2\i      Installer
-\f0\i0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
-
-\f1\b \cf0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc
-\cf0 XonX Team Members\
-Contributing to XFree86 4.1:
-\f0\b0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
-\cf0 Rob Braun\
-     
-\f2\i Darwin x86 support
-\f0\i0 \
-Torrey T. Lyons\
-     
-\f2\i Project Lead
-\f0\i0 \
-Andreas Monitzer\
-     
-\f2\i Cocoa version of XDarwin front end
-\f0\i0 \
-Greg Parker\
-     
-\f2\i Original Quartz implementation
-\f0\i0 \
-Christoph Pfisterer\
-     
-\f2\i Dynamic shared libraries
-\f0\i0 \
-Toshimitsu Tanaka\
-     
-\f2\i Japanese localization
-\f0\i0 \
-\
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc
-
-\f1\b \cf0 Special Thanks:
-\f0\b0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
-\cf0 Tiago Ribeiro\
-     
-\f2\i XDarwin icon
-\f0\i0 \
-\
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc
-
-\f1\b \cf0 History:
-\f0\b0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
-\cf0 John Carmack\
-     
-\f2\i Original XFree86 port to Mac OS X Server
-\f0\i0 \
-Dave Zarzycki\
-     
-\f2\i XFree86 4.0 port to Darwin 1.0
-\f0\i0 \
-Torrey T. Lyons\
-     
-\f2\i Integration into XFree86 Project for 4.0.2}
\ No newline at end of file
diff --git a/hw/darwin/bundle/Dutch.lproj/Localizable.strings b/hw/darwin/bundle/Dutch.lproj/Localizable.strings
deleted file mode 100644
index 6abd910..0000000
Binary files a/hw/darwin/bundle/Dutch.lproj/Localizable.strings and /dev/null differ
diff --git a/hw/darwin/bundle/Dutch.lproj/MainMenu.nib/classes.nib b/hw/darwin/bundle/Dutch.lproj/MainMenu.nib/classes.nib
deleted file mode 100644
index 77f345a..0000000
--- a/hw/darwin/bundle/Dutch.lproj/MainMenu.nib/classes.nib
+++ /dev/null
@@ -1,72 +0,0 @@
-{
-    IBClasses = (
-        {
-            ACTIONS = {showHelp = id; }; 
-            CLASS = FirstResponder; 
-            LANGUAGE = ObjC; 
-            SUPERCLASS = NSObject; 
-        }, 
-        {
-            ACTIONS = {close = id; pickFile = id; saveChanges = id; setKey = id; }; 
-            CLASS = Preferences; 
-            LANGUAGE = ObjC; 
-            OUTLETS = {
-                addToPathButton = id; 
-                addToPathField = id; 
-                button2ModifiersMatrix = id; 
-                button3ModifiersMatrix = id; 
-                depthButton = id; 
-                displayField = id; 
-                dockSwitchButton = id; 
-                fakeButton = id; 
-                keymapFileField = id; 
-                modeMatrix = id; 
-                modeWindowButton = id; 
-                mouseAccelChangeButton = id; 
-                startupHelpButton = id; 
-                switchKeyButton = id; 
-                systemBeepButton = id; 
-                useDefaultShellMatrix = id; 
-                useOtherShellField = id; 
-                useXineramaButton = id; 
-                window = id; 
-            }; 
-            SUPERCLASS = NSObject; 
-        }, 
-        {
-            CLASS = XApplication; 
-            LANGUAGE = ObjC; 
-            OUTLETS = {preferences = id; xserver = id; }; 
-            SUPERCLASS = NSApplication; 
-        }, 
-        {
-            ACTIONS = {
-                bringAllToFront = id; 
-                closeHelpAndShow = id; 
-                itemSelected = id; 
-                nextWindow = id; 
-                previousWindow = id; 
-                showAction = id; 
-                showSwitchPanel = id; 
-                startFullScreen = id; 
-                startRootless = id; 
-            }; 
-            CLASS = XServer; 
-            LANGUAGE = ObjC; 
-            OUTLETS = {
-                dockMenu = NSMenu; 
-                helpWindow = NSWindow; 
-                modeWindow = NSWindow; 
-                startFullScreenButton = NSButton; 
-                startRootlessButton = NSButton; 
-                startupHelpButton = NSButton; 
-                startupModeButton = NSButton; 
-                switchWindow = NSPanel; 
-                windowMenu = NSMenu; 
-                windowSeparator = NSMenuItem; 
-            }; 
-            SUPERCLASS = NSObject; 
-        }
-    ); 
-    IBVersion = 1; 
-}
\ No newline at end of file
diff --git a/hw/darwin/bundle/Dutch.lproj/MainMenu.nib/objects.nib b/hw/darwin/bundle/Dutch.lproj/MainMenu.nib/objects.nib
deleted file mode 100644
index 8e9224c..0000000
Binary files a/hw/darwin/bundle/Dutch.lproj/MainMenu.nib/objects.nib and /dev/null differ
diff --git a/hw/darwin/bundle/Dutch.lproj/Makefile.am b/hw/darwin/bundle/Dutch.lproj/Makefile.am
deleted file mode 100644
index a480cee..0000000
--- a/hw/darwin/bundle/Dutch.lproj/Makefile.am
+++ /dev/null
@@ -1,35 +0,0 @@
-BINDIR = ${bindir}
-include $(top_srcdir)/cpprules.in
-XINITDIR = $(libdir)/X11/xinit
-XDEFS = \
-        -DX_VERSION="$(PLIST_VERSION_STRING)" \
-        -DX_PRE_RELEASE="$(PRE)" \
-        -DX_REL_DATE="$(XORG_DATE)" \
-        -DX_VENDOR_NAME="$(VENDOR_STRING)" \
-        -DX_VENDOR_LINK="$(PLIST_VENDOR_WEB)"
-
-resourcesdir = @APPLE_APPLICATIONS_DIR@/XDarwin.app/Contents/Resources
-
-Dutchlprojdir = $(resourcesdir)/Dutch.lproj
-
-Dutchlproj_DATA = \
-		    XDarwinHelp.html \
-		    InfoPlist.strings \
-		    Credits.rtf Localizable.strings
-
-Dutchlprojnibdir = $(Dutchlprojdir)/MainMenu.nib
-Dutchlprojnib_DATA = MainMenu.nib/classes.nib MainMenu.nib/objects.nib
-
-InfoPlist.strings: $(srcdir)/../English.lproj/InfoPlist.strings.cpp
-	 $(RAWCPP) $(RAWCPPFLAGS) $(XDEFS) $(CPP_FILES_FLAGS) $< | $(CPP_SED_MAGIC) | $(SED) -e's/__quote__/"/g' > $@
-
-XDarwinHelp.html: XDarwinHelp.html.cpp
-	$(RAWCPP) $(RAWCPPFLAGS) $(XDEFS) $(XDEFS) $(CPP_FILES_FLAGS) $< | $(CPP_SED_MAGIC) > $@
-
-CLEANFILES = XDarwinHelp.html InfoPlist.strings 
-
-EXTRA_DIST = \
-	Credits.rtf Localizable.strings \
-	MainMenu.nib/classes.nib \
-	MainMenu.nib/objects.nib \
-	XDarwinHelp.html.cpp
diff --git a/hw/darwin/bundle/Dutch.lproj/XDarwinHelp.html.cpp b/hw/darwin/bundle/Dutch.lproj/XDarwinHelp.html.cpp
deleted file mode 100644
index 4b8e6f5..0000000
--- a/hw/darwin/bundle/Dutch.lproj/XDarwinHelp.html.cpp
+++ /dev/null
@@ -1,101 +0,0 @@
-<html>
-<head>
-<title>XDarwin Help</title>
-</head>
-<body>
-<center>
-    <h1>XDarwin X Server for Mac OS X</h1>
-    X_VENDOR_NAME X_VERSION<br>
-    Release Date: X_REL_DATE
-</center>
-<h2>Inhoud</h2>
-<ol>
-    <li><A HREF="#notice">Belangrijke Informatie</A></li>
-    <li><A HREF="#usage">Gebruik</A></li>
-    <li><A HREF="#path">Instellen van het Path</A></li>
-    <li><A HREF="#prefs">Voorkeursinstellingen</A></li>
-    <li><A HREF="#license">Licentie</A></li>
-</ol>
-<center>
-    <h2><a NAME="notice">Belangrijke Informatie</a></h2>
-</center>
-<blockquote>
-#if X_PRE_RELEASE
-Dit is een pre-release van XDarwin, waarvoor geen ondersteuning beschikbaar is.  Rapporteren van bugs en aanleveren van patches kan op de <A HREF="http://sourceforge.net/projects/xonx/">XonX project pagina</A> bij SourceForge.  Kijk alvorens een bug te rapporteren in een pre-release eerst of een nieuwe versie beschikbaar is bij <A HREF="http://sourceforge.net/projects/xonx/">XonX</A> of de X_VENDOR_LINK.
-#else
-Als de server ouder is dan 6-12 maanden, of als uw hardware nieuwer is dan de bovenstaande datum, kijk dan of een nieuwe versie beschikbaar is voor u een probleem aanmeldt.  Rapporteren van bugs en aanleveren van patches kan op de <A HREF="http://sourceforge.net/projects/xonx/">XonX project pagina</A> bij SourceForge.
-#endif
-</blockquote>
-<blockquote>
-Deze software is beschikbaar gesteld onder de voorwaarden van de <A HREF="#license">MIT X11 / X Consortium Licentie</A> en is beschikbaar 'AS IS',zonder enige garantie. Lees s.v.p. de <A HREF="#license">Licentie</A> voor gebruik.</blockquote>
-
-<h2><a NAME="usage">Gebruik</a></h2>
-<p>XDarwin is een open-source X server van het <a HREF="http://www.x.org/">X Window Systeem</a>. This version of XDarwin was produced by the X_VENDOR_LINK.  XDarwin werkt op Mac OS X in schermvullende of rootless modus.</p>
-<p>Het X window systeem in schermvullende modus neemt het hele beeldscherm in beslag. U schakelt terug naar de Mac OS X desktop door de toesten Command-Option-A in te drukken. Deze toetsencombinatie kunt u veranderen in de Voorkeuren. Op de Mac OS X desktop klikt u op de XDarwin icoon in de Dock om weer naar het X window systeem te schakelen.  (In de Voorkeuren kunt er voor kiezen om een apart XDarwin schakelpaneel te gebruiken op de Mac OS X desktop.)</p>
-<p>In rootless modus verschijnen het X window systeem en Aqua (de Mac OS X desktop) tegelijk op het scherm. Het achtergrondscherm van X11, waarbinnen alle X11 vensters vallen, is net zo groot als het gehele scherm, maar het achtergrondscherm zelf is onzichtbaar.</p>
-
-<h3>Meerknopsmuis emulatie</h3>
-<p>Voor veel X11 programma's hebt u een 3-knops muis nodig.  Met een 1-knops muis kunt u een 3-knops muis nabootsen door een toets in te drukken terwijl u klikt met de muis.  Het instellen hiervan kan bij Voorkeuren, "Meerknopsmuis emulatie" in "Algemeen".  Emulatie is standaard ingeschakeld: ingedrukt houden van de "command" toets terwijl u klikt emuleert knop 2, ingedrukt houden van "option" emuleert knop 3.  Deze toetsen kunt u dus wijzigen in de Voorkeuren.  Let op: als u xmodmap gebruikt om de indeling van het toetsenbord te wijzigen, moet u toch de oorspronkelijke toetsen op het toetsenbord gebruiken voor deze functie.</p>
-
-<h2><a NAME="path">Instellen van het Path</a></h2>
-<p>Het path is de lijst van directories waarin gezocht wordt naar commando's.  De X11 commando's staan in de directory <code>/usr/X11R6/bin</code>, die dus aan uw path moet worden toegevoegd.  XDarwin doet dit automatisch voor u en kan extra directories toevoegen waarin u commando's hebt ge&iuml;nstalleerd.</p>
-
-<p>Ervaren gebruikers zullen het path al correct hebben ingesteld in de configuratiebestanden voor hun shell.  In dat geval kunt u XDarwin via de Voorkeuren vertellen het path niet te wijzigen.  XDarwin start de eerste X11 clients binnen de standaard login shell van de gebruiker (bij de Voorkeuren kunt u een afwijkende shell opgeven).  Het instellen van het path is afhankelijk van de shell.  Zie hiervoor de man pages voor de shell.</p>
-
-<p>Het kan handig zijn de manualpages voor X11 toe te voegen aan de lijst waarin gezocht wordt als u documentatie opvraagt.  De manualpages voor X11 staan in <code>/usr/X11R6/man</code> en de <code>MANPATH</code> environment variable bevat de lijst van directories waarin naar documentatie wordt gezocht.</p>
-
-<h2><a NAME="prefs">Voorkeursinstellingen</a></h2>
-<p>Een aantal instellingen kan worden gewijzigd door "Voorkeuren..." te kiezen in het "XDarwin" menu.  Wijzigingen van de instellingen genoemd onder "Start" gaan pas in als u XDarwin opnieuw hebt gestart.  Een wijziging van de overige instellingen is direct effectief.  Hier onder vindt u de verschillende mogelijkheden beschreven:</p>
-
-<h3>Algemeen</h3>
-<ul>
-    <li><b>Gebruik systeempiep voor X11:</b> Als u dit inschakelt wordt het Mac OS X  waarschuwingssignaal ook gebruikt door X11, anders gebruikt X11 een simpele pieptoon (dit is de standaardinstelling).</li>
-    <li><b>Wijzigen muis-versnelling door X11 mogelijk:</b> In een standaard X window systeem kan de window manager de muis-versnelling aanpassen.  Dit kan verwarrend zijn omdat de snelheid onder X11 dan verschillend kan zijn van de snelheid die u in Mac OS X bij Systeemvoorkeuren hebt ingesteld.  Om verwarring te voorkomen is de standaardinstelling dat X11 de versnelling niet kan wijzigen.</li>
-    <li><b>Meerknopsmuis emulatie:</b> Dit is hierboven beschreven bij <a HREF="#usage">Gebruik</a>.  Als emulatie is ingeschakeld moet u de gekozen toetsen ingedrukt houden terwijl u met de muis klikt om de tweede en derde muisknop na te bootsen.</li>
-</ul>
-
-<h3>Start</h3>
-<ul>
-    <li><b>Standaard modus:</b> Hier kiest u de standaard scherm-modus: schermvullend of rootless (hierboven beschreven bij <a HREF="#usage">Gebruik</a>).  U kunt ook kiezen tijdens het starten van XDarwin, zie de optie hieronder.</li>
-    <li><b>Kies scherm-modus tijdens start:</b> Dit is standaard ingeschakeld zodat u tijdens het starten van XDarwin kunt kiezen tussen schermvullend en rootless scherm-modus.  Als u dit uitschakelt start XDarwin in de standaard modus zonder u iets te vragen.</li>
-    <li><b>X11 scherm nummer:</b> Met X11 kunnen meerdere schermen worden aangestuurd door verschillende X servers op dezelfde computer.  Als u meerdere X servers tegelijk wilt gebruiken stelt u hier het scherm nummer in dat door XDarwin wordt gebruikt.</li>
-    <li><b>Xinerama multi-monitor ondersteuning mogelijk:</b> XDarwin ondersteunt het gebruik van meerdere monitoren met Xinerama, waarbij elke monitor wordt gezien als deel van &eacute;&eacute;n groot rechthoekig scherm.  U kunt Xinerama hier uitschakelen, maar XDarwin werkt op dit moment zonder Xinerama niet goed met meerdere monitoren.  Als u maar 1 monitor gebruikt is deze instelling automatisch uitgeschakeld.</li>
-    <li><b>Toetsenbordindeling-bestand:</b> Een toetsenbordindeling-bestand wordt bij het starten geladen en omgezet naar een X11 toetsenbordindeling.  Voor verschillende talen vindt u toetsenbordindelingen in de directory <code>/System/Library/Keyboards</code>.</li>
-    <li><b>Bij starten eerste X11 clients:</b> Als XDarwin start, wordt  <code>xinit</code> uitgevoerd om de X window manager en andere X clients te starten (zie "<code>man xinit</code>").  Voordat XDarwin <code>xinit</code> uitvoert voegt het de opgegeven directories toe aan het path.  Standaard wordt alleen <code>/usr/X11R6/bin</code> toegevoegd.  U kunt meerdere directories opgeven, gescheiden door een dubbelepunt.  X clients worden gestart met de standaard login shell van de gebruiker met gebruik van de configuratiebestanden voor die shell.  U kunt een afwijkende shell opgeven.</li>
-</ul>
-
-<h3>Schermvullend</h3>
-<ul>
-    <li><b>Toetscombinatie knop:</b> Klik op deze knop om de toetscombinatie te wijzigen waarmee u tussen de Mac OS X desktop en X11 schakelt.  Als toetscombinatie kunt u elke combinatie gebruiken van de shift, control, command en option toetsen samen met &eacute;&eacute;n normale toets.</li>
-    <li><b>Klikken op icoon in Dock schakelt naar X11:</b> Hiermee is een klik op de XDarwin icoon in de Dock voldoende om naar X11 te schakelen.  In sommige versies van Mac OS X verdwijnt soms de cursor als u deze mogelijkheid gebruikt en daarna terugkeert naar de Mac OS X desktop.</li>
-    <li><b>Toon help bij schermvullend starten:</b> Hiermee wordt een inleidend scherm getoond als XDarwin schermvullend start.</li>
-    <li><b>Kleurdiepte:</b> In de schermvullende modus kan X11 een andere kleurdiepte gebruiken dan Aqua (en de Mac OS X desktop).  Als u "Huidig" kiest, neemt XDarwin bij het starten de kleurdiepte over van Aqua.  U kunt ook kiezen voor 8, 15 of 24 bits.</li>
-</ul>
-
-<h2><a NAME="license">Licentie</a></h2>
-The main license for XDarwin is one based on the traditional MIT X11 / X Consortium License, which does not impose any conditions on modification or redistribution of source code or binaries other than requiring that copyright/license notices are left intact. For more information and additional copyright/licensing notices covering some sections of the code, please refer to the source code.
-<H3><A NAME="3"></A>X Consortium License</H3>
-<p>Copyright (C) 1996 X Consortium</p>
-<p>Permission is hereby granted, free of charge, to any person obtaining a 
-copy of this software and associated documentation files (the "Software"),
-to deal in the Software without restriction, including without
-limitation the rights to use, copy, modify, merge, publish, distribute,
-sublicense, and/or sell copies of the Software, and to permit persons to
-whom the Software is furnished to do so, subject to the following conditions:</p>
-<p>The above copyright notice and this permission notice shall be included
-in all copies or substantial portions of the Software.</p>
-<p>THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT
-SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
-IN THE SOFTWARE.</p>
-<p>Except as contained in this notice, the name of the X Consortium shall
-not be used in advertising or otherwise to promote the sale, use or
-other dealings in this Software without prior written authorization from
-the X Consortium.</p>
-<p>X Window System is a trademark of X Consortium, Inc.</p>
-</body>
-</html>
-
diff --git a/hw/darwin/bundle/English.lproj/Credits.rtf b/hw/darwin/bundle/English.lproj/Credits.rtf
deleted file mode 100644
index 34408e7..0000000
--- a/hw/darwin/bundle/English.lproj/Credits.rtf
+++ /dev/null
@@ -1,168 +0,0 @@
-{\rtf1\mac\ansicpg10000\cocoartf102
-{\fonttbl\f0\fswiss\fcharset77 Helvetica;\f1\fswiss\fcharset77 Helvetica-Bold;\f2\fswiss\fcharset77 Helvetica-Oblique;
-}
-{\colortbl;\red255\green255\blue255;}
-\vieww5160\viewh6300\viewkind0
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural
-
-\f0\fs24 \cf0 This product includes software developed by The XFree86 Project, Inc  (http://www.xfree86.org/) and its contributors. The following people contributed to Darwin/Mac OS X support.\
-\
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc
-
-\f1\b \cf0 Contributors to Xorg Foundation Release:
-\f0\b0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
-\cf0 Kaleb KEITHLEY\
-     
-\f2\i Working left and right Ctrl, Alt (Option), Meta (Command) and Shift keys.
-\f0\i0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
-
-\f1\b \cf0 \
-\f1\b \cf0 Contributors to XFree86 4.4:
-\f0\b0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
-\cf0 John Harper\
-     
-\f2\i Rootless acceleration and Apple-WM extension
-\f0\i0 \
-Torrey T. Lyons\
-     
-\f2\i Project Lead
-\f0\i0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
-
-\f1\b \cf0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc
-\cf0 Additional XonX Contributors to XFree86 4.3:
-\f0\b0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
-\cf0 Fabr\'92cio Luis de Castro\
-     
-\f2\i Portuguese localization
-\f0\i0 \
-Michael Oland\
-     
-\f2\i New XDarwin icon
-\f0\i0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
-
-\f1\b \cf0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc
-\cf0 XonX Contributors to XFree86 4.2:
-\f0\b0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
-\cf0 Rob Braun\
-     
-\f2\i Darwin x86 support
-\f0\i0 \
-Pablo Di Noto\
-
-\f2\i      Spanish localization
-\f0\i0 \
-Paul Edens\
-
-\f2\i      Dutch localization
-\f0\i0 \
-Kyunghwan Kim\
-
-\f2\i      Korean localization
-\f0\i0 \
-Mario Klebsch\
-     
-\f2\i Non-US keyboard support
-\f0\i0 \
-Torrey T. Lyons\
-     
-\f2\i Project Lead
-\f0\i0 \
-Andreas Monitzer\
-     
-\f2\i German localization
-\f0\i0 \
-Patrik Montgomery\
-
-\f2\i      Swedish localization
-\f0\i0 \
-Greg Parker\
-     
-\f2\i Rootless support
-\f0\i0 \
-Toshimitsu Tanaka\
-     
-\f2\i Japanese localization
-\f0\i0 \
-Olivier Verdier\
-
-\f2\i      French localization
-\f0\i0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
-
-\f1\b \cf0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc
-\cf0 Special Thanks:
-\f0\b0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
-\cf0 Devin Poolman and Zero G Software, Inc.\
-
-\f2\i      Installer
-\f0\i0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
-
-\f1\b \cf0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc
-\cf0 XonX Team Members\
-Contributing to XFree86 4.1:
-\f0\b0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
-\cf0 Rob Braun\
-     
-\f2\i Darwin x86 support
-\f0\i0 \
-Torrey T. Lyons\
-     
-\f2\i Project Lead
-\f0\i0 \
-Andreas Monitzer\
-     
-\f2\i Cocoa version of XDarwin front end
-\f0\i0 \
-Greg Parker\
-     
-\f2\i Original Quartz implementation
-\f0\i0 \
-Christoph Pfisterer\
-     
-\f2\i Dynamic shared libraries
-\f0\i0 \
-Toshimitsu Tanaka\
-     
-\f2\i Japanese localization
-\f0\i0 \
-\
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc
-
-\f1\b \cf0 Special Thanks:
-\f0\b0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
-\cf0 Tiago Ribeiro\
-     
-\f2\i XDarwin icon
-\f0\i0 \
-\
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc
-
-\f1\b \cf0 History:
-\f0\b0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
-\cf0 John Carmack\
-     
-\f2\i Original XFree86 port to Mac OS X Server
-\f0\i0 \
-Dave Zarzycki\
-     
-\f2\i XFree86 4.0 port to Darwin 1.0
-\f0\i0 \
-Torrey T. Lyons\
-     
-\f2\i Integration into XFree86 Project for 4.0.2}
\ No newline at end of file
diff --git a/hw/darwin/bundle/English.lproj/InfoPlist.strings.cpp b/hw/darwin/bundle/English.lproj/InfoPlist.strings.cpp
deleted file mode 100644
index 268b800..0000000
--- a/hw/darwin/bundle/English.lproj/InfoPlist.strings.cpp
+++ /dev/null
@@ -1,4 +0,0 @@
-/* English versions of the Info.plist keys; used by most localizations. */
-/* Most of these are set in the target application settings. */
-
-NSHumanReadableCopyright = __quote__ X_VENDOR_NAME X_VERSION __quote__;
diff --git a/hw/darwin/bundle/English.lproj/Localizable.strings b/hw/darwin/bundle/English.lproj/Localizable.strings
deleted file mode 100644
index 6f64879..0000000
--- a/hw/darwin/bundle/English.lproj/Localizable.strings
+++ /dev/null
@@ -1,22 +0,0 @@
-/* English localized versions of strings used by the Mac OS X front end. */
-
-/* Title of alert panel */
-"Quit X server?" = "Quit X server?";
-
-/* Text of alert panel */
-"Quitting the X server will terminate any running X Window System programs." = "Quitting the X server will terminate any running X Window System programs.";
-
-/* Quit */
-"Quit" = "Quit";
-
-/* Cancel */
-"Cancel" = "Cancel";
-
-/* Default keymapping file */
-"USA.keymapping" = "USA.keymapping";
-
-/* Default switch string */
-"Cmd-Opt-a" = "Cmd-Opt-a";
-
-/* Button title when changing switch key */
-"Press key" = "Press key";
diff --git a/hw/darwin/bundle/English.lproj/MainMenu.nib/classes.nib b/hw/darwin/bundle/English.lproj/MainMenu.nib/classes.nib
deleted file mode 100644
index 77f345a..0000000
--- a/hw/darwin/bundle/English.lproj/MainMenu.nib/classes.nib
+++ /dev/null
@@ -1,72 +0,0 @@
-{
-    IBClasses = (
-        {
-            ACTIONS = {showHelp = id; }; 
-            CLASS = FirstResponder; 
-            LANGUAGE = ObjC; 
-            SUPERCLASS = NSObject; 
-        }, 
-        {
-            ACTIONS = {close = id; pickFile = id; saveChanges = id; setKey = id; }; 
-            CLASS = Preferences; 
-            LANGUAGE = ObjC; 
-            OUTLETS = {
-                addToPathButton = id; 
-                addToPathField = id; 
-                button2ModifiersMatrix = id; 
-                button3ModifiersMatrix = id; 
-                depthButton = id; 
-                displayField = id; 
-                dockSwitchButton = id; 
-                fakeButton = id; 
-                keymapFileField = id; 
-                modeMatrix = id; 
-                modeWindowButton = id; 
-                mouseAccelChangeButton = id; 
-                startupHelpButton = id; 
-                switchKeyButton = id; 
-                systemBeepButton = id; 
-                useDefaultShellMatrix = id; 
-                useOtherShellField = id; 
-                useXineramaButton = id; 
-                window = id; 
-            }; 
-            SUPERCLASS = NSObject; 
-        }, 
-        {
-            CLASS = XApplication; 
-            LANGUAGE = ObjC; 
-            OUTLETS = {preferences = id; xserver = id; }; 
-            SUPERCLASS = NSApplication; 
-        }, 
-        {
-            ACTIONS = {
-                bringAllToFront = id; 
-                closeHelpAndShow = id; 
-                itemSelected = id; 
-                nextWindow = id; 
-                previousWindow = id; 
-                showAction = id; 
-                showSwitchPanel = id; 
-                startFullScreen = id; 
-                startRootless = id; 
-            }; 
-            CLASS = XServer; 
-            LANGUAGE = ObjC; 
-            OUTLETS = {
-                dockMenu = NSMenu; 
-                helpWindow = NSWindow; 
-                modeWindow = NSWindow; 
-                startFullScreenButton = NSButton; 
-                startRootlessButton = NSButton; 
-                startupHelpButton = NSButton; 
-                startupModeButton = NSButton; 
-                switchWindow = NSPanel; 
-                windowMenu = NSMenu; 
-                windowSeparator = NSMenuItem; 
-            }; 
-            SUPERCLASS = NSObject; 
-        }
-    ); 
-    IBVersion = 1; 
-}
\ No newline at end of file
diff --git a/hw/darwin/bundle/English.lproj/MainMenu.nib/objects.nib b/hw/darwin/bundle/English.lproj/MainMenu.nib/objects.nib
deleted file mode 100644
index ebbfd83..0000000
Binary files a/hw/darwin/bundle/English.lproj/MainMenu.nib/objects.nib and /dev/null differ
diff --git a/hw/darwin/bundle/English.lproj/Makefile.am b/hw/darwin/bundle/English.lproj/Makefile.am
deleted file mode 100644
index 4558708..0000000
--- a/hw/darwin/bundle/English.lproj/Makefile.am
+++ /dev/null
@@ -1,35 +0,0 @@
-BINDIR = ${bindir}
-include $(top_srcdir)/cpprules.in
-XINITDIR = $(libdir)/X11/xinit
-XDEFS = \
-        -DX_VERSION="$(PLIST_VERSION_STRING)" \
-        -DX_PRE_RELEASE="$(PRE)" \
-        -DX_REL_DATE="$(XORG_DATE)" \
-        -DX_VENDOR_NAME="$(VENDOR_STRING)" \
-        -DX_VENDOR_LINK="$(PLIST_VENDOR_WEB)"
-
-resourcesdir = @APPLE_APPLICATIONS_DIR@/XDarwin.app/Contents/Resources
-
-Englishlprojdir = $(resourcesdir)/English.lproj
-Englishlproj_DATA = \
-		    XDarwinHelp.html \
-		    InfoPlist.strings \
-		    Credits.rtf Localizable.strings
-
-Englishlprojnibdir = $(Englishlprojdir)/MainMenu.nib
-Englishlprojnib_DATA = MainMenu.nib/classes.nib MainMenu.nib/objects.nib
-
-InfoPlist.strings: InfoPlist.strings.cpp
-	 $(RAWCPP) $(RAWCPPFLAGS) $(XDEFS) $(CPP_FILES_FLAGS) $< | $(CPP_SED_MAGIC) | $(SED) -e's/__quote__/"/g' > $@
-
-XDarwinHelp.html: XDarwinHelp.html.cpp
-	$(RAWCPP) $(RAWCPPFLAGS) $(XDEFS) $(CPP_FILES_FLAGS) $< | $(CPP_SED_MAGIC) > $@
-
-CLEANFILES = XDarwinHelp.html InfoPlist.strings 
-
-EXTRA_DIST = \
-	Credits.rtf Localizable.strings \
-	MainMenu.nib/classes.nib \
-	MainMenu.nib/objects.nib \
-	XDarwinHelp.html.cpp \
-	InfoPlist.strings.cpp
diff --git a/hw/darwin/bundle/English.lproj/XDarwinHelp.html.cpp b/hw/darwin/bundle/English.lproj/XDarwinHelp.html.cpp
deleted file mode 100644
index db33670..0000000
--- a/hw/darwin/bundle/English.lproj/XDarwinHelp.html.cpp
+++ /dev/null
@@ -1,94 +0,0 @@
-<html>
-<head>
-<title>XDarwin Help</title>
-</head>
-<body>
-<center>
-    <h1>XDarwin X Server for Mac OS X</h1>
-    X_VENDOR_NAME X_VERSION<br>
-    Release Date: X_REL_DATE
-</center>
-<h2>Contents</h2>
-<ol>
-    <li><A HREF="#notice">Important Notice</A></li>
-    <li><A HREF="#usage">Usage</A></li>
-    <li><A HREF="#path">Setting Your Path</A></li>
-    <li><A HREF="#prefs">User Preferences</A></li>
-    <li><A HREF="#license">License</A></li>
-</ol>
-<center>
-    <h2><a NAME="notice">Important Notice</a></h2>
-</center>
-<blockquote>
-#if X_PRE_RELEASE
-This is a pre-release version of XDarwin, and is not supported in any way. Bugs may be reported and patches may be submitted to the <A HREF="http://sourceforge.net/projects/xonx/">XonX project page</A> at SourceForge.  Before reporting bugs in pre-release versions, please check the latest version from <A HREF="http://sourceforge.net/projects/xonx/">XonX</A> or the X_VENDOR_LINK.
-#else
-If the server is older than 6-12 months, or if your hardware is newer than the above date, look for a newer version before reporting problems. Bugs may be reported and patches may be submitted to the <A HREF="http://sourceforge.net/projects/xonx/">XonX project page</A> at SourceForge.
-#endif
-</blockquote>
-<blockquote>
-This software is distributed under the terms of the <A HREF="#license">MIT X11 / X Consortium License</A> and is provided AS IS, with no warranty. Please read the <A HREF="#license">License</A> before using.</blockquote>
-
-<h2><a NAME="usage">Usage</a></h2>
-<p>XDarwin is a freely redistributable open-source X server for the <a HREF="http://www.x.org/">X Window System</a>. This version of XDarwin was produced by the X_VENDOR_LINK. XDarwin runs on Mac OS X in full screen or rootless modes.</p>
-<p>In full screen mode, when the X window system is active, it takes over the entire screen. You can switch back to the Mac OS X desktop by holding down Command-Option-A. This key combination can be changed in the user preferences. From the Mac OS X desktop, click on the XDarwin icon in the Dock to switch back to the X window system.  (You can change this behavior in the user preferences so that you must click the XDarwin icon in the floating switch window instead.)</p>
-<p>In rootless mode, the X window system and Aqua share your display. The root window of the X11 display is the size of the screen and contains all the other windows. The X11 root window is not displayed in rootless mode as Aqua handles the desktop background.</p>
-<h3>Multi-Button Mouse Emulation</h3>
-<p>Many X11 applications rely on the use of a 3-button mouse. You can emulate a 3-button mouse with a single button by holding down various modifier keys while you click the mouse button. This is controlled by settings in the "Multi-Button Mouse Emulation" section of the "General" preferences. By default, emulation is on and holding down the command key and clicking the mouse button will simulate clicking the second mouse button. Holding down the option key and clicking will simulate the third button. You can change to any combination of modifiers to emulate buttons two and three in the preferences. Note, even if the modifiers keys are mapped to some other key with xmodmap, you still must use the actual keys specified in the preferences for multi-button mouse emulation.</p>
-
-<h2><a NAME="path">Setting Your Path</a></h2>
-<p>Your path is the list of directories to be searched for executable commands. The X11 commands are located in <code>/usr/X11R6/bin</code>, which needs to be added to your path. XDarwin does this for you by default and can also add additional directories where you have installed command line applications.</p>
-<p>More experienced users will have already set their path correctly using the initialization files for their shell. In this case, you can inform XDarwin not to modify your path in the preferences. XDarwin launches the initial X11 clients in the user's default login shell. (An alternate shell can also be specified in the preferences.) The way to set the path depends on the shell you are using. This is described in the man page documentation for the shell.</p>
-<p>In addition you may also want to add the X11 man pages to the list of pages to be searched when you are looking for documentation. The X11 man pages are located in <code>/usr/X11R6/man</code> and the <code>MANPATH</code> environment variable contains the list of directories to search.</p>
-
-<h2><a NAME="prefs">User Preferences</a></h2>
-<p>A number of options may be set from the user preferences, accessible from the "Preferences..." menu item in the "XDarwin" menu. The options listed as start up options will not take effect until you have restarted XDarwin. All other options take effect immediately. The various options are described below:</p>
-<h3>General</h3>
-<ul>
-    <li><b>Use System beep for X11:</b> When enabled the standard Mac OS X alert sound is used as the X11 bell. When disabled (default) a simple tone is used.</li>
-    <li><b>Allow X11 to change mouse acceleration:</b> In a standard X window system implementation, the window manager can change the mouse acceleration. This can lead to confusion as the mouse acceleration may be set to different values by the Mac OS X System Preferences and the X window manager. By default, X11 is not allowed to change the mouse acceleration to avoid this problem.</li>
-    <li><b>Multi-Button Mouse Emulation:</b> This is described above under <a HREF="#usage">Usage</a>. When emulation is enabled the selected modifiers must be held down when the mouse button is pushed to emulate the second or third mouse buttons.</li>
-</ul>
-<h3>Start Up</h3>
-<ul>
-    <li><b>Default Mode:</b> If the user does not indicate whether to run in full screen or rootless mode, the mode specified here will be used.</li>
-    <li><b>Show mode pick panel on startup:</b> By default, a panel is displayed when XDarwin is started to allow the user to choose between full screen or rootless mode. If this option is turned off, the default mode will be started automatically.</li>
-    <li><b>X11 Display number:</b> X11 allows there to be multiple displays managed by separate X servers on a single computer. The user may specify an integer display number for XDarwin to use if more than one X server is going to be run simultaneously.</li>
-    <li><b>Allow Xinerama multiple monitor support:</b> XDarwin supports multiple monitors with Xinerama, which treats all monitors as being part of one large rectangular screen. You can disable Xinerama with this option, but currently XDarwin does not handle multiple monitors correctly without it. If you only have a single monitor, Xinerama is automatically disabled.</li>
-    <li><b>Keymapping File:</b> A keymapping file is read at startup and translated to an X11 keymap. Keymapping files, available for a wide variety of languages, are found in <code>/System/Library/Keyboards</code>.</li>
-    <li><b>Starting First X11 Clients:</b> When XDarwin is started from the Finder, it will run <code>xinit</code> to launch the X window manager and other X clients. (See "<code>man xinit</code>" for more information.) Before XDarwin runs <code>xinit</code> it will add the specified directories to the user's path. By default only <code>/usr/X11R6/bin</code> is added. Additional directories may added, separated by a colon. The X clients are started in the user's default login shell so that the user's shell initialization files are read. If desired, an alternate shell may be specified.</li>
-</ul>
-<h3>Full Screen</h3>
-<ul>
-    <li><b>Key combination button:</b> Click this button and then press any number of modifiers followed by a standard key to change the key combination to switch between Aqua and X11.</li>
-    <li><b>Click on icon in Dock switches to X11:</b> Enable this to activate switching to X11 by clicking on the XDarwin icon in the Dock. On some versions of Mac OS X, switching by clicking in the Dock can cause the cursor to disappear on returning to Aqua.</li>
-    <li><b>Show help on startup:</b> This will show an introductory splash screen when XDarwin is started in full screen mode.</li>
-    <li><b>Color bit depth:</b> In full screen mode, the X11 display can use a different color bit depth than is used by Aqua. If "Current" is specified, the depth used by Aqua when XDarwin starts will be used. Otherwise 8, 15, or 24 bits may be specified.</li>
-</ul>
-
-<h2><a NAME="license">License</a></h2>
-The main license for XDarwin is based on the traditional MIT X11 / X Consortium License, which does not impose any conditions on modification or redistribution of source code or binaries other than requiring that copyright/license notices are left intact. For more information and additional copyright/licensing notices covering some sections of the code, please refer to the source code.
-<H3><A NAME="3"></A>X Consortium License</H3>
-<p>Copyright (C) 1996 X Consortium</p>
-<p>Permission is hereby granted, free of charge, to any person obtaining a 
-copy of this software and associated documentation files (the "Software"),
-to deal in the Software without restriction, including without
-limitation the rights to use, copy, modify, merge, publish, distribute,
-sublicense, and/or sell copies of the Software, and to permit persons to
-whom the Software is furnished to do so, subject to the following conditions:</p>
-<p>The above copyright notice and this permission notice shall be included
-in all copies or substantial portions of the Software.</p>
-<p>THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT
-SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
-IN THE SOFTWARE.</p>
-<p>Except as contained in this notice, the name of the X Consortium shall
-not be used in advertising or otherwise to promote the sale, use or
-other dealings in this Software without prior written authorization from
-the X Consortium.</p>
-<p>X Window System is a trademark of X Consortium, Inc.</p>
-</body>
-</html>
diff --git a/hw/darwin/bundle/French.lproj/Credits.rtf b/hw/darwin/bundle/French.lproj/Credits.rtf
deleted file mode 100644
index 17e0a0d..0000000
--- a/hw/darwin/bundle/French.lproj/Credits.rtf
+++ /dev/null
@@ -1,166 +0,0 @@
-{\rtf1\mac\ansicpg10000\cocoartf102
-{\fonttbl\f0\fswiss\fcharset77 Helvetica;\f1\fswiss\fcharset77 Helvetica-Bold;\f2\fswiss\fcharset77 Helvetica-Oblique;
-}
-{\colortbl;\red255\green255\blue255;}
-\vieww5160\viewh4480\viewkind0
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural
-
-\f0\fs24 \cf0 This product includes software developed by The XFree86 Project, Inc  (http://www.xfree86.org/) and its contributors. The following people contributed to Darwin/Mac OS X support.\
-\
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc
-
-\f1\b \cf0 Contributors to Xorg Foundation Release:
-\f0\b0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
-\cf0 Kaleb KEITHLEY\
-     
-\f2\i Working left and right Ctrl, Alt (Option), Meta (Command) and Shift keys.
-\f0\i0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
-
-\f1\b \cf0 \
-\f1\b \cf0 Contributors to XFree86 4.4:
-\f0\b0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
-\cf0 John Harper\
-     
-\f2\i Rootless acceleration and Apple-WM extension
-\f0\i0 \
-Torrey T. Lyons\
-     
-\f2\i Project Lead
-\f0\i0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
-
-\f1\b \cf0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc
-\cf0 Additional XonX Contributors to XFree86 4.3:
-\f0\b0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
-\cf0 Fabr\'92cio Luis de Castro\
-     
-\f2\i Portuguese localization
-\f0\i0 \
-Michael Oland\
-     
-\f2\i New XDarwin icon
-\f0\i0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc
-
-\f1\b \cf0 \
-Participants \'88 XonX pour XFree86 4.2 :
-\f0\b0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
-\cf0 Rob Braun\
-     
-\f2\i Version pour Darwin x86 
-\f0\i0 \
-Pablo Di Noto\
-
-\f2\i      Traduction en espagnol
-\f0\i0 \
-Paul Edens\
-
-\f2\i      Traduction en allemand
-\f0\i0 \
-Kyunghwan Kim\
-
-\f2\i      Traduction en cor\'8een
-\f0\i0 \
-Mario Klebsch\
-     
-\f2\i Claviers non-US
-\f0\i0 \
-Torrey T. Lyons\
-     
-\f2\i Direction du projet
-\f0\i0 \
-Andreas Monitzer\
-     
-\f2\i Traduction en allemand
-\f0\i0 \
-Patrik Montgomery\
-
-\f2\i      Traduction en su\'8edois
-\f0\i0 \
-Greg Parker\
-     
-\f2\i Version \'c7 rootless \'c8
-\f0\i0 \
-Toshimitsu Tanaka\
-     
-\f2\i Traduction en japonais
-\f0\i0 \
-Olivier Verdier\
-
-\f2\i      Traduction en fran\'8dais
-\f0\i0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
-
-\f1\b \cf0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc
-\cf0 Remerciements :
-\f0\b0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
-\cf0 Devin Poolman et Zero G Software, Inc.\
-
-\f2\i      Installeur
-\f0\i0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
-
-\f1\b \cf0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc
-\cf0 Participants \'88 XonX pour XFree86 4.2 :
-\f0\b0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
-\cf0 Rob Braun\
-     
-\f2\i Version pour Darwin x86 
-\f0\i0 \
-Torrey T. Lyons\
-     
-\f2\i Direction du projet
-\f0\i0 \
-Andreas Monitzer\
-     
-\f2\i Version Cocoa de l'interface de XDarwin
-\f0\i0 \
-Greg Parker\
-     
-\f2\i Impl\'8ementation initiale sur Quartz
-\f0\i0 \
-Christoph Pfisterer\
-     
-\f2\i Librairies partag\'8ees dynamiquement
-\f0\i0 \
-Toshimitsu Tanaka\
-     
-\f2\i Traduction en japonais
-\f0\i0 \
-\
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc
-
-\f1\b \cf0 Remerciements :
-\f0\b0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
-\cf0 Tiago Ribeiro\
-     Ic\'99ne 
-\f2\i XDarwin
-\f0\i0 \
-\
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc
-
-\f1\b \cf0 Historique :
-\f0\b0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
-\cf0 John Carmack\
-     
-\f2\i Premi\'8fre adaptation de XFree86 sur Mac OS X Server
-\f0\i0 \
-Dave Zarzycki\
-     
-\f2\i Adaptation de Free86 4.0 pour Darwin 1.0
-\f0\i0 \
-Torrey T. Lyons\
-     
-\f2\i Int\'8egration dans le projet XFree86 pour la version 4.0.2}
\ No newline at end of file
diff --git a/hw/darwin/bundle/French.lproj/Localizable.strings b/hw/darwin/bundle/French.lproj/Localizable.strings
deleted file mode 100644
index 21c4a99..0000000
Binary files a/hw/darwin/bundle/French.lproj/Localizable.strings and /dev/null differ
diff --git a/hw/darwin/bundle/French.lproj/MainMenu.nib/classes.nib b/hw/darwin/bundle/French.lproj/MainMenu.nib/classes.nib
deleted file mode 100644
index 77f345a..0000000
--- a/hw/darwin/bundle/French.lproj/MainMenu.nib/classes.nib
+++ /dev/null
@@ -1,72 +0,0 @@
-{
-    IBClasses = (
-        {
-            ACTIONS = {showHelp = id; }; 
-            CLASS = FirstResponder; 
-            LANGUAGE = ObjC; 
-            SUPERCLASS = NSObject; 
-        }, 
-        {
-            ACTIONS = {close = id; pickFile = id; saveChanges = id; setKey = id; }; 
-            CLASS = Preferences; 
-            LANGUAGE = ObjC; 
-            OUTLETS = {
-                addToPathButton = id; 
-                addToPathField = id; 
-                button2ModifiersMatrix = id; 
-                button3ModifiersMatrix = id; 
-                depthButton = id; 
-                displayField = id; 
-                dockSwitchButton = id; 
-                fakeButton = id; 
-                keymapFileField = id; 
-                modeMatrix = id; 
-                modeWindowButton = id; 
-                mouseAccelChangeButton = id; 
-                startupHelpButton = id; 
-                switchKeyButton = id; 
-                systemBeepButton = id; 
-                useDefaultShellMatrix = id; 
-                useOtherShellField = id; 
-                useXineramaButton = id; 
-                window = id; 
-            }; 
-            SUPERCLASS = NSObject; 
-        }, 
-        {
-            CLASS = XApplication; 
-            LANGUAGE = ObjC; 
-            OUTLETS = {preferences = id; xserver = id; }; 
-            SUPERCLASS = NSApplication; 
-        }, 
-        {
-            ACTIONS = {
-                bringAllToFront = id; 
-                closeHelpAndShow = id; 
-                itemSelected = id; 
-                nextWindow = id; 
-                previousWindow = id; 
-                showAction = id; 
-                showSwitchPanel = id; 
-                startFullScreen = id; 
-                startRootless = id; 
-            }; 
-            CLASS = XServer; 
-            LANGUAGE = ObjC; 
-            OUTLETS = {
-                dockMenu = NSMenu; 
-                helpWindow = NSWindow; 
-                modeWindow = NSWindow; 
-                startFullScreenButton = NSButton; 
-                startRootlessButton = NSButton; 
-                startupHelpButton = NSButton; 
-                startupModeButton = NSButton; 
-                switchWindow = NSPanel; 
-                windowMenu = NSMenu; 
-                windowSeparator = NSMenuItem; 
-            }; 
-            SUPERCLASS = NSObject; 
-        }
-    ); 
-    IBVersion = 1; 
-}
\ No newline at end of file
diff --git a/hw/darwin/bundle/French.lproj/MainMenu.nib/objects.nib b/hw/darwin/bundle/French.lproj/MainMenu.nib/objects.nib
deleted file mode 100644
index 109d5cc..0000000
Binary files a/hw/darwin/bundle/French.lproj/MainMenu.nib/objects.nib and /dev/null differ
diff --git a/hw/darwin/bundle/French.lproj/Makefile.am b/hw/darwin/bundle/French.lproj/Makefile.am
deleted file mode 100644
index 656ba5c..0000000
--- a/hw/darwin/bundle/French.lproj/Makefile.am
+++ /dev/null
@@ -1,38 +0,0 @@
-BINDIR = ${bindir}
-include $(top_srcdir)/cpprules.in
-XINITDIR = $(libdir)/X11/xinit
-
-XDEFS = \
-        -DX_VERSION="$(PLIST_VERSION_STRING)" \
-        -DX_PRE_RELEASE="$(PRE)" \
-        -DX_REL_DATE="$(XORG_DATE)" \
-        -DX_VENDOR_NAME="$(VENDOR_STRING)" \
-        -DX_VENDOR_LINK="$(PLIST_VENDOR_WEB)"
-
-
-resourcesdir = @APPLE_APPLICATIONS_DIR@/XDarwin.app/Contents/Resources
-
-Frenchlprojdir = $(resourcesdir)/French.lproj
-
-Frenchlproj_DATA = \
-		    XDarwinHelp.html \
-		    InfoPlist.strings \
-		    Credits.rtf Localizable.strings
-
-Frenchlprojnibdir = $(Frenchlprojdir)/MainMenu.nib
-Frenchlprojnib_DATA = MainMenu.nib/classes.nib MainMenu.nib/objects.nib
-
-InfoPlist.strings: $(srcdir)/../English.lproj/InfoPlist.strings.cpp
-	 $(RAWCPP) $(RAWCPPFLAGS) $(XDEFS) $(CPP_FILES_FLAGS) $< | $(CPP_SED_MAGIC) | $(SED) -e's/__quote__/"/g' > $@
-
-XDarwinHelp.html: XDarwinHelp.html.cpp
-	$(RAWCPP) $(RAWCPPFLAGS) $(XDEFS) $(CPP_FILES_FLAGS) $< | $(CPP_SED_MAGIC) > $@
-
-CLEANFILES = XDarwinHelp.html InfoPlist.strings 
-
-EXTRA_DIST = \
-	Credits.rtf Localizable.strings \
-	Localizable.strings \
-	MainMenu.nib/classes.nib \
-	MainMenu.nib/objects.nib \
-	XDarwinHelp.html.cpp
diff --git a/hw/darwin/bundle/French.lproj/XDarwinHelp.html.cpp b/hw/darwin/bundle/French.lproj/XDarwinHelp.html.cpp
deleted file mode 100644
index 512416b..0000000
--- a/hw/darwin/bundle/French.lproj/XDarwinHelp.html.cpp
+++ /dev/null
@@ -1,99 +0,0 @@
-<html>
-<head><META HTTP-EQUIV="content-type" CONTENT="text/html; charset=iso-8859-1">
-<title>XDarwin Help</title>
-</head>
-<body>
-<center>
-    <h1>XDarwin X Server pour Mac OS X</h1>
-    X_VENDOR_NAME X_VERSION<br>
-    Date : X_REL_DATE
-</center>
-<h2>Sommaire</h2>
-<ol>
-    <li><A HREF="#notice">Avertissement</A></li>
-    <li><A HREF="#usage">Utilisation</A></li>
-    <li><A HREF="#path">Chemins d'accès</A></li>
-    <li><A HREF="#prefs">Préférences</A></li>
-    <li><A HREF="#license">Licence</A></li>
-</ol>
-<center>
-    <h2><a NAME="notice">Avertissement</a></h2>
-</center>
-<blockquote>
-#if PRE_RELEASE
-Ceci est une pré-version de XDarwin et ne fait par conséquent l'objet d'aucun support client. Les bogues peuvent être signalés et des patches peuvent être soumis sur la 
-<A HREF="http://sourceforge.net/projects/xonx/">page du projet XonX</A> chez SourceForge. Veuillez prendre connaissance de la dernière version sur <A HREF="http://sourceforge.net/projects/xonx/">XonX</A> ou le X_VENDOR_LINK avant de signaler un bogue d'une pré-version.
-#else
-Si le serveur date de plus de 6-12 mois ou si votre matériel est plus récent que la date indiquée ci-dessus, veuillez vous procurer une version plus récente avant de signaler toute anomalie. Les bogues peuvent être signalés et des patches peuvent être soumis sur la <A HREF="http://sourceforge.net/projects/xonx/">page du projet XonX</A> chez SourceForge.
-#endif
-</blockquote>
-<blockquote>
-Ce logiciel est distribué sous la 
-<A HREF="#license">Licence du Consortium X/X11 du MIT</A> et est fourni TEL QUEL, sans garanties. Veuillez prendre connaissance de la <A HREF="#license">Licence</A> avant toute utilisation.</blockquote>
-
-<h2><a NAME="usage">Utilisation</a></h2>
-<p>XDarwin est une X server libre et distribuable sans contrainte du <a HREF
-="http://www.x.org/">X Window System</a>. This version of XDarwin was produced by the X_VENDOR_LINK. XDarwin fonctionne sous Mac OS X en mode « rootless » ou plein écran.</p>
-<p>Lorsque le système X window est actif en mode plein écran, il prend en charge la totalité de l'écran. Il est possible de revenir sur le bureau de Mac OS X en appuyant sur Commande-Option-A. Cette combinaison de touches peut être modifiée dans les préférences. Pour revenir dans X window, cliquer sur l'icône de XDarwin dans le Dock de Mac OS X.  (Un réglage des préférences permet d'effectuer cette opération en cliquant dans une fenêtre flottante au lieu de l'icône du Dock)</p>
-<p>En mode « rootless », X window system et Aqua utilisent le même affichage. La fenêtre-mère de l'affichage X11 est de la taille de l'écran et contient toutes les autre fenêtres. En mode « rootless » cette fenêtre-mère n'est pas affichée car Aqua gère le fond d'écran.</p>
-<h3>Émulation de souris à plusieurs boutons</h3>
-<p>Le fonctionnement de la plupart des applications X11 repose sur l'utilisation d'une souris à 3 boutons. Il est possible d'émuler une souris à 3 boutons avec un seul bouton en appuyant sur des touches de modification. Ceci est réglé dans la section "Émulation de souris à plusieurs boutons" de l'onglet "Général" des préférences. L'émulation est activée par défaut. Dans ce cas, cliquer en appuyant simultanément sur la touche "commande" simulera le bouton du milieu. Cliquer en appuyant simultanément sur la touche "option" simulera le bouton de droite. Les préférences permettent de régler n'importe quelle combinaison de touches de modification pour émuler les boutons du milieu et de droite. Notez que même si les touches de modifications sont mises en correspondance avec d'autres touches par xmodmap, ce sont les touches originelles spécifiées dans les préférences qui assureront l'émulation d'une souris à plusieurs boutons.
-
-<h2><a NAME="path">Réglage du chemin d'accès</a></h2>
-<p>Le chemin d'accès est une liste de répertoires utilisés pour la recherche d'exécutables. Les commandes X11 sont situées dans <code>/usr/X11R6/bin</code>, qui doit être ajouté à votre chemin d'accès. XDarwin fait cela par défaut, et peut également ajouter d'autres répertoires dans lesquels vous auriez installé d'autre commandes unix.</p>
-<p>Les utilisateurs plus expérimentés auront déjà réglé leur chemin d'accès correctement par le biais des fichiers d'initialisation de leur shell. Dans ce cas, il est possible de demander à XDarwin de ne pas modifier le chemin d'accès initial. XDarwin lance les premiers clients X11 dans le shell d'ouverture de session par défaut. (Un shell de remplacement peut être spécifié dans les préférences.) La façon de régler le chemin d'accès dépend du shell utilisé. Ceci est documenté dans les pages "man" du shell.</p>
-<p>De plus, il est possible d'ajouter les pages "man" de X11 à la liste des pages recherchées pour la documentation "man". Les pages "man" X11 se trouvent dans <code>/usr/X11R6/man</code>  et la variable d'environnement <code>MANPATH</code> contient la liste des répertoires dans lesquels chercher.</p>
-
-
-<h2><a NAME="prefs">Préférences</a></h2>
-<p>Un certain nombre d'options peuvent être réglées dans les préférences. On accède aux préférences en choisissant "Préférences..." dans le menu "XDarwin". Les options décrites comme options de démarrage ne prendront pas effet avant le redémarrage de XDarwin. Les autres options prennent immédiatement effet. Les différentes options sont détaillées ci-après :</p>
-<h3>Général</h3>
-<ul>
-    <li><b>Utiliser le bip d'alerte Système dans X11 :</b> Cocher cette option pour que le son d'alerte standard de Mac OS X soit utilisé à la place du son d'alerte de X11. L'option n'est pas cochée ar défaut. Dans ce cas, un simple signal sonore est utilisé.</li>
-    <li><b>Autoriser X11 à changer la vitesse de la souris :</b> Dans une implémentation classique du sytème X window, le gestionnaire de fenêtres peut modifier la vitesse de la souris. Cela peut s'avérer déroutant puisque le réglage de la vitesse de la souris peut être différent dans les préférences de Mac OS X et dans le gestionnaire X window. Par défaut, X11 n'est pas autorisé à changer la vitesse de la souris.</li>
-    <li><b>Émulation de souris à plusieurs boutons :</b> Ceci est décrit ci-dessus à la rubrique <a HREF="#usage">Usage</a>. Lorsque l'émulation est activée, il suffit d'appuyer simultanément sur les touches modificatrices sélectionnées et sur le bouton de la souris afin d'émuler les boutons du milieu et de droite.</li>
-</ul>
-<h3>Démarrage</h3>
-<ul>
-    <li><b>Mode par défaut :</b> Le mode spécifié à cet endroit sera utilisé si l'utilisateur ne l'indique pas au démarrage.</li>
-    <li><b>Choix du mode d'affichage au démarrage</b> Par défaut, une fenêtre de dialogue est affichée au démarrage de XDarwin pour permettre à l'utilisateur de choisir entre le mode plein écran et le mode « rootless ». Si cette option est désactivée, le mode par défaut sera automatiquement utilisé.</li>
-    <li><b>Numéro d'affichage (Display)</b> X11 offre la possibilité de plusieurs serveurs X sur un ordinateur. L'utilisateur doit spécifier ici le numéro d'affichage utilisé par XDarwin dans le cas où plusieurs serveurs X seraient en service simultanément.</li>
-    <li><b>Autoriser la prise en charge Xinerama de plusieurs moniteurs :</b> XDarwin peut être utilisé avec plusieurs moniteur avec Xinerama, qui considère les différents moniteurs comme des parties d'un écran rectugulaire plus grand. Cette option permet de désactiver Xinerama mais XDarwin ne prend alors pour l'instant pas correctement en charge l'affichage sur plusieurs écrans. Si il n'y a qu'un seul moniteur, Xinerama est automatiquement désactivé.</li>
-    <li><b>Fichier clavier :</b> Un fichier de correspondance de clavier est lu au démarrage puis transformé en un fihcier de correspondance clavier pour X11. Les fichiers de correspondance clavier, disponibles pour de nombreuses langues, se trouvent dans <code>/System/Library/Keyboards</code>.</li>
-    <li><b>Démarrage des premiers clients X11 :</b> Lorsque XDarwin est démarré à partir du Finder, il lance <code>xinit</code> qui lance à son tour le gestionnaire X window ainsi que d'autres clients X. (Voir "<code>man xinit</code>" pour plus d'informations.) Avant de lancer <code>xinit</code>, XDarwin ajoute les répertoires ainsi spécifiés au chemin d'accès de l'utilisateur. Par défaut, seul <code>/usr/X11R6/bin</code> est ajouté. Il est possible d'ajouter d'autres répertoires en les séparants à l'aide de deux points (<code>:</code>). Les clients X sont démarrés à partir du shell par défaut de l'utilisateur. Ainsi, le fichier d'initialisation de shell de l'utilisateur est lu. Un autre shell peut éventuellement être spécifié.</li>
-</ul>
-<h3>Plein écran</h3>
-<ul>
-    <li><b>Combinaison de touches :</b> Appuyer sur ce bouton, puis appuyer sur une ou plusieurs touches modificatrices suivies d'une touche ordinaire. Cette combinaison de touche servira à commuter entre Aqua et X11.</li>
-    <li><b>Basculer dans X11 en cliquant sur l'icône du Dock :</b> Cette option permet de passer dans X11 en cliquant dans l'icône de XDarwin dans le Dock. Sur certaines versions de Mac OS X, la commutation en utilisant le Dock peut faire disparaître le curseur lors du retour dans Aqua.</li>
-    <li><b>Afficher l'aide du mode plein écran au démarrage :</b> Permet l'affichage d'une fenêtre d'introduction lorsque XDarwin est démarré en mode plein écran.</li>
-    <li><b>Profondeur de couleur :</b> En mode plein écran, l'affichage X11 peut utiliser une autre profondeur de couleur que celle employée par Aqua. Si "Actuelle" est choisi, XDarwin utilisera la même profondeur de couleur qu'Aqua. Les autres choix sont 8 (256 couleurs), 15 (milliers de couleurs) et 24 bits (millions de couleurs). </li>
-</ul>
-
-<h2><a NAME="license">Licence</a></h2>
-The main license for XDarwin is one based on the traditional MIT X11 / X Consortium License, which does not impose any conditions on modification or redistribution of source code or binaries other than requiring that copyright/license notices are left intact. For more information and additional copyright/licensing notices covering some sections of the code, please refer to the source code.
-<H3><A NAME="3"></A>X Consortium License</H3>
-<p>Copyright (C) 1996 X Consortium</p>
-<p>Permission is hereby granted, free of charge, to any person obtaining a 
-copy of this software and associated documentation files (the "Software"),
-to deal in the Software without restriction, including without
-limitation the rights to use, copy, modify, merge, publish, distribute,
-sublicense, and/or sell copies of the Software, and to permit persons to
-whom the Software is furnished to do so, subject to the following conditions:</p>
-<p>The above copyright notice and this permission notice shall be included
-in all copies or substantial portions of the Software.</p>
-<p>THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT
-SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
-IN THE SOFTWARE.</p>
-<p>Except as contained in this notice, the name of the X Consortium shall
-not be used in advertising or otherwise to promote the sale, use or
-other dealings in this Software without prior written authorization from
-the X Consortium.</p>
-<p>X Window System is a trademark of X Consortium, Inc.</p>
-</body>
-</html>
-
diff --git a/hw/darwin/bundle/German.lproj/Credits.rtf b/hw/darwin/bundle/German.lproj/Credits.rtf
deleted file mode 100644
index 34408e7..0000000
--- a/hw/darwin/bundle/German.lproj/Credits.rtf
+++ /dev/null
@@ -1,168 +0,0 @@
-{\rtf1\mac\ansicpg10000\cocoartf102
-{\fonttbl\f0\fswiss\fcharset77 Helvetica;\f1\fswiss\fcharset77 Helvetica-Bold;\f2\fswiss\fcharset77 Helvetica-Oblique;
-}
-{\colortbl;\red255\green255\blue255;}
-\vieww5160\viewh6300\viewkind0
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural
-
-\f0\fs24 \cf0 This product includes software developed by The XFree86 Project, Inc  (http://www.xfree86.org/) and its contributors. The following people contributed to Darwin/Mac OS X support.\
-\
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc
-
-\f1\b \cf0 Contributors to Xorg Foundation Release:
-\f0\b0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
-\cf0 Kaleb KEITHLEY\
-     
-\f2\i Working left and right Ctrl, Alt (Option), Meta (Command) and Shift keys.
-\f0\i0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
-
-\f1\b \cf0 \
-\f1\b \cf0 Contributors to XFree86 4.4:
-\f0\b0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
-\cf0 John Harper\
-     
-\f2\i Rootless acceleration and Apple-WM extension
-\f0\i0 \
-Torrey T. Lyons\
-     
-\f2\i Project Lead
-\f0\i0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
-
-\f1\b \cf0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc
-\cf0 Additional XonX Contributors to XFree86 4.3:
-\f0\b0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
-\cf0 Fabr\'92cio Luis de Castro\
-     
-\f2\i Portuguese localization
-\f0\i0 \
-Michael Oland\
-     
-\f2\i New XDarwin icon
-\f0\i0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
-
-\f1\b \cf0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc
-\cf0 XonX Contributors to XFree86 4.2:
-\f0\b0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
-\cf0 Rob Braun\
-     
-\f2\i Darwin x86 support
-\f0\i0 \
-Pablo Di Noto\
-
-\f2\i      Spanish localization
-\f0\i0 \
-Paul Edens\
-
-\f2\i      Dutch localization
-\f0\i0 \
-Kyunghwan Kim\
-
-\f2\i      Korean localization
-\f0\i0 \
-Mario Klebsch\
-     
-\f2\i Non-US keyboard support
-\f0\i0 \
-Torrey T. Lyons\
-     
-\f2\i Project Lead
-\f0\i0 \
-Andreas Monitzer\
-     
-\f2\i German localization
-\f0\i0 \
-Patrik Montgomery\
-
-\f2\i      Swedish localization
-\f0\i0 \
-Greg Parker\
-     
-\f2\i Rootless support
-\f0\i0 \
-Toshimitsu Tanaka\
-     
-\f2\i Japanese localization
-\f0\i0 \
-Olivier Verdier\
-
-\f2\i      French localization
-\f0\i0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
-
-\f1\b \cf0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc
-\cf0 Special Thanks:
-\f0\b0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
-\cf0 Devin Poolman and Zero G Software, Inc.\
-
-\f2\i      Installer
-\f0\i0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
-
-\f1\b \cf0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc
-\cf0 XonX Team Members\
-Contributing to XFree86 4.1:
-\f0\b0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
-\cf0 Rob Braun\
-     
-\f2\i Darwin x86 support
-\f0\i0 \
-Torrey T. Lyons\
-     
-\f2\i Project Lead
-\f0\i0 \
-Andreas Monitzer\
-     
-\f2\i Cocoa version of XDarwin front end
-\f0\i0 \
-Greg Parker\
-     
-\f2\i Original Quartz implementation
-\f0\i0 \
-Christoph Pfisterer\
-     
-\f2\i Dynamic shared libraries
-\f0\i0 \
-Toshimitsu Tanaka\
-     
-\f2\i Japanese localization
-\f0\i0 \
-\
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc
-
-\f1\b \cf0 Special Thanks:
-\f0\b0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
-\cf0 Tiago Ribeiro\
-     
-\f2\i XDarwin icon
-\f0\i0 \
-\
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc
-
-\f1\b \cf0 History:
-\f0\b0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
-\cf0 John Carmack\
-     
-\f2\i Original XFree86 port to Mac OS X Server
-\f0\i0 \
-Dave Zarzycki\
-     
-\f2\i XFree86 4.0 port to Darwin 1.0
-\f0\i0 \
-Torrey T. Lyons\
-     
-\f2\i Integration into XFree86 Project for 4.0.2}
\ No newline at end of file
diff --git a/hw/darwin/bundle/German.lproj/Localizable.strings b/hw/darwin/bundle/German.lproj/Localizable.strings
deleted file mode 100644
index 5db6306..0000000
Binary files a/hw/darwin/bundle/German.lproj/Localizable.strings and /dev/null differ
diff --git a/hw/darwin/bundle/German.lproj/MainMenu.nib/classes.nib b/hw/darwin/bundle/German.lproj/MainMenu.nib/classes.nib
deleted file mode 100644
index 77f345a..0000000
--- a/hw/darwin/bundle/German.lproj/MainMenu.nib/classes.nib
+++ /dev/null
@@ -1,72 +0,0 @@
-{
-    IBClasses = (
-        {
-            ACTIONS = {showHelp = id; }; 
-            CLASS = FirstResponder; 
-            LANGUAGE = ObjC; 
-            SUPERCLASS = NSObject; 
-        }, 
-        {
-            ACTIONS = {close = id; pickFile = id; saveChanges = id; setKey = id; }; 
-            CLASS = Preferences; 
-            LANGUAGE = ObjC; 
-            OUTLETS = {
-                addToPathButton = id; 
-                addToPathField = id; 
-                button2ModifiersMatrix = id; 
-                button3ModifiersMatrix = id; 
-                depthButton = id; 
-                displayField = id; 
-                dockSwitchButton = id; 
-                fakeButton = id; 
-                keymapFileField = id; 
-                modeMatrix = id; 
-                modeWindowButton = id; 
-                mouseAccelChangeButton = id; 
-                startupHelpButton = id; 
-                switchKeyButton = id; 
-                systemBeepButton = id; 
-                useDefaultShellMatrix = id; 
-                useOtherShellField = id; 
-                useXineramaButton = id; 
-                window = id; 
-            }; 
-            SUPERCLASS = NSObject; 
-        }, 
-        {
-            CLASS = XApplication; 
-            LANGUAGE = ObjC; 
-            OUTLETS = {preferences = id; xserver = id; }; 
-            SUPERCLASS = NSApplication; 
-        }, 
-        {
-            ACTIONS = {
-                bringAllToFront = id; 
-                closeHelpAndShow = id; 
-                itemSelected = id; 
-                nextWindow = id; 
-                previousWindow = id; 
-                showAction = id; 
-                showSwitchPanel = id; 
-                startFullScreen = id; 
-                startRootless = id; 
-            }; 
-            CLASS = XServer; 
-            LANGUAGE = ObjC; 
-            OUTLETS = {
-                dockMenu = NSMenu; 
-                helpWindow = NSWindow; 
-                modeWindow = NSWindow; 
-                startFullScreenButton = NSButton; 
-                startRootlessButton = NSButton; 
-                startupHelpButton = NSButton; 
-                startupModeButton = NSButton; 
-                switchWindow = NSPanel; 
-                windowMenu = NSMenu; 
-                windowSeparator = NSMenuItem; 
-            }; 
-            SUPERCLASS = NSObject; 
-        }
-    ); 
-    IBVersion = 1; 
-}
\ No newline at end of file
diff --git a/hw/darwin/bundle/German.lproj/MainMenu.nib/objects.nib b/hw/darwin/bundle/German.lproj/MainMenu.nib/objects.nib
deleted file mode 100644
index 28fff89..0000000
Binary files a/hw/darwin/bundle/German.lproj/MainMenu.nib/objects.nib and /dev/null differ
diff --git a/hw/darwin/bundle/German.lproj/Makefile.am b/hw/darwin/bundle/German.lproj/Makefile.am
deleted file mode 100644
index 17af414..0000000
--- a/hw/darwin/bundle/German.lproj/Makefile.am
+++ /dev/null
@@ -1,36 +0,0 @@
-BINDIR = ${bindir}
-include $(top_srcdir)/cpprules.in
-XINITDIR = $(libdir)/X11/xinit
-XDEFS = \
-        -DX_VERSION="$(PLIST_VERSION_STRING)" \
-        -DX_PRE_RELEASE="$(PRE)" \
-        -DX_REL_DATE="$(XORG_DATE)" \
-        -DX_VENDOR_NAME="$(VENDOR_STRING)" \
-        -DX_VENDOR_LINK="$(PLIST_VENDOR_WEB)"
-
-resourcesdir = @APPLE_APPLICATIONS_DIR@/XDarwin.app/Contents/Resources
-
-Germanlprojdir = $(resourcesdir)/German.lproj
-
-Germanlproj_DATA = \
-		    XDarwinHelp.html \
-		    InfoPlist.strings \
-		    Credits.rtf Localizable.strings
-
-Germanlprojnibdir = $(Germanlprojdir)/MainMenu.nib
-Germanlprojnib_DATA =  MainMenu.nib/classes.nib MainMenu.nib/objects.nib
-
-InfoPlist.strings: $(srcdir)/../English.lproj/InfoPlist.strings.cpp
-	 $(RAWCPP) $(RAWCPPFLAGS) $(XDEFS) $(CPP_FILES_FLAGS) $< | $(CPP_SED_MAGIC) | $(SED) -e's/__quote__/"/g' > $@
-
-XDarwinHelp.html: XDarwinHelp.html.cpp
-	$(RAWCPP) $(RAWCPPFLAGS) $(XDEFS) $(XDEFS) $(CPP_FILES_FLAGS) $< | $(CPP_SED_MAGIC) > $@
-
-CLEANFILES = XDarwinHelp.html InfoPlist.strings 
-
-EXTRA_DIST = \
-	Credits.rtf Localizable.strings \
-	Localizable.strings \
-	MainMenu.nib/classes.nib \
-	MainMenu.nib/objects.nib \
-	XDarwinHelp.html.cpp
diff --git a/hw/darwin/bundle/German.lproj/XDarwinHelp.html.cpp b/hw/darwin/bundle/German.lproj/XDarwinHelp.html.cpp
deleted file mode 100644
index db33670..0000000
--- a/hw/darwin/bundle/German.lproj/XDarwinHelp.html.cpp
+++ /dev/null
@@ -1,94 +0,0 @@
-<html>
-<head>
-<title>XDarwin Help</title>
-</head>
-<body>
-<center>
-    <h1>XDarwin X Server for Mac OS X</h1>
-    X_VENDOR_NAME X_VERSION<br>
-    Release Date: X_REL_DATE
-</center>
-<h2>Contents</h2>
-<ol>
-    <li><A HREF="#notice">Important Notice</A></li>
-    <li><A HREF="#usage">Usage</A></li>
-    <li><A HREF="#path">Setting Your Path</A></li>
-    <li><A HREF="#prefs">User Preferences</A></li>
-    <li><A HREF="#license">License</A></li>
-</ol>
-<center>
-    <h2><a NAME="notice">Important Notice</a></h2>
-</center>
-<blockquote>
-#if X_PRE_RELEASE
-This is a pre-release version of XDarwin, and is not supported in any way. Bugs may be reported and patches may be submitted to the <A HREF="http://sourceforge.net/projects/xonx/">XonX project page</A> at SourceForge.  Before reporting bugs in pre-release versions, please check the latest version from <A HREF="http://sourceforge.net/projects/xonx/">XonX</A> or the X_VENDOR_LINK.
-#else
-If the server is older than 6-12 months, or if your hardware is newer than the above date, look for a newer version before reporting problems. Bugs may be reported and patches may be submitted to the <A HREF="http://sourceforge.net/projects/xonx/">XonX project page</A> at SourceForge.
-#endif
-</blockquote>
-<blockquote>
-This software is distributed under the terms of the <A HREF="#license">MIT X11 / X Consortium License</A> and is provided AS IS, with no warranty. Please read the <A HREF="#license">License</A> before using.</blockquote>
-
-<h2><a NAME="usage">Usage</a></h2>
-<p>XDarwin is a freely redistributable open-source X server for the <a HREF="http://www.x.org/">X Window System</a>. This version of XDarwin was produced by the X_VENDOR_LINK. XDarwin runs on Mac OS X in full screen or rootless modes.</p>
-<p>In full screen mode, when the X window system is active, it takes over the entire screen. You can switch back to the Mac OS X desktop by holding down Command-Option-A. This key combination can be changed in the user preferences. From the Mac OS X desktop, click on the XDarwin icon in the Dock to switch back to the X window system.  (You can change this behavior in the user preferences so that you must click the XDarwin icon in the floating switch window instead.)</p>
-<p>In rootless mode, the X window system and Aqua share your display. The root window of the X11 display is the size of the screen and contains all the other windows. The X11 root window is not displayed in rootless mode as Aqua handles the desktop background.</p>
-<h3>Multi-Button Mouse Emulation</h3>
-<p>Many X11 applications rely on the use of a 3-button mouse. You can emulate a 3-button mouse with a single button by holding down various modifier keys while you click the mouse button. This is controlled by settings in the "Multi-Button Mouse Emulation" section of the "General" preferences. By default, emulation is on and holding down the command key and clicking the mouse button will simulate clicking the second mouse button. Holding down the option key and clicking will simulate the third button. You can change to any combination of modifiers to emulate buttons two and three in the preferences. Note, even if the modifiers keys are mapped to some other key with xmodmap, you still must use the actual keys specified in the preferences for multi-button mouse emulation.</p>
-
-<h2><a NAME="path">Setting Your Path</a></h2>
-<p>Your path is the list of directories to be searched for executable commands. The X11 commands are located in <code>/usr/X11R6/bin</code>, which needs to be added to your path. XDarwin does this for you by default and can also add additional directories where you have installed command line applications.</p>
-<p>More experienced users will have already set their path correctly using the initialization files for their shell. In this case, you can inform XDarwin not to modify your path in the preferences. XDarwin launches the initial X11 clients in the user's default login shell. (An alternate shell can also be specified in the preferences.) The way to set the path depends on the shell you are using. This is described in the man page documentation for the shell.</p>
-<p>In addition you may also want to add the X11 man pages to the list of pages to be searched when you are looking for documentation. The X11 man pages are located in <code>/usr/X11R6/man</code> and the <code>MANPATH</code> environment variable contains the list of directories to search.</p>
-
-<h2><a NAME="prefs">User Preferences</a></h2>
-<p>A number of options may be set from the user preferences, accessible from the "Preferences..." menu item in the "XDarwin" menu. The options listed as start up options will not take effect until you have restarted XDarwin. All other options take effect immediately. The various options are described below:</p>
-<h3>General</h3>
-<ul>
-    <li><b>Use System beep for X11:</b> When enabled the standard Mac OS X alert sound is used as the X11 bell. When disabled (default) a simple tone is used.</li>
-    <li><b>Allow X11 to change mouse acceleration:</b> In a standard X window system implementation, the window manager can change the mouse acceleration. This can lead to confusion as the mouse acceleration may be set to different values by the Mac OS X System Preferences and the X window manager. By default, X11 is not allowed to change the mouse acceleration to avoid this problem.</li>
-    <li><b>Multi-Button Mouse Emulation:</b> This is described above under <a HREF="#usage">Usage</a>. When emulation is enabled the selected modifiers must be held down when the mouse button is pushed to emulate the second or third mouse buttons.</li>
-</ul>
-<h3>Start Up</h3>
-<ul>
-    <li><b>Default Mode:</b> If the user does not indicate whether to run in full screen or rootless mode, the mode specified here will be used.</li>
-    <li><b>Show mode pick panel on startup:</b> By default, a panel is displayed when XDarwin is started to allow the user to choose between full screen or rootless mode. If this option is turned off, the default mode will be started automatically.</li>
-    <li><b>X11 Display number:</b> X11 allows there to be multiple displays managed by separate X servers on a single computer. The user may specify an integer display number for XDarwin to use if more than one X server is going to be run simultaneously.</li>
-    <li><b>Allow Xinerama multiple monitor support:</b> XDarwin supports multiple monitors with Xinerama, which treats all monitors as being part of one large rectangular screen. You can disable Xinerama with this option, but currently XDarwin does not handle multiple monitors correctly without it. If you only have a single monitor, Xinerama is automatically disabled.</li>
-    <li><b>Keymapping File:</b> A keymapping file is read at startup and translated to an X11 keymap. Keymapping files, available for a wide variety of languages, are found in <code>/System/Library/Keyboards</code>.</li>
-    <li><b>Starting First X11 Clients:</b> When XDarwin is started from the Finder, it will run <code>xinit</code> to launch the X window manager and other X clients. (See "<code>man xinit</code>" for more information.) Before XDarwin runs <code>xinit</code> it will add the specified directories to the user's path. By default only <code>/usr/X11R6/bin</code> is added. Additional directories may added, separated by a colon. The X clients are started in the user's default login shell so that the user's shell initialization files are read. If desired, an alternate shell may be specified.</li>
-</ul>
-<h3>Full Screen</h3>
-<ul>
-    <li><b>Key combination button:</b> Click this button and then press any number of modifiers followed by a standard key to change the key combination to switch between Aqua and X11.</li>
-    <li><b>Click on icon in Dock switches to X11:</b> Enable this to activate switching to X11 by clicking on the XDarwin icon in the Dock. On some versions of Mac OS X, switching by clicking in the Dock can cause the cursor to disappear on returning to Aqua.</li>
-    <li><b>Show help on startup:</b> This will show an introductory splash screen when XDarwin is started in full screen mode.</li>
-    <li><b>Color bit depth:</b> In full screen mode, the X11 display can use a different color bit depth than is used by Aqua. If "Current" is specified, the depth used by Aqua when XDarwin starts will be used. Otherwise 8, 15, or 24 bits may be specified.</li>
-</ul>
-
-<h2><a NAME="license">License</a></h2>
-The main license for XDarwin is based on the traditional MIT X11 / X Consortium License, which does not impose any conditions on modification or redistribution of source code or binaries other than requiring that copyright/license notices are left intact. For more information and additional copyright/licensing notices covering some sections of the code, please refer to the source code.
-<H3><A NAME="3"></A>X Consortium License</H3>
-<p>Copyright (C) 1996 X Consortium</p>
-<p>Permission is hereby granted, free of charge, to any person obtaining a 
-copy of this software and associated documentation files (the "Software"),
-to deal in the Software without restriction, including without
-limitation the rights to use, copy, modify, merge, publish, distribute,
-sublicense, and/or sell copies of the Software, and to permit persons to
-whom the Software is furnished to do so, subject to the following conditions:</p>
-<p>The above copyright notice and this permission notice shall be included
-in all copies or substantial portions of the Software.</p>
-<p>THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT
-SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
-IN THE SOFTWARE.</p>
-<p>Except as contained in this notice, the name of the X Consortium shall
-not be used in advertising or otherwise to promote the sale, use or
-other dealings in this Software without prior written authorization from
-the X Consortium.</p>
-<p>X Window System is a trademark of X Consortium, Inc.</p>
-</body>
-</html>
diff --git a/hw/darwin/bundle/Info.plist b/hw/darwin/bundle/Info.plist
deleted file mode 100644
index bfef48d..0000000
--- a/hw/darwin/bundle/Info.plist
+++ /dev/null
@@ -1,66 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
-	<key>CFBundleDevelopmentRegion</key>
-	<string>English</string>
-	<key>CFBundleDocumentTypes</key>
-	<array>
-		<dict>
-			<key>CFBundleTypeExtensions</key>
-			<array>
-				<string>x11app</string>
-			</array>
-			<key>CFBundleTypeName</key>
-			<string>X11 Application</string>
-			<key>CFBundleTypeOSTypes</key>
-			<array>
-				<string>****</string>
-			</array>
-			<key>CFBundleTypeRole</key>
-			<string>Viewer</string>
-		</dict>
-		<dict>
-			<key>CFBundleTypeExtensions</key>
-			<array>
-				<string>tool</string>
-				<string>*</string>
-			</array>
-			<key>CFBundleTypeName</key>
-			<string>UNIX Application</string>
-			<key>CFBundleTypeOSTypes</key>
-			<array>
-				<string>****</string>
-			</array>
-			<key>CFBundleTypeRole</key>
-			<string>Viewer</string>
-		</dict>
-	</array>
-	<key>CFBundleExecutable</key>
-	<string>XDarwin</string>
-	<key>CFBundleGetInfoString</key>
-	<string>XDarwin 1.4.0, X.Org Foundation</string>
-	<key>CFBundleIconFile</key>
-	<string>XDarwin.icns</string>
-	<key>CFBundleIdentifier</key>
-	<string>org.x.XDarwin</string>
-	<key>CFBundleInfoDictionaryVersion</key>
-	<string>6.0</string>
-	<key>CFBundleName</key>
-	<string>XDarwin</string>
-	<key>CFBundlePackageType</key>
-	<string>APPL</string>
-	<key>CFBundleShortVersionString</key>
-	<string>XDarwin 1.4.0</string>
-	<key>CFBundleSignature</key>
-	<string>????</string>
-	<key>CFBundleVersion</key>
-	<string></string>
-	<key>NSHelpFile</key>
-	<string>XDarwinHelp.html</string>
-	<key>NSMainNibFile</key>
-	<string>MainMenu</string>
-	<key>NSPrincipalClass</key>
-	<string>XApplication</string>
-</dict>
-</plist>
diff --git a/hw/darwin/bundle/Japanese.lproj/Credits.rtf b/hw/darwin/bundle/Japanese.lproj/Credits.rtf
deleted file mode 100644
index cf9eae2..0000000
--- a/hw/darwin/bundle/Japanese.lproj/Credits.rtf
+++ /dev/null
@@ -1,193 +0,0 @@
-{\rtf1\mac\ansicpg10001\cocoartf102
-{\fonttbl\f0\fnil\fcharset78 HiraKakuPro-W3;\f1\fswiss\fcharset77 Helvetica;\f2\fswiss\fcharset77 Helvetica-Bold;
-\f3\fswiss\fcharset77 Helvetica-Oblique;}
-{\colortbl;\red255\green255\blue255;}
-\vieww13980\viewh11160\viewkind0
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural
-
-\f0\fs24 \cf0 \'82\'b1\'82\'cc\'90\'bb\'95\'69\'82\'cd 
-\f1 XFree86 
-\f0 \'83\'76\'83\'8d\'83\'57\'83\'46\'83\'4e\'83\'67
-\f1 (http://www.xfree86.org/)
-\f0 \'82\'a8\'82\'e6\'82\'d1\'82\'bb\'82\'cc\'8d\'76\'8c\'a3\'8e\'d2\'82\'c9\'82\'e6\'82\'c1\'82\'c4\'8a\'4a\'94\'ad\'82\'b3\'82\'ea\'82\'bd\'83\'5c\'83\'74\'83\'67\'83\'45\'83\'46\'83\'41\'82\'f0\'8a\'dc\'82\'f1\'82\'c5\'82\'a2\'82\'dc\'82\'b7\'81\'42\'8e\'9f\'82\'cc\'90\'6c\'81\'58\'82\'cd Darwin
-\f1 /Mac OS X 
-\f0 \'82\'cc\'83\'54\'83\'7c\'81\'5b\'83\'67\'82\'c9\'8d\'76\'8c\'a3\'82\'b5\'82\'dc\'82\'b5\'82\'bd\'81\'42
-\f1 \
-\
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc
-
-\f2\b \cf0 Contributors to Xorg Foundation Release:
-\f1\b0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
-\cf0 Kaleb KEITHLEY\
-     
-\f0 \'8d\'b6\'89\'45\'82\'cc Ctrl,Alt(Option),Meta(Command) \'82\'a8\'82\'e6\'82\'d1 Shift \'83\'4c\'81\'5b\'82\'cc\'93\'ae\'8d\'ec
-\f1 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
-
-\f2\b \cf0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc
-\cf0 Contributors to XFree86 4.4:
-\f1\b0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
-\cf0 John Harper
-\f3\i \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
-
-\f0\i0 \cf0    \'83\'8b\'81\'5b\'83\'67\'83\'8c\'83\'58 \'83\'41\'83\'4e\'83\'5a\'83\'89\'83\'8c\'81\'5b\'83\'56\'83\'87\'83\'93 \'82\'a8\'82\'e6\'82\'d1 Apple-WM \'8a\'67\'92\'a3
-\f1 \
-Torrey T. Lyons\
-     
-\f0 \'83\'76\'83\'8d\'83\'57\'83\'46\'83\'4e\'83\'67 \'83\'8a\'81\'5b\'83\'5f\'81\'5b\
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
-
-\f2\b \cf0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc
-\cf0 Additional XonX Contributors to XFree86 4.3:
-\f1\b0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
-\cf0 Fabr\'92cio Luis de Castro\
-     
-\f0 \'83\'7c\'83\'8b\'83\'67\'83\'4b\'83\'8b\'8c\'ea\'83\'8d\'81\'5b\'83\'4a\'83\'89\'83\'43\'83\'59
-\f1 \
-Michael Oland\
-     
-\f0 \'90\'56\'82\'b5\'82\'a2 
-\f1 XDarwin 
-\f0 \'83\'41\'83\'43\'83\'52\'83\'93
-\f1 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
-
-\f2\b \cf0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc
-\cf0 XonX Contributors to XFree86 4.2:
-\f1\b0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
-\cf0 Rob Braun\
-     Darwin x86
-\f3\i  
-\f0\i0 \'83\'54\'83\'7c\'81\'5b\'83\'67
-\f1 \
-Pablo Di Noto\
-
-\f3\i      
-\f0\i0 \'83\'58\'83\'79\'83\'43\'83\'93\'8c\'ea\'83\'8d\'81\'5b\'83\'4a\'83\'89\'83\'43\'83\'59
-\f1 \
-Paul Edens\
-
-\f3\i      
-\f0\i0 \'83\'49\'83\'89\'83\'93\'83\'5f\'8c\'ea\'83\'8d\'81\'5b\'83\'4a\'83\'89\'83\'43\'83\'59
-\f1 \
-Kyunghwan Kim\
-
-\f3\i      
-\f0\i0 \'8a\'d8\'8d\'91\'8c\'ea\'83\'8d\'81\'5b\'83\'4a\'83\'89\'83\'43\'83\'59
-\f1 \
-Mario Klebsch\
-     
-\f0 \'94\'f1US\'83\'4c\'81\'5b\'83\'7b\'81\'5b\'83\'68 \'83\'54\'83\'7c\'81\'5b\'83\'67
-\f1 \
-Torrey T. Lyons\
-     
-\f0 \'83\'76\'83\'8d\'83\'57\'83\'46\'83\'4e\'83\'67 \'83\'8a\'81\'5b\'83\'5f\'81\'5b
-\f1 \
-Andreas Monitzer\
-     
-\f0 \'83\'68\'83\'43\'83\'63\'8c\'ea\'83\'8d\'81\'5b\'83\'4a\'83\'89\'83\'43\'83\'59
-\f1 \
-Patrik Montgomery\
-
-\f3\i      
-\f0\i0 \'83\'58\'83\'45\'83\'46\'81\'5b\'83\'66\'83\'93\'8c\'ea\'83\'8d\'81\'5b\'83\'4a\'83\'89\'83\'43\'83\'59
-\f1 \
-Greg Parker\
-     
-\f0 \'83\'8b\'81\'5b\'83\'67\'83\'8c\'83\'58 \'83\'54\'83\'7c\'81\'5b\'83\'67
-\f1 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
-
-\f0 \cf0 \'93\'63\'92\'86 \'8f\'72\'8c\'f5
-\f1 \
-     
-\f0 \'93\'fa\'96\'7b\'8c\'ea\'83\'8d\'81\'5b\'83\'4a\'83\'89\'83\'43\'83\'59
-\f1 \
-Olivier Verdier\
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
-
-\f3\i \cf0      
-\f0\i0 \'83\'74\'83\'89\'83\'93\'83\'58\'8c\'ea\'83\'8d\'81\'5b\'83\'4a\'83\'89\'83\'43\'83\'59
-\f1 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
-
-\f2\b \cf0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc
-\cf0 Special Thanks:
-\f1\b0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
-\cf0 Devin Poolman and Zero G Software, Inc.\
-
-\f3\i      
-\f0\i0 \'83\'43\'83\'93\'83\'58\'83\'67\'81\'5b\'83\'89
-\f1 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
-
-\f2\b \cf0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc
-\cf0 XonX Team Members\
-Contributing to XFree86 4.1:
-\f1\b0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
-\cf0 Rob Braun\
-     Darwin x86 
-\f0 \'83\'54\'83\'7c\'81\'5b\'83\'67
-\f1 \
-Torrey T. Lyons\
-     
-\f0 \'83\'76\'83\'8d\'83\'57\'83\'46\'83\'4e\'83\'67 \'83\'8a\'81\'5b\'83\'5f\'81\'5b
-\f1 \
-Andreas Monitzer\
-     Cocoa 
-\f0 \'94\'c5 XDarwin \'83\'74\'83\'8d\'83\'93\'83\'67\'83\'47\'83\'93\'83\'68
-\f1 \
-Greg Parker\
-     
-\f0 \'8d\'c5\'8f\'89\'82\'cc Quartz \'83\'43\'83\'93\'83\'76\'83\'8a\'83\'81\'83\'93\'83\'67
-\f1 \
-Christoph Pfisterer\
-     
-\f0 \'8b\'a4\'97\'4c\'83\'89\'83\'43\'83\'75\'83\'89\'83\'8a
-\f1 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
-
-\f0 \cf0 \'93\'63\'92\'86 \'8f\'72\'8c\'f5
-\f1 \
-     
-\f0 \'93\'fa\'96\'7b\'8c\'ea\'83\'8d\'81\'5b\'83\'4a\'83\'89\'83\'43\'83\'59
-\f1 \
-\
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc
-
-\f2\b \cf0 Special Thanks:
-\f1\b0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
-\cf0 Tiago Ribeiro\
-     XDarwin 
-\f0 \'83\'41\'83\'43\'83\'52\'83\'93
-\f1 \
-\
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc
-
-\f2\b \cf0 History:
-\f1\b0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
-\cf0 John Carmack\
-     
-\f0 XFree86 \'82\'cc Mac OS X Server \'82\'d6\'82\'cc\'8d\'c5\'8f\'89\'82\'cc\'88\'da\'90\'41
-\f1 \
-Dave Zarzycki\
-     XFree86 4.0 
-\f0 \'82\'f0 Darwin 1.0 \'82\'c9\'88\'da\'90\'41
-\f1 \
-Torrey T. Lyons\
-     XFree86 4.0.2 
-\f0 \'83\'76\'83\'8d\'83\'57\'83\'46\'83\'4e\'83\'67\'82\'d6\'82\'cc\'93\'9d\'8d\'87}
\ No newline at end of file
diff --git a/hw/darwin/bundle/Japanese.lproj/Localizable.strings b/hw/darwin/bundle/Japanese.lproj/Localizable.strings
deleted file mode 100644
index c5c26d6..0000000
Binary files a/hw/darwin/bundle/Japanese.lproj/Localizable.strings and /dev/null differ
diff --git a/hw/darwin/bundle/Japanese.lproj/MainMenu.nib/classes.nib b/hw/darwin/bundle/Japanese.lproj/MainMenu.nib/classes.nib
deleted file mode 100644
index 77f345a..0000000
--- a/hw/darwin/bundle/Japanese.lproj/MainMenu.nib/classes.nib
+++ /dev/null
@@ -1,72 +0,0 @@
-{
-    IBClasses = (
-        {
-            ACTIONS = {showHelp = id; }; 
-            CLASS = FirstResponder; 
-            LANGUAGE = ObjC; 
-            SUPERCLASS = NSObject; 
-        }, 
-        {
-            ACTIONS = {close = id; pickFile = id; saveChanges = id; setKey = id; }; 
-            CLASS = Preferences; 
-            LANGUAGE = ObjC; 
-            OUTLETS = {
-                addToPathButton = id; 
-                addToPathField = id; 
-                button2ModifiersMatrix = id; 
-                button3ModifiersMatrix = id; 
-                depthButton = id; 
-                displayField = id; 
-                dockSwitchButton = id; 
-                fakeButton = id; 
-                keymapFileField = id; 
-                modeMatrix = id; 
-                modeWindowButton = id; 
-                mouseAccelChangeButton = id; 
-                startupHelpButton = id; 
-                switchKeyButton = id; 
-                systemBeepButton = id; 
-                useDefaultShellMatrix = id; 
-                useOtherShellField = id; 
-                useXineramaButton = id; 
-                window = id; 
-            }; 
-            SUPERCLASS = NSObject; 
-        }, 
-        {
-            CLASS = XApplication; 
-            LANGUAGE = ObjC; 
-            OUTLETS = {preferences = id; xserver = id; }; 
-            SUPERCLASS = NSApplication; 
-        }, 
-        {
-            ACTIONS = {
-                bringAllToFront = id; 
-                closeHelpAndShow = id; 
-                itemSelected = id; 
-                nextWindow = id; 
-                previousWindow = id; 
-                showAction = id; 
-                showSwitchPanel = id; 
-                startFullScreen = id; 
-                startRootless = id; 
-            }; 
-            CLASS = XServer; 
-            LANGUAGE = ObjC; 
-            OUTLETS = {
-                dockMenu = NSMenu; 
-                helpWindow = NSWindow; 
-                modeWindow = NSWindow; 
-                startFullScreenButton = NSButton; 
-                startRootlessButton = NSButton; 
-                startupHelpButton = NSButton; 
-                startupModeButton = NSButton; 
-                switchWindow = NSPanel; 
-                windowMenu = NSMenu; 
-                windowSeparator = NSMenuItem; 
-            }; 
-            SUPERCLASS = NSObject; 
-        }
-    ); 
-    IBVersion = 1; 
-}
\ No newline at end of file
diff --git a/hw/darwin/bundle/Japanese.lproj/MainMenu.nib/objects.nib b/hw/darwin/bundle/Japanese.lproj/MainMenu.nib/objects.nib
deleted file mode 100644
index 3570027..0000000
Binary files a/hw/darwin/bundle/Japanese.lproj/MainMenu.nib/objects.nib and /dev/null differ
diff --git a/hw/darwin/bundle/Japanese.lproj/Makefile.am b/hw/darwin/bundle/Japanese.lproj/Makefile.am
deleted file mode 100644
index 2cc5248..0000000
--- a/hw/darwin/bundle/Japanese.lproj/Makefile.am
+++ /dev/null
@@ -1,37 +0,0 @@
-BINDIR = ${bindir}
-include $(top_srcdir)/cpprules.in
-XINITDIR = $(libdir)/X11/xinit
-XDEFS = \
-        -DX_VERSION="$(PLIST_VERSION_STRING)" \
-        -DX_PRE_RELEASE="$(PRE)" \
-        -DX_REL_DATE="$(XORG_DATE)" \
-        -DX_VENDOR_NAME="$(VENDOR_STRING)" \
-        -DX_VENDOR_LINK="$(PLIST_VENDOR_WEB)"
-
-
-resourcesdir = @APPLE_APPLICATIONS_DIR@/XDarwin.app/Contents/Resources
-
-Japaneselprojdir = $(resourcesdir)/Japanese.lproj
-
-Japaneselproj_DATA = \
-		    XDarwinHelp.html \
-		    InfoPlist.strings \
-		    Credits.rtf Localizable.strings
-
-Japaneselprojnibdir = $(Japaneselprojdir)/MainMenu.nib
-Japaneselprojnib_DATA = MainMenu.nib/classes.nib MainMenu.nib/objects.nib
-
-InfoPlist.strings: $(srcdir)/../English.lproj/InfoPlist.strings.cpp
-	 $(RAWCPP) $(RAWCPPFLAGS) $(XDEFS) $(CPP_FILES_FLAGS) $< | $(CPP_SED_MAGIC) | $(SED) -e's/__quote__/"/g' > $@
-
-XDarwinHelp.html: XDarwinHelp.html.cpp
-	$(RAWCPP) $(RAWCPPFLAGS) $(XDEFS) $(CPP_FILES_FLAGS) $< | $(CPP_SED_MAGIC) > $@
-
-CLEANFILES = XDarwinHelp.html InfoPlist.strings 
-
-EXTRA_DIST = \
-	Credits.rtf Localizable.strings \
-	Localizable.strings \
-	MainMenu.nib/classes.nib \
-	MainMenu.nib/objects.nib \
-	XDarwinHelp.html.cpp
diff --git a/hw/darwin/bundle/Japanese.lproj/XDarwinHelp.html.cpp b/hw/darwin/bundle/Japanese.lproj/XDarwinHelp.html.cpp
deleted file mode 100644
index 6653f5b..0000000
--- a/hw/darwin/bundle/Japanese.lproj/XDarwinHelp.html.cpp
+++ /dev/null
@@ -1,141 +0,0 @@
-<!-- $XFree86: xc/programs/Xserver/hw/darwin/bundle/Japanese.lproj/XDarwinHelp.html.cpp,v 1.4 2001/11/27 07:27:46 torrey Exp $ -->
-
-<html>
-<head>
-<META http-equiv="Content-Type" content="text/html; charset=EUC-JP">
-<title>
-XDarwin Help</title></head>
-<body>
-<center>
-    <h1>XDarwin X Server for Mac OS X</h1>
-    X_VENDOR_NAME X_VERSION<br>
-    Release Date: X_REL_DATE
-</center>
-<h2>Ìܼ¡</h2>
-<ol>
-    <li><A HREF="#notice">Ãí°Õ»ö¹à</A></li>
-    <li><A HREF="#usage">»ÈÍÑË¡</A></li>
-    <li><A HREF="#path">¥Ñ¥¹¤ÎÀßÄê</A></li>
-    <li><A HREF="#prefs">´Ä¶­ÀßÄê</A></li>
-    <li><A HREF="#license">¥é¥¤¥»¥ó¥¹</A></li>
-</ol>
-<center>
-        <h2><a NAME="notice">Ãí°Õ»ö¹à</a></h2>
-</center>
-<blockquote>
-#if X_PRE_RELEASE
-¤³¤ì¤Ï¡¤XDarwin ¤Î¥×¥ì¥ê¥ê¡¼¥¹¥Ð¡¼¥¸¥ç¥ó¤Ç¤¢¤ê¡¤¤¤¤«¤Ê¤ë¾ì¹ç¤Ë¤ª¤¤¤Æ¤â¥µ¥Ý¡¼¥È¤µ¤ì¤Þ¤»¤ó¡£ 
-¥Ð¥°¤ÎÊó¹ð¤ä¥Ñ¥Ã¥Á¤¬ SourceForge ¤Î <A HREF="http://sourceforge.net/projects/xonx/">XonX ¥×¥í¥¸¥§¥¯¥È¥Ú¡¼¥¸</A>¤ËÄó½Ð¤µ¤ì¤Æ¤¤¤ë¤«¤â¤·¤ì¤Þ¤»¤ó¡£
-¥×¥ì¥ê¥ê¡¼¥¹¥Ð¡¼¥¸¥ç¥ó¤Î¥Ð¥°¤òÊó¹ð¤¹¤ëÁ°¤Ë¡¤<A HREF="http://sourceforge.net/projects/xonx/">XonX</A> ¥×¥í¥¸¥§¥¯¥È¥Ú¡¼¥¸¤Þ¤¿¤Ï X_VENDOR_LINK¤ÇºÇ¿·ÈǤΥÁ¥§¥Ã¥¯¤ò¤·¤Æ²¼¤µ¤¤¡£
-#else
-¤â¤·¡¤¥µ¡¼¥Ð¡¼¤¬ 6 -12 ¥ö·î°Ê¾åÁ°¤Î¤â¤Î¤«¡¤¤Þ¤¿¤Ï¤¢¤Ê¤¿¤Î¥Ï¡¼¥É¥¦¥§¥¢¤¬¾åµ­¤ÎÆüÉÕ¤è¤ê¤â¿·¤·¤¤¤â¤Î¤Ê¤é¤Ð¡¤ÌäÂê¤òÊó¹ð¤¹¤ëÁ°¤Ë¤è¤ê¿·¤·¤¤¥Ð¡¼¥¸¥ç¥ó¤òõ¤·¤Æ¤ß¤Æ¤¯¤À¤µ¤¤¡£
-¥Ð¥°¤ÎÊó¹ð¤ä¥Ñ¥Ã¥Á¤¬ SourceForge ¤Î <A HREF="http://sourceforge.net/projects/xonx/">XonX ¥×¥í¥¸¥§¥¯¥È¥Ú¡¼¥¸</A>¤ËÄó½Ð¤µ¤ì¤Æ¤¤¤ë¤«¤â¤·¤ì¤Þ¤»¤ó¡£
-#endif
-</blockquote>
-<blockquote>
-ËÜ¥½¥Õ¥È¥¦¥§¥¢¤Ï¡¤<A HREF="#license">MIT X11/X Consortium License</A> ¤Î¾ò·ï¤Ë´ð¤Å¤­¡¤ÌµÊݾڤǡ¤¡Ö¤½¤Î¤Þ¤Þ¡×¤Î·Á¤Ç¶¡µë¤µ¤ì¤Þ¤¹¡£
-¤´»ÈÍѤˤʤëÁ°¤Ë¡¤<A HREF="#license">¥é¥¤¥»¥ó¥¹¾ò·ï</A>¤ò¤ªÆɤ߲¼¤µ¤¤¡£
-</blockquote>
-
-<h2><a NAME="usage">»ÈÍÑË¡</a></h2>
-<p>XDarwin ¤Ï¡¤ºÆÇÛÉÛ²Äǽ¤Ê¥ª¡¼¥×¥ó¥½¡¼¥¹¤Î <a HREF="http://www.x.org/">X Window System</a> ¤Î¤¿¤á¤Î X ¥µ¡¼¥Ð¡¼¤Î¼ÂÁõ¤Ç¤¹¡£¤³¤Î¥Ð¡¼¥¸¥ç¥ó¤Î XDarwin ¤Ï X_VENDOR_LINK ¤Ë¤è¤Ã¤ÆºîÀ®¤µ¤ì¤Þ¤·¤¿¡£XDarwin ¤Ï¡¤Mac OS X ¾å¤Ç¥Õ¥ë¥¹¥¯¥ê¡¼¥ó¥â¡¼¥É¤Þ¤¿¤Ï¥ë¡¼¥È¥ì¥¹¥â¡¼¥É¤ÇÆ°ºî¤·¤Þ¤¹¡£</p>
-
-<p>¥Õ¥ë¥¹¥¯¥ê¡¼¥ó¥â¡¼¥É¤Ç¤Ï¡¤X Window System ¤¬¥¢¥¯¥Æ¥£¥Ö¤Ê»þ¡¤¤½¤ì¤ÏÁ´²èÌ̤òÀêÍ­¤·¤Þ¤¹¡£
-¤¢¤Ê¤¿¤Ï¡¤Command-Option-A ¥­¡¼¤ò²¡¤¹¤³¤È¤Ë¤è¤Ã¤Æ Mac OS X ¥Ç¥¹¥¯¥È¥Ã¥×¤ØÀÚ¤êÂؤ¨¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£¤³¤Î¥­¡¼¤ÎÁȤ߹ç¤ï¤»¤Ï¡¤´Ä¶­ÀßÄê¤ÇÊѹ¹²Äǽ¤Ç¤¹¡£
-Mac OS X ¥Ç¥¹¥¯¥È¥Ã¥×¤«¤é X Window System ¤ØÀÚ¤êÂؤ¨¤ë¾ì¹ç¤Ï¡¤¥É¥Ã¥¯¤Ëɽ¼¨¤µ¤ì¤¿ XDarwin ¥¢¥¤¥³¥ó¤ò¥¯¥ê¥Ã¥¯¤·¤Æ²¼¤µ¤¤¡£
-¡Ê´Ä¶­ÀßÄê¤Ç¡¤¥Õ¥í¡¼¥Æ¥£¥ó¥°¡¦¥¦¥£¥ó¥É¥¦¤Ëɽ¼¨¤µ¤ì¤¿ XDarwin ¥¢¥¤¥³¥ó¤ò¥¯¥ê¥Ã¥¯¤¹¤ë¤è¤¦¤ËÊѹ¹¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£¡Ë</p>
-
-<p>¥ë¡¼¥È¥ì¥¹¥â¡¼¥É¤Ç¤Ï¡¤X Window System ¤È Aqua ¤Ï²èÌ̤ò¶¦Í­¤·¤Þ¤¹¡£
-X11 ¤¬É½¼¨¤¹¤ë¥ë¡¼¥È¥¦¥£¥ó¥É¥¦¤Ï²èÌ̤Υµ¥¤¥º¤Ç¤¢¤ê¡¤Â¾¤ÎÁ´¤Æ¤Î¥¦¥£¥ó¥É¥¦¤ò´Þ¤ó¤Ç¤¤¤Þ¤¹¡£
-Aqua ¤¬¥Ç¥¹¥¯¥È¥Ã¥×¤ÎÇطʤòÀ©¸æ¤¹¤ë¤Î¤Ç¡¤X11 ¤Î¥ë¡¼¥È¥¦¥£¥ó¥É¥¦¤Ï¥ë¡¼¥È¥ì¥¹¥â¡¼¥É¤Ç¤Ïɽ¼¨¤µ¤ì¤Þ¤»¤ó¡£</p>
-
-<h3>Ê£¿ô¥Ü¥¿¥ó¥Þ¥¦¥¹¤Î¥¨¥ß¥å¥ì¡¼¥·¥ç¥ó</h3>
-<p>¿¤¯¤Î X11 ¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤Ï¡¤3 ¥Ü¥¿¥ó¥Þ¥¦¥¹¤òɬÍפȤ·¤Þ¤¹¡£
-¤¢¤Ê¤¿¤Ï¥Þ¥¦¥¹¥Ü¥¿¥ó¤Î¥¯¥ê¥Ã¥¯¤ÈƱ»þ¤Ë¤¤¤¯¤Ä¤«¤Î½¤¾þ¥­¡¼¤ò²¡¤¹¤³¤È¤Ë¤è¤Ã¤Æ¡¤°ì¤Ä¤Î¥Ü¥¿¥ó¤Ç 3 ¥Ü¥¿¥ó¥Þ¥¦¥¹¤ò¥¨¥ß¥å¥ì¡¼¥·¥ç¥ó¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£
-¤³¤ì¤Ï¡¤´Ä¶­ÀßÄê¤Î¡Ö°ìÈÌÀßÄê¡×¤Î¡ÖÊ£¿ô¥Ü¥¿¥ó¥Þ¥¦¥¹¤Î¥¨¥ß¥å¥ì¡¼¥·¥ç¥ó¡×¥»¥¯¥·¥ç¥ó¤ÇÀßÄꤷ¤Þ¤¹¡£
-¥Ç¥Õ¥©¥ë¥È¤Ç¤Ï¡¤¥¨¥ß¥å¥ì¡¼¥·¥ç¥ó¤ÏÍ­¸ú¤Ç¡¤¥³¥Þ¥ó¥É¥­¡¼¤ò²¡¤·¤Ê¤¬¤é¥Þ¥¦¥¹¥Ü¥¿¥ó¤ò¥¯¥ê¥Ã¥¯¤¹¤ë¤³¤È¤ÏÂè 2 ¥Þ¥¦¥¹¥Ü¥¿¥ó¤Î¥¯¥ê¥Ã¥¯¤ËÁêÅö¤·¤Þ¤¹¡£
-¥ª¥×¥·¥ç¥ó¥­¡¼¤ò²¡¤·¤Ê¤¬¤é¥¯¥ê¥Ã¥¯¤¹¤ë¤³¤È¤ÏÂè 3 ¥Þ¥¦¥¹¥Ü¥¿¥ó¤Î¥¯¥ê¥Ã¥¯¤ËÁêÅö¤·¤Þ¤¹¡£
-¤¢¤Ê¤¿¤Ï¡¤´Ä¶­ÀßÄê¤Ç¥Ü¥¿¥ó 2 ¤È 3 ¤ò¥¨¥ß¥å¥ì¡¼¥È¤¹¤ë¤¿¤á¤Ë»ÈÍѤ¹¤ë½¤¾þ¥­¡¼¤ÎÁȹ礻¤òÊѹ¹¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£
-Ãí¡§½¤¾þ¥­¡¼¤ò xmodmap ¤Ç¾¤Î¥­¡¼¤Ë³ä¤êÅö¤Æ¤Æ¤¤¤ë¾ì¹ç¤Ç¤â¡¤Ê£¿ô¥Ü¥¿¥ó¥Þ¥¦¥¹¤Î¥¨¥ß¥å¥ì¡¼¥·¥ç¥ó¤Ç¤ÏËÜÍè¤Î¥³¥Þ¥ó¥É¥­¡¼¤ä¥ª¥×¥·¥ç¥ó¥­¡¼¤ò»È¤ï¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó¡£</p>
-
-<h2><a NAME="path">¥Ñ¥¹¤ÎÀßÄê</a></h2>
-<p>¥Ñ¥¹¤Ï¡¤ ¼Â¹Ô²Äǽ¤Ê¥³¥Þ¥ó¥É¤ò¸¡º÷¤¹¤ë¥Ç¥£¥ì¥¯¥È¥ê¤Î¥ê¥¹¥È¤Ç¤¹¡£
-X11 ¥Ð¥¤¥Ê¥ê¤Ï¡¤<code>/usr/X11R6/bin</code> ¤ËÃÖ¤«¤ì¤Þ¤¹¡£¤¢¤Ê¤¿¤Ï¤½¤ì¤ò¥Ñ¥¹¤Ë²Ã¤¨¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£
-XDarwin ¤Ï¡¤¤³¤ì¤ò¥Ç¥Õ¥©¥ë¥È¤Ç¹Ô¤¤¤Þ¤¹¡£¤Þ¤¿¡¤¤¢¤Ê¤¿¤¬¥³¥Þ¥ó¥É¥é¥¤¥ó¡¦¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤ò¥¤¥ó¥¹¥È¡¼¥ë¤·¤¿ÄɲäΥǥ£¥ì¥¯¥È¥ê¤ò²Ã¤¨¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£</p>
-
-<p>·Ð¸³Ë­¤«¤Ê¥æ¡¼¥¶¡¼¤Ï¡¤¤¹¤Ç¤Ë¼«¤é¤Î¥·¥§¥ë¤Î¤¿¤á¤Ë½é´ü²½¥Õ¥¡¥¤¥ë¤ò»ÈÍѤ·¤Æ¥Ñ¥¹¤òÀßÄꤷ¤Æ¤¤¤ë¤Ç¤·¤ç¤¦¡£
-¤³¤Î¾ì¹ç¡¤¤¢¤Ê¤¿¤Ï´Ä¶­ÀßÄê¤Ç XDarwin ¤¬¤¢¤Ê¤¿¤Î¥Ñ¥¹¤òÊѹ¹¤·¤Ê¤¤¤è¤¦¤ËÀßÄꤹ¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£
-XDarwin ¤Ï¡¤¥æ¡¼¥¶¡¼¤Î¥Ç¥Õ¥©¥ë¥È¤Î¥í¥°¥¤¥ó¥·¥§¥ë¤ÇºÇ½é¤Î X11 ¥¯¥é¥¤¥¢¥ó¥È¤ò³«»Ï¤·¤Þ¤¹¡£
-¡Ê´Ä¶­ÀßÄê¤ÇÂå¤ï¤ê¤Î¥·¥§¥ë¤ò»ØÄꤹ¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£¡Ë
-¥Ñ¥¹¤òÀßÄꤹ¤ëÊýË¡¤Ï¡¤¤¢¤Ê¤¿¤¬»ÈÍѤ·¤Æ¤¤¤ë¥·¥§¥ë¤Ë°Í¸¤·¤Þ¤¹¡£
-¤³¤ì¤Ï¡¤¥·¥§¥ë¤Î¥Þ¥Ë¥å¥¢¥ë¥Ú¡¼¥¸¥É¥­¥å¥á¥ó¥È¤Ëµ­ºÜ¤µ¤ì¤Æ¤¤¤Þ¤¹¡£
-
-<p>¤Þ¤¿¡¤¤¢¤Ê¤¿¤Ï¥É¥­¥å¥á¥ó¥È¤òõ¤·¤Æ¤¤¤ë»þ¡¤X11 ¤Î¥Þ¥Ë¥å¥¢¥ë¥Ú¡¼¥¸¤ò¸¡º÷¤µ¤ì¤ë¥Ú¡¼¥¸¤Î¥ê¥¹¥È¤ËÄɲä·¤¿¤¤¤È»×¤¦¤«¤â¤·¤ì¤Þ¤»¤ó¡£
-X11 ¤Î¥Þ¥Ë¥å¥¢¥ë¥Ú¡¼¥¸¤Ï <code>/usr/X11R6/man</code> ¤ËÃÖ¤«¤ì¤Þ¤¹¡£¤½¤·¤Æ <code>MANPATH</code> ´Ä¶­ÊÑ¿ô¤Ï¸¡º÷¤¹¤ë¥Ç¥£¥ì¥¯¥È¥ê¤Î¥ê¥¹¥È¤ò´Þ¤ó¤Ç¤¤¤Þ¤¹¡£</p>
-
-<h2><a NAME="prefs">´Ä¶­ÀßÄê</a></h2>
-<p>¡ÖXDarwin¡×¥á¥Ë¥å¡¼¤Î¡Ö´Ä¶­ÀßÄê...¡×¥á¥Ë¥å¡¼¹àÌܤ«¤é¥¢¥¯¥»¥¹¤Ç¤­¤ë´Ä¶­ÀßÄê¥Ñ¥Í¥ë¤Ç¡¤¤¤¤¯¤Ä¤«¤Î¥ª¥×¥·¥ç¥ó¤òÀßÄꤹ¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£
-¡Öµ¯Æ°¥ª¥×¥·¥ç¥ó¡×¤ÎÆâÍƤϡ¤XDarwin ¤òºÆµ¯Æ°¤¹¤ë¤Þ¤ÇÍ­¸ú¤È¤Ê¤ê¤Þ¤»¤ó¡£
-¾¤ÎÁ´¤Æ¤Î¥ª¥×¥·¥ç¥ó¤ÎÆâÍƤϡ¤Ä¾¤Á¤ËÍ­¸ú¤È¤Ê¤ê¤Þ¤¹¡£
-°Ê²¼¡¤¤½¤ì¤¾¤ì¤Î¥ª¥×¥·¥ç¥ó¤Ë¤Ä¤¤¤ÆÀâÌÀ¤·¤Þ¤¹:</p>
-
-<h3>°ìÈÌÀßÄê</h3>
-<ul>
-    <li><b>X11 ¤Ç¥·¥¹¥Æ¥à¤Î¥Ó¡¼¥×²»¤ò»ÈÍѤ¹¤ë:</b> ¥ª¥ó¤Î¾ì¹ç¡¤Mac OS X ¤Î¥Ó¡¼¥×²»¤¬ X11 ¤Î¥Ù¥ë¤È¤·¤Æ»ÈÍѤµ¤ì¤Þ¤¹¡£¥ª¥Õ¤Î¾ì¹ç¡Ê¥Ç¥Õ¥©¥ë¥È¡Ë¡¤¥·¥ó¥×¥ë ¥È¡¼¥ó¤¬»È¤ï¤ì¤Þ¤¹¡£</li>
-    <li><b>X11 ¤Î¥Þ¥¦¥¹¥¢¥¯¥»¥é¥ì¡¼¥·¥ç¥ó¤òÍ­¸ú¤Ë¤¹¤ë:</b> ɸ½àŪ¤Ê X Window System ¤Î¼ÂÁõ¤Ç¤Ï¡¤¥¦¥£¥ó¥É¥¦¥Þ¥Í¡¼¥¸¥ã¡¼¤Ï¥Þ¥¦¥¹¤Î²Ã®ÅÙ¤òÊѹ¹¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£
-    ¥Þ¥¦¥¹¤Î²Ã®ÅÙ¤Ë Mac OS X ¤Î¥·¥¹¥Æ¥à´Ä¶­ÀßÄê¤È X ¥¦¥£¥ó¥É¥¦¥Þ¥Í¡¼¥¸¥ã¡¼¤¬°Û¤Ê¤ëÃͤòÀßÄꤷ¤¿¾ì¹ç¡¤¤³¤ì¤Ïº®Íð¤ò¾·¤­¤Þ¤¹¡£
-    ¤³¤ÎÌäÂê¤òÈò¤±¤ë¤¿¤á¡¤¥Ç¥Õ¥©¥ë¥È¤Ç¤Ï X11 ¤Î¥Þ¥¦¥¹¥¢¥¯¥»¥é¥ì¡¼¥·¥ç¥ó¤òÍ­¸ú¤È¤·¤Þ¤»¤ó¡£</li>
-    <li><b>Ê£¿ô¥Ü¥¿¥ó¥Þ¥¦¥¹¤Î¥¨¥ß¥å¥ì¡¼¥·¥ç¥ó:</b> <a HREF="#usage">»ÈÍÑË¡</a>¤ò»²¾È¤·¤Æ²¼¤µ¤¤¡£¥ª¥ó¤Î¾ì¹ç¡¤¥Þ¥¦¥¹¥Ü¥¿¥ó¤¬Âè 2 ¤Þ¤¿¤ÏÂè 3 ¤Î¥Þ¥¦¥¹¥Ü¥¿¥ó¤ò¥¨¥ß¥å¥ì¡¼¥È¤¹¤ë»þ¤Ë¡¤ÁªÂò¤·¤¿½¤¾þ¥­¡¼¤òƱ»þ¤Ë²¡¤·¤Þ¤¹¡£</li>
-</ul>
-
-<h3>µ¯Æ°¥ª¥×¥·¥ç¥ó</h3>
-<ul>
-    <li><b>²èÌ̥⡼¥É:</b> ¥æ¡¼¥¶¡¼¤¬¥Õ¥ë¥¹¥¯¥ê¡¼¥ó¥â¡¼¥É¤Þ¤¿¤Ï¥ë¡¼¥È¥ì¥¹¥â¡¼¥É¤Î¤É¤Á¤é¤ò»ÈÍѤ¹¤ë¤«¤ò»ØÄꤷ¤Ê¤¤¾ì¹ç¡¤¤³¤³¤Ç»ØÄꤵ¤ì¤¿¥â¡¼¥É¤¬»È¤ï¤ì¤Þ¤¹¡£</li>
-    <li><b>µ¯Æ°»þ¤Ë¥â¡¼¥ÉÁªÂò¥Ñ¥Í¥ë¤òɽ¼¨¤¹¤ë:</b> ¥Ç¥Õ¥©¥ë¥È¤Ç¤Ï¡¤XDarwin ¤Îµ¯Æ°»þ¤Ë¥æ¡¼¥¶¡¼¤¬¥Õ¥ë¥¹¥¯¥ê¡¼¥ó¥â¡¼¥É¤Þ¤¿¤Ï¥ë¡¼¥È¥ì¥¹¥â¡¼¥É¤Î¤É¤Á¤é¤ò»ÈÍѤ¹¤ë¤«¤òÁªÂò¤¹¤ë¥Ñ¥Í¥ë¤òɽ¼¨¤·¤Þ¤¹¡£¤³¤Î¥ª¥×¥·¥ç¥ó¤¬¥ª¥Õ¤Î¾ì¹ç¡¤²èÌ̥⡼¥É¤Ç»ØÄꤷ¤¿¥â¡¼¥É¤Çµ¯Æ°¤·¤Þ¤¹¡£</li>
-    <li><b>X11 ¥Ç¥£¥¹¥×¥ì¥¤ÈÖ¹æ:</b> X11¤Ï¡¤°ì¤Ä¤Î¥³¥ó¥Ô¥å¡¼¥¿¾å¤ÇÊÌ¡¹¤Î X ¥µ¡¼¥Ð¡¼¤¬´ÉÍý¤¹¤ëÊ£¿ô¤Î¥Ç¥£¥¹¥×¥ì¥¤¤¬Â¸ºß¤¹¤ë¤³¤È¤òµö¤·¤Þ¤¹¡£Ê£¿ô¤Î X ¥µ¡¼¥Ð¡¼¤¬Æ±»þ¤Ë¼Â¹Ô¤·¤Æ¤¤¤ë»þ¡¤XDarwin ¤¬»ÈÍѤ¹¤ë¥Ç¥£¥¹¥×¥ì¥¤¤ÎÈÖ¹æ¤ò»ØÄꤹ¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£</li>
-    <li><b>Xinerama ¥Þ¥ë¥Á¥â¥Ë¥¿¥µ¥Ý¡¼¥È¤òÍ­¸ú¤Ë¤¹¤ë:</b> XDarwin ¤Ï¡¤Xinerama ¥Þ¥ë¥Á¥â¥Ë¥¿¤ò¥µ¥Ý¡¼¥È¤·¤Þ¤¹¡£¤½¤ì¤ÏÁ´¤Æ¤Î¥â¥Ë¥¿¤ò°ì¤Ä¤ÎÂ礭¤Ê²èÌ̤ΰìÉô¤È¤ß¤Ê¤·¤Þ¤¹¡£¤¢¤Ê¤¿¤Ï¤³¤Î¥ª¥×¥·¥ç¥ó¤Ç Xinerama ¤ò̵¸ú¤Ë¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£¤¿¤À¤·¡¤¸½ºß XDarwin ¤Ï¤½¤ì̵¤·¤ÇÀµ¤·¤¯Ê£¿ô¤Î¥â¥Ë¥¿¤ò°·¤¦¤³¤È¤¬¤Ç¤­¤Þ¤»¤ó¡£¤â¤·¡¤¤¢¤Ê¤¿¤¬°ì¤Ä¤Î¥â¥Ë¥¿¤ò»È¤¦¤À¤±¤Ê¤é¤Ð¡¤Xinerama ¤Ï¼«Æ°Åª¤Ë̵¸ú¤È¤Ê¤ê¤Þ¤¹¡£</li>
-    <li><b>¥­¡¼¥Þ¥Ã¥Ô¥ó¥°¥Õ¥¡¥¤¥ë:</b> ¥­¡¼¥Þ¥Ã¥Ô¥ó¥°¥Õ¥¡¥¤¥ë¤Ïµ¯Æ°»þ¤ËÆɤ߹þ¤Þ¤ì¡¤X11 ¥­¡¼¥Þ¥Ã¥×¤ËÊÑ´¹¤µ¤ì¤Þ¤¹¡£Â¾¸À¸ì¤ËÂбþ¤·¤¿¥­¡¼¥Þ¥Ã¥Ô¥ó¥°¥Õ¥¡¥¤¥ë¤Ï <code>/System/Library/Keyboards</code> ¤Ë¤¢¤ê¤Þ¤¹¡£¡ÊÌõÃí¡§¥­¡¼¥Þ¥Ã¥Ô¥ó¥°¤Ç Japanese ¤òÁªÂò¤¹¤ë¤È¡¤°ìÉô¤Î¥­¡¼¤¬¸ú¤«¤Ê¤¤Åù¤ÎÉÔ¶ñ¹ç¤¬È¯À¸¤¹¤ë¤³¤È¤¬¤¢¤ê¤Þ¤¹¡£¤³¤Î¾ì¹ç¤Ï USA ¤òÁªÂò¤·¤¿¾å¤Ç ~/.Xmodmap ¤òŬÍѤ·¤Æ²¼¤µ¤¤¡£¡Ë</li>
-    <li><b>ºÇ½é¤Î X11 ¥¯¥é¥¤¥¢¥ó¥È¤Îµ¯Æ°:</b> XDarwin ¤¬ Finder¤«¤éµ¯Æ°¤¹¤ë»þ¡¤X ¥¦¥£¥ó¥É¥¦¥Þ¥Í¡¼¥¸¥ã¡¼¤È X ¥¯¥é¥¤¥¢¥ó¥È¤Îµ¯Æ°¤Ï <code>xinit</code> ¤ò¼Â¹Ô¤·¤Þ¤¹¡£¡Ê¾ÜºÙ¤Ï "<code>man xinit</code>" ¤ò»²¾È¤·¤Æ²¼¤µ¤¤¡£¡ËXDarwin ¤Ï <code>xinit</code> ¤ò¼Â¹Ô¤¹¤ëÁ°¤Ë¡¤»ØÄꤵ¤ì¤¿¥Ç¥£¥ì¥¯¥È¥ê¤ò¥æ¡¼¥¶¡¼¤Î¥Ñ¥¹¤ËÄɲä·¤Þ¤¹¡£¥Ç¥Õ¥©¥ë¥È¤Ç¤Ï <code>/usr/X11R6/bin</code> ¤À¤±¤òÄɲä·¤Þ¤¹¡£Â¾¤Î¥Ç¥£¥ì¥¯¥È¥ê¤òÄɲä·¤¿¤¤¾ì¹ç¤Ï¡¤¥³¥í¥ó¤Ç¶èÀڤäƻØÄꤷ¤Þ¤¹¡£¥æ¡¼¥¶¡¼¤Î¥·¥§¥ë½é´ü²½¥Õ¥¡¥¤¥ë¤òÆɤ߹þ¤à¤¿¤á¤Ë¡¤X ¥¯¥é¥¤¥¢¥ó¥È¤Ï¥æ¡¼¥¶¡¼¤Î¥Ç¥Õ¥©¥ë¥È¥í¥°¥¤¥ó¥·¥§¥ë¤Çµ¯Æ°¤µ¤ì¤Þ¤¹¡£É¬ÍפǤ¢¤ì¤Ð¡¤Âå¤ï¤ê¤Î¥·¥§¥ë¤ò»ØÄꤹ¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£</li>
-</ul>
-
-<h3>¥Õ¥ë¥¹¥¯¥ê¡¼¥ó</h3>
-<ul>
-    <li><b>¥­¡¼ÀßÄê¥Ü¥¿¥ó:</b> X11 ¤È Aqua ¤òÀÚ¤êÂؤ¨¤ë¤¿¤á¤Ë»ÈÍѤ¹¤ë¥Ü¥¿¥ó¤ÎÁȤ߹ç¤ï¤»¤ò»ØÄꤷ¤Þ¤¹¡£
-    ¥Ü¥¿¥ó¤ò¥¯¥ê¥Ã¥¯¤·¤Æ¡¤Ç¤°Õ¤Î¿ô¤Î½¤¾þ¥­¡¼¤Ë³¤¤¤ÆÄ̾ï¤Î¥­¡¼¤ò²¡¤·¤Þ¤¹¡£</li>
-    <li><b>¥É¥Ã¥¯¤Î¥¢¥¤¥³¥ó¤Î¥¯¥ê¥Ã¥¯¤Ç X11 ¤ËÌá¤ë:</b> ¥ª¥ó¤Î¾ì¹ç¡¤¥É¥Ã¥¯¤Ëɽ¼¨¤µ¤ì¤¿ XDarwin ¥¢¥¤¥³¥ó¤Î¥¯¥ê¥Ã¥¯¤Ç X11 ¤Ø¤ÎÀڤ괹¤¨¤¬²Äǽ¤È¤Ê¤ê¤Þ¤¹¡£Mac OS X ¤Î¤¤¤¯¤Ä¤«¤Î¥Ð¡¼¥¸¥ç¥ó¤Ç¤Ï¡¤¥É¥Ã¥¯¤Î¥¢¥¤¥³¥ó¤Î¥¯¥ê¥Ã¥¯¤Ç Aqua ¤ËÌá¤Ã¤¿»þ¡¤¥«¡¼¥½¥ë¤¬¾Ã¼º¤¹¤ë¤³¤È¤¬¤¢¤ê¤Þ¤¹¡£</li>
-    <li><b>µ¯Æ°»þ¤Ë¥Ø¥ë¥×¤òɽ¼¨¤¹¤ë:</b> XDarwin ¤¬¥Õ¥ë¥¹¥¯¥ê¡¼¥ó¥â¡¼¥É¤Çµ¯Æ°¤¹¤ë»þ¡¤¥¹¥×¥é¥Ã¥·¥å¥¹¥¯¥ê¡¼¥ó¤òɽ¼¨¤·¤Þ¤¹¡£</li>
-    <li><b>¿§¿¼ÅÙ:</b> ¥Õ¥ë¥¹¥¯¥ê¡¼¥ó¥â¡¼¥É¤Ç¤Ï¡¤X11 ¥Ç¥£¥¹¥×¥ì¥¤¤¬ Aqua ¤È°Û¤Ê¤ë¿§¿¼ÅÙ¤ò»È¤¦¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£¡ÖÊѹ¹¤Ê¤·¡×¤¬»ØÄꤵ¤ì¤¿¾ì¹ç¡¤XDarwin ¤Ï Aqua ¤Ë¤è¤Ã¤Æ»ÈÍѤµ¤ì¤ë¿§¿¼ÅÙ¤ò»È¤¤¤Þ¤¹¡£¤³¤ì°Ê³°¤Ë 8¡¤15 ¤Þ¤¿¤Ï24 ¥Ó¥Ã¥È¤ò»ØÄꤹ¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£</li>
-</ul>
-
-<h2>
-<a NAME="license">¥é¥¤¥»¥ó¥¹</a>
-</h2>
-XDarwin ¤Î¼çÍפʥ饤¥»¥ó¥¹¤ÏÅÁÅýŪ¤Ê MIT X11/X Consortium License ¤Ë´ð¤Å¤­¤Þ¤¹¡£
-¤½¤ì¤Ï½¤Àµ¤Þ¤¿¤ÏºÆÇÛÉÛ¤µ¤ì¤ë¥½¡¼¥¹¥³¡¼¥É¤Þ¤¿¤Ï¥Ð¥¤¥Ê¥ê¤Ë¡¤¤½¤ÎÃøºî¸¢/¥é¥¤¥»¥ó¥¹É½¼¨¤¬¤½¤Î¤Þ¤Þ»Ä¤µ¤ì¤ë¤³¤È¤òÍ׵᤹¤ë°Ê³°¤Î¾ò·ï¤ò¶¯À©¤·¤Þ¤»¤ó¡£
-¤è¤ê¿¤¯¤Î¾ðÊó¤È¡¤¥³¡¼¥É¤Î°ìÉô¤ò¥«¥Ð¡¼¤¹¤ëÄɲäÎÃøºî¸¢/¥é¥¤¥»¥ó¥¹É½¼¨¤Î¤¿¤á¤Ë¡¤¥½¡¼¥¹¥³¡¼¥É¤ò»²¾È¤·¤Æ²¼¤µ¤¤¡£
-<H3>
-<A NAME="3"></A>
-X  Consortium License</H3>
-<p>Copyright (C) 1996 X Consortium</p>
-<p>Permission is hereby granted, free of charge, to any person obtaining a 
-copy of this software and associated documentation files (the "Software"),
-to deal in the Software without restriction, including without
-limitation the rights to use, copy, modify, merge, publish, distribute,
-sublicense, and/or sell copies of the Software, and to permit persons to
-whom the Software is furnished to do so, subject to the following conditions:</p>
-<p>The above copyright notice and this permission notice shall be included
-in all copies or substantial portions of the Software.</p>
-<p>THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT
-SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
-IN THE SOFTWARE.</p>
-<p>Except as contained in this notice, the name of the X Consortium shall
-not be used in advertising or otherwise to promote the sale, use or
-other dealings in this Software without prior written authorization from
-the X Consortium.</p>
-<p>X Window System is a trademark of X Consortium, Inc.</p>
-</body>
-</html>
diff --git a/hw/darwin/bundle/Makefile.am b/hw/darwin/bundle/Makefile.am
deleted file mode 100644
index dee34fd..0000000
--- a/hw/darwin/bundle/Makefile.am
+++ /dev/null
@@ -1,38 +0,0 @@
-BINDIR = ${bindir}
-include $(top_srcdir)/cpprules.in
-XINITDIR = $(libdir)/X11/xinit
-XDEFS = \
-        -DX_VERSION="$(PLIST_VERSION_STRING)" \
-        -DX_PRE_RELEASE="$(PRE)" \
-        -DX_REL_DATE="$(XORG_DATE)" \
-        -DX_VENDOR_NAME="$(VENDOR_STRING)" \
-        -DX_VENDOR_LINK="$(PLIST_VENDOR_WEB)"
-
-SUBDIRS =  English.lproj Dutch.lproj French.lproj German.lproj Japanese.lproj \
-	ko.lproj Portuguese.lproj Spanish.lproj Swedish.lproj
-
-bin_SCRIPTS = startXClients
-
-startXClients: $(srcdir)/startXClients.cpp
-	$(RAWCPP) $(RAWCPPFLAGS) $(XDEFS) $(CPP_FILES_FLAGS) -DXINITDIR=$(XINITDIR) -DXBINDIR=$(BINDIR)  $< | $(CPP_SED_MAGIC) > $@
-	-chmod 755 startXClients
-
-contentsdir = @APPLE_APPLICATIONS_DIR@/XDarwin.app/Contents
-resourcesdir = $(contentsdir)/Resources
-
-contents_DATA = Info.plist
-resources_DATA = XDarwin.icns startXClients
-
-install-data-hook:
-	chmod 755 $(DESTDIR)$(resourcesdir)/startXClients
-	echo "APPL????" > $(DESTDIR)$(contentsdir)/PkgInfo
-	touch $(DESTDIR)@APPLE_APPLICATIONS_DIR@/XDarwin.app
-
-uninstall-hook:
-	rm -rf $(DESTDIR)$(contentsdir)/PkgInfo
-
-CLEANFILES = startXClients
-
-EXTRA_DIST = \
-	XDarwin.icns \
-	Info.plist
diff --git a/hw/darwin/bundle/Portuguese.lproj/Credits.rtf b/hw/darwin/bundle/Portuguese.lproj/Credits.rtf
deleted file mode 100644
index 8dcddc2..0000000
--- a/hw/darwin/bundle/Portuguese.lproj/Credits.rtf
+++ /dev/null
@@ -1,171 +0,0 @@
-{\rtf1\mac\ansicpg10000\cocoartf102
-{\fonttbl\f0\fswiss\fcharset77 Helvetica;\f1\fswiss\fcharset77 Helvetica-Bold;\f2\fswiss\fcharset77 Helvetica-Oblique;
-}
-{\colortbl;\red255\green255\blue255;}
-\vieww5140\viewh4980\viewkind0
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural
-
-\f0\fs24 \cf0 This product includes software developed by The XFree86 Project, Inc  (http://www.xfree86.org/) and its contributors. The following people contributed to Darwin/Mac OS X support.\
-\
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc
-
-\f1\b \cf0 Contributors to Xorg Foundation Release:
-\f0\b0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
-\cf0 Kaleb KEITHLEY\
-     
-\f2\i Working left and right Ctrl, Alt (Option), Meta (Command) and Shift keys.
-\f0\i0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
-
-\f1\b \cf0 \
-\f1\b \cf0 Contributors to XFree86 4.4:
-\f0\b0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
-\cf0 John Harper\
-     
-\f2\i Rootless acceleration and Apple-WM extension
-\f0\i0 \
-Torrey T. Lyons\
-     
-\f2\i Project Lead
-\f0\i0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
-
-\f1\b \cf0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc
-\cf0 Contribuidores do XonX ao XFree86 4.3:
-\f0\b0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
-\cf0 Fabr\'92cio Luis de Castro
-\f1\b \
-     
-\f2\i\b0 Localiza\'8d\'8bo para o Portugu\'90s\
-
-\f0\i0 Michael Oland\
-     
-\f2\i New XDarwin icon
-\f1\i0\b \
-\
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc
-\cf0 Contribuidores do XonX ao XFree86 4.2:
-\f0\b0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
-\cf0 Rob Braun\
-     
-\f2\i Suporte para o Darwin x86\
-
-\f0\i0 Pablo Di Noto\
-
-\f2\i      Localiza\'8d\'8bo para o Espanhol
-\f0\i0 \
-Paul Edens\
-
-\f2\i      Localiza\'8d\'8bo para o Holand\'90s
-\f0\i0 \
-Kyunghwan Kim\
-
-\f2\i      Localiza\'8d\'8bo para o Coreano
-\f0\i0 \
-Mario Klebsch\
-     
-\f2\i Suporte para teclados Non-US
-\f0\i0 \
-Torrey T. Lyons\
-     
-\f2\i L\'92der de Projeto
-\f0\i0 \
-Andreas Monitzer\
-     
-\f2\i Localiza\'8d\'8bo para o Alem\'8bo
-\f0\i0 \
-Patrik Montgomery\
-
-\f2\i      Localiza\'8d\'8bo para o Sueco
-\f0\i0 \
-Greg Parker\
-     
-\f2\i Suporte ao modo Compartilhado (Rootless)
-\f0\i0 \
-Toshimitsu Tanaka\
-     
-\f2\i Localiza\'8d\'8bo para o Japon\'90s
-\f0\i0 \
-Olivier Verdier\
-
-\f2\i      Localiza\'8d\'8bo para o Fran\'8d\'90s
-\f0\i0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
-
-\f1\b \cf0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc
-\cf0 Agradecimentos Especiais:
-\f0\b0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
-\cf0 Devin Poolman and Zero G Software, Inc.\
-
-\f2\i      Instalador
-\f0\i0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
-
-\f1\b \cf0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc
-\cf0 Membros do Time XonX\
-Contribuindo com o XFree86 4.1:
-\f0\b0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
-\cf0 Rob Braun\
-     
-\f2\i Suporte ao Darwin x86\
-
-\f0\i0 Torrey T. Lyons\
-    
-\f2\i  L\'92der de Projeto
-\f0\i0 \
-Andreas Monitzer\
-     
-\f2\i Vers\'8bo Cocoa da interface XDarwin
-\f0\i0 \
-Greg Parker\
-     
-\f2\i Implementa\'8d\'8bo Original
-\f0\i0  
-\f2\i ao Quartz \
-
-\f0\i0 Christoph Pfisterer\
-     
-\f2\i Bibliotecas Din\'89micas Compartilhadas
-\f0\i0 \
-Toshimitsu Tanaka\
-     
-\f2\i Localiza\'8d\'8bo para o Japon\'90s
-\f0\i0 \
-\
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc
-
-\f1\b \cf0 Agradecimento Especial:
-\f0\b0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
-\cf0 Tiago Ribeiro\
-     
-\f2\i \'eacone do XDarwin
-\f0\i0 \
-\
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc
-
-\f1\b \cf0 Hist\'97rico:
-\f0\b0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
-\cf0 John Carmack\
-    
-\f2\i  Suporte Original do XFree86 no Mac OS X Server
-\f0\i0 \
-Dave Zarzycki\
-     
-\f2\i Suporte ao
-\f0\i0  
-\f2\i XFree86 4.0 no Darwin 1.0
-\f0\i0 \
-Torrey T. Lyons\
-     
-\f2\i Integra\'8d\'8bo dentro do Projeto XFree86 na vers\'8bo 4.0.2}
\ No newline at end of file
diff --git a/hw/darwin/bundle/Portuguese.lproj/Localizable.strings b/hw/darwin/bundle/Portuguese.lproj/Localizable.strings
deleted file mode 100644
index c79b282..0000000
Binary files a/hw/darwin/bundle/Portuguese.lproj/Localizable.strings and /dev/null differ
diff --git a/hw/darwin/bundle/Portuguese.lproj/MainMenu.nib/classes.nib b/hw/darwin/bundle/Portuguese.lproj/MainMenu.nib/classes.nib
deleted file mode 100644
index 77f345a..0000000
--- a/hw/darwin/bundle/Portuguese.lproj/MainMenu.nib/classes.nib
+++ /dev/null
@@ -1,72 +0,0 @@
-{
-    IBClasses = (
-        {
-            ACTIONS = {showHelp = id; }; 
-            CLASS = FirstResponder; 
-            LANGUAGE = ObjC; 
-            SUPERCLASS = NSObject; 
-        }, 
-        {
-            ACTIONS = {close = id; pickFile = id; saveChanges = id; setKey = id; }; 
-            CLASS = Preferences; 
-            LANGUAGE = ObjC; 
-            OUTLETS = {
-                addToPathButton = id; 
-                addToPathField = id; 
-                button2ModifiersMatrix = id; 
-                button3ModifiersMatrix = id; 
-                depthButton = id; 
-                displayField = id; 
-                dockSwitchButton = id; 
-                fakeButton = id; 
-                keymapFileField = id; 
-                modeMatrix = id; 
-                modeWindowButton = id; 
-                mouseAccelChangeButton = id; 
-                startupHelpButton = id; 
-                switchKeyButton = id; 
-                systemBeepButton = id; 
-                useDefaultShellMatrix = id; 
-                useOtherShellField = id; 
-                useXineramaButton = id; 
-                window = id; 
-            }; 
-            SUPERCLASS = NSObject; 
-        }, 
-        {
-            CLASS = XApplication; 
-            LANGUAGE = ObjC; 
-            OUTLETS = {preferences = id; xserver = id; }; 
-            SUPERCLASS = NSApplication; 
-        }, 
-        {
-            ACTIONS = {
-                bringAllToFront = id; 
-                closeHelpAndShow = id; 
-                itemSelected = id; 
-                nextWindow = id; 
-                previousWindow = id; 
-                showAction = id; 
-                showSwitchPanel = id; 
-                startFullScreen = id; 
-                startRootless = id; 
-            }; 
-            CLASS = XServer; 
-            LANGUAGE = ObjC; 
-            OUTLETS = {
-                dockMenu = NSMenu; 
-                helpWindow = NSWindow; 
-                modeWindow = NSWindow; 
-                startFullScreenButton = NSButton; 
-                startRootlessButton = NSButton; 
-                startupHelpButton = NSButton; 
-                startupModeButton = NSButton; 
-                switchWindow = NSPanel; 
-                windowMenu = NSMenu; 
-                windowSeparator = NSMenuItem; 
-            }; 
-            SUPERCLASS = NSObject; 
-        }
-    ); 
-    IBVersion = 1; 
-}
\ No newline at end of file
diff --git a/hw/darwin/bundle/Portuguese.lproj/MainMenu.nib/objects.nib b/hw/darwin/bundle/Portuguese.lproj/MainMenu.nib/objects.nib
deleted file mode 100644
index 9cb67cf..0000000
Binary files a/hw/darwin/bundle/Portuguese.lproj/MainMenu.nib/objects.nib and /dev/null differ
diff --git a/hw/darwin/bundle/Portuguese.lproj/Makefile.am b/hw/darwin/bundle/Portuguese.lproj/Makefile.am
deleted file mode 100644
index 81ba2be..0000000
--- a/hw/darwin/bundle/Portuguese.lproj/Makefile.am
+++ /dev/null
@@ -1,36 +0,0 @@
-BINDIR = ${bindir}
-include $(top_srcdir)/cpprules.in
-XINITDIR = $(libdir)/X11/xinit
-XDEFS = \
-        -DX_VERSION="$(PLIST_VERSION_STRING)" \
-        -DX_PRE_RELEASE="$(PRE)" \
-        -DX_REL_DATE="$(XORG_DATE)" \
-        -DX_VENDOR_NAME="$(VENDOR_STRING)" \
-        -DX_VENDOR_LINK="$(PLIST_VENDOR_WEB)"
-
-resourcesdir = @APPLE_APPLICATIONS_DIR@/XDarwin.app/Contents/Resources
-
-Portugueselprojdir = $(resourcesdir)/Portuguese.lproj
-
-Portugueselproj_DATA = \
-		    XDarwinHelp.html \
-		    InfoPlist.strings \
-		    Credits.rtf Localizable.strings
-
-Portugueselprojnibdir = $(Portugueselprojdir)/MainMenu.nib
-Portugueselprojnib_DATA = MainMenu.nib/classes.nib MainMenu.nib/objects.nib
-
-InfoPlist.strings: $(srcdir)/../English.lproj/InfoPlist.strings.cpp
-	 $(RAWCPP) $(RAWCPPFLAGS) $(XDEFS) $(CPP_FILES_FLAGS) $< | $(CPP_SED_MAGIC) | $(SED) -e's/__quote__/"/g' > $@
-
-XDarwinHelp.html: XDarwinHelp.html.cpp
-	$(RAWCPP) $(RAWCPPFLAGS) $(XDEFS) $(CPP_FILES_FLAGS) $< | $(CPP_SED_MAGIC) > $@
-
-CLEANFILES = XDarwinHelp.html InfoPlist.strings 
-
-EXTRA_DIST = \
-	Credits.rtf Localizable.strings \
-	Localizable.strings \
-	MainMenu.nib/classes.nib \
-	MainMenu.nib/objects.nib \
-	XDarwinHelp.html.cpp
diff --git a/hw/darwin/bundle/Portuguese.lproj/XDarwinHelp.html.cpp b/hw/darwin/bundle/Portuguese.lproj/XDarwinHelp.html.cpp
deleted file mode 100644
index 6800171..0000000
--- a/hw/darwin/bundle/Portuguese.lproj/XDarwinHelp.html.cpp
+++ /dev/null
@@ -1,209 +0,0 @@
-<head>
-<title>XDarwin Help</title>
-</head>
-
-<center>
-    
-  <h1>XDarwin X Server para Mac OS X</h1>
-    X_VENDOR_NAME X_VERSION<br>
-    Release Date: X_REL_DATE
-</center>
-<h2>&Iacute;ndice</h2>
-<ol>
-    <li><A HREF="#notice">Notas importantes</A></li>
-    <li><A HREF="#usage">Uso</A></li>
-    <li><A HREF="#path">Ajustando seu Path</A></li>
-    
-  <li><A HREF="#prefs">Prefer&ecirc;ncias do usu&aacute;rio</A></li>
-  <li><A HREF="#license">Licen&ccedil;a</A></li>
-</ol>
-<center>
-    <h2><a NAME="notice">Notas importantes</a></h2>
-</center>
-<blockquote>
-#if PRE_RELEASE
-  Essa &eacute; uma vers&atilde;o pr&eacute;-lancamento 
-  do XDarwin, e ela n&atilde;o &eacute; suportada de nenhuma forma. Bugs podem 
-  ser reportados e corre&ccedil;&otilde;es podem ser enviadas para <A HREF="http://sourceforge.net/projects/xonx/">P&aacute;gina 
-  do projeto XonX</A> no SourceForge. Antes de informar bugs em vers&otilde;es 
-  pr&eacute;-lancamento, por favor verifique a þltima vers&atilde;o em <A HREF="http://sourceforge.net/projects/xonx/">XonX</A> 
-  or X_VENDOR_LINK. 
-#else
-Se o servidor &eacute; mais velho que 6-12 semanas, ou seu hardware &eacute; 
-  mais novo que a data acima, procure por uma nova vers&atilde;o antes de informar 
-  problemas. Bugs podem ser reportados e corre&ccedil;&otilde;es podem ser enviadas 
-  para a <A HREF="http://sourceforge.net/projects/xonx/">P&aacute;gina do projeto 
-  XonX</A> na SourceForge.
-#endif
-</blockquote>
-<blockquote> Este software &eacute; distribu&iacute;do sob os termos da <a href="#license">licen&ccedil;a 
-  MIT X11 / X Consortium</a> e &eacute; provido, sem nenhuma garantia. Por favor 
-  leia a <a href="#license">Licen&ccedil;a</a> antes de come&ccedil;ar a usar 
-  o programa.</blockquote>
-
-<h2><a NAME="usage">Uso</a></h2>
-<p>O XDarwin &eacute; uma X server &quot;open-source&quot; livremente 
-  redistribu&iacute;da do <a HREF
-="http://www.x.org/">Sistema X Window</a>. This version of XDarwin was produced by the X_VENDOR_LINK.
-  XDarwin roda sobre Mac OS X no modo Tela Cheia ou no modo Compartilhado.</p>
-<p>No modo Tela Cheia, quando o sistema X window est&aacute; ativo, ele ocupa 
-  a tela toda. Voc&ecirc; pode voltar ao desktop do Mac OS X clicando Command-Option-A. 
-  Essa combina&ccedil;&atilde;o de teclas pode ser mudada nas prefer&ecirc;ncias. 
-  Pelo desktop Mac OS X, clique no &iacute;cone XDarwin no Dock para voltar ao 
-  sistema X window. (Voc&ecirc; pode mudar esse comportamento nas prefer&ecirc;ncias 
-  da&iacute; voc&ecirc; dever&aacute; clicar no &iacute;cone XDarwin na janela 
-  flutuante que aparecer&aacute;.)</p>
-<p>No modo Compartilhado, o sistema X window e Aqua dividem a mesma tela. A janela 
-  raiz da tela X11 est&aacute; do tamanho da tela (monitor) e cont&eacute;m todas 
-  as outras janelas. A janela raiz do X11 no modo compartilhado n&atilde;o &eacute; 
-  mostrada pois o Aqua controla o fundo de tela.</p>
-<h3>Emula&ccedil;&atilde;o de Mouse Multi-Bot&otilde;es</h3>
-<p>Muitas aplica&ccedil;&otilde;es X11 insistem em usar um mouse de 3 bot&otilde;es. 
-  Voc&ecirc; pode emular um mouse de 3 bot&otilde;es com um simples bot&atilde;o, 
-  mantendo pressionando teclas modificadoras enquanto voc&ecirc; clica no bot&atilde;o 
-  do mouse. Isto &eacute; controlado pela configura&ccedil;&atilde;o da &quot;Emula&ccedil;&atilde;o 
-  de Mouse Multi-Bot&otilde;es&quot; da prefer&ecirc;ncia &quot;Geral&quot;. Por 
-  padr&atilde;o, a emula&ccedil;&atilde;o est&aacute; habilitada e mantendo pressionada 
-  a tecla Command e clicando no bot&atilde;o do mouse ele simular&aacute; o clique 
-  no segundo bot&atilde;o do mouse. Mantendo pressionada a tecla Option e clicando 
-  no bot&atilde;o do mouse ele simular&aacute; o terceiro bot&atilde;o. Voc&ecirc; 
-  pode mudar a combina&ccedil;&atilde;o de teclas modificadoras para emular os 
-  bot&otilde;es dois e tr&ecirc;s nas prefer&ecirc;ncias. Nota, se a tecla modificadora 
-  foi mapeada para alguma outra tecla no xmodmap, voc&ecirc; ainda ter&aacute; 
-  que usar a tecla atual especificada nas prefer&ecirc;ncias para a emula&ccedil;&atilde;o 
-  do mouse multi-bot&otilde;es.</p>
-<h2><a NAME="path">Ajustando seu Path</a></h2>
-<p>Seu path &eacute; a lista de diret&oacute;rios a serem procurados por arquivos 
-  execut&aacute;veis. O comando X11 est&aacute; localizado em <code>/usr/X11R6/bin</code>, 
-  que precisa ser adicionado ao seu path. XDarwin faz isso para voc&ecirc; por 
-  padr&atilde;o e pode-se tamb&eacute;m adicionar diret&oacute;rios onde voc&ecirc; 
-  instalou aplica&ccedil;&otilde;es de linha de comando.</p>
-<p>Usu&aacute;rios experientes j&aacute; ter&atilde;o configurado corretamente 
-  seu path usando arquivos de inicializa&ccedil;&atilde;o de seu shell. Neste 
-  caso, voc&ecirc; pode informar o XDarwin para n&atilde;o modificar seu path 
-  nas prefer&ecirc;ncias. O XDarwin inicia o cliente inicial X11 no shell padr&atilde;o 
-  do usu&aacute;rio corrente. (Um shell alternativo pode ser tamb&eacute;m expecificado 
-  nas prefer&ecirc;ncias.) O modo para ajustar o path depende do shell que voc&ecirc; 
-  est&aacute; usando. Isto &eacute; descrito na man page do seu shell.</p>
-<p>Voc&ecirc; pode tamb&eacute;m querer adicionar as man pages do X11 para 
-  a lista de p&aacute;ginas a serem procuradas quando voc&ecirc; est&aacute; procurando 
-  por documenta&ccedil;&atilde;o. As man pages do X11 est&atilde;o localizadas 
-  em <code>/usr/X11R6/man</code> e a vari&aacute;vel de ambiente <code>MANPATH</code> 
-  cont&eacute;m a lista de diret&oacute;rios a buscar.</p>
-<h2><a NAME="prefs">Prefer&ecirc;ncias do Usu&aacute;rio</a></h2>
-<p>V&aacute;rias op&ccedil;&otilde;es podem ser ajustadas nas prefer&ecirc;ncias 
-  do usu&aacute;rio, acess&iacute;vel pelo item &quot;Prefer&ecirc;ncias...&quot; 
-  no menu &quot;XDarwin&quot;. As op&ccedil;&otilde;es listadas como op&ccedil;&otilde;es 
-  de inicializa&ccedil;&atilde;o, n&atilde;o ter&atilde;o efeito at&eacute; voc&ecirc; 
-  reiniciar o XDarwin. Todas as outras op&ccedil;&otilde;es ter&atilde;o efeito 
-  imediatamente. V&aacute;rias das op&ccedil;&otilde;es est&atilde;o descritas 
-  abaixo:</p>
-<h3>Geral</h3>
-<ul>
-  <li><b>Usar o Beep do Sistema para o X11: </b>Quando habilitado som de alerta 
-    padr&atilde;o do Mac OS X ser&aacute; usado como alerta no X11. Quando desabilitado 
-    (padr&atilde;o) um tom simples ser&aacute; usado.</li>
-  <li><b>Permitir o X11 mudar a acelera&ccedil;&atilde;o do mouse: </b>Por implementa&ccedil;&atilde;o 
-    padr&atilde;o no sistema X window, o gerenciador de janelas pode mudar a acelera&ccedil;&atilde;o 
-    do mouse. Isso pode gerar uma confus&atilde;o pois a acelera&ccedil;&atilde;o 
-    do mouse pode ser ajustada diferentemente nas prefer&ecirc;ncias do Mac OS 
-    X e nas prefer&ecirc;ncias do X window. Por padr&atilde;o, o X11 n&atilde;o 
-    est&aacute; habilitado a mudar a acelera&ccedil;&atilde;o do mouse para evitar 
-    este problema.</li>
-  <li><b>Emula&ccedil;&atilde;o de Mouse de Multi-Bot&otilde;es: </b>Esta op&ccedil;&atilde;o 
-    est&aacute; escrita acima em <a href="#usage">Uso</a>. Quando a emula&ccedil;&atilde;o 
-    est&aacute; habilitada as teclas modificadoras selecionadas tem que estar 
-    pressionadas quando o bot&atilde;o do mouse for pressionado, para emular o 
-    segundo e terceiro bot&otilde;es.</li>
-</ul>
-<h3>Inicial</h3>
-<ul>
-  <li><b>Modo Padr&atilde;o: </b>Se o usu&aacute;rio n&atilde;o indicar qual modo 
-    de exibi&ccedil;&atilde;o quer usar (Tela Cheia ou Compartilhado) o modo especificado 
-    aqui ser&aacute; usado .</li>
-  <li><b>Mostrar o painel de escolha na inicializa&ccedil;&atilde;o: </b> Por 
-    padr&atilde;o, uma painel &eacute; mostrado quando o XDarwin &eacute; 
-    iniciado para permitir que o usu&aacute;rio escolha ente o modo tela cheia 
-    ou modo compartilhado. Se esta op&ccedil;&atilde;o estiver desligada, o modo 
-    padr&atilde;o ser&aacute; inicializado automaticamente.</li>
-  <li><b>N&uacute;mero do Monitor X11: </b>O X11 permite ser administrado em multiplos 
-    monitores por servidores X separados num mesmo computador. O usu&aacute;rio 
-    pode indicar o n&uacute;mero do monitor para o XDarwin usar se mais de um 
-    servidor X se estiver rodando simultaneamente.</li>
-  <li><b>Habilitar suporte a m&uacute;ltiplos monitores pelo Xinerama: </b>o XDarwin 
-    suporta m&uacute;ltiplos monitores com o Xinerama, que trata todos os monitores 
-    como parte de uma grande e retangular tela. Voc&ecirc; pode desabilitar o 
-    Xinerama com est&aacute; op&ccedil;&atilde;o, mas normalmente o XDarwin n&atilde;o 
-    controla m&uacute;ltiplos monitores corretamente sem est&aacute; op&ccedil;&atilde;o. 
-    Se voc&ecirc; s&oacute; tiver um monotor, Xinerama &eacute; automaticamente 
-    desabilitado. </li>
-  <li><b>Arquivo de Mapa de Teclado: </b> O mapa de teclado &eacute; lido na inicializa&ccedil;&atilde;o 
-    e traduzido para um mapa de teclado X11. Arquivos de mapa de teclado, est&atilde;o 
-    dispon&iacute;veis numa grande variedade de l&iacute;nguas e s&atilde;o encontradas 
-    em <code>/System/Library/Keyboards</code>.</li>
-  <li><b>Iniciando Clientes X11 primeiro: </b>Quando o XDrawin &eacute; inicializado 
-    pelo Finder, ele ir&aacute; rodar o <code>xinit</code> para abrir o controlador 
-    X window e outros clientes X. (Veja o manual "<code>man xinit</code>" para 
-    mais informa&ccedil;&otilde;es.) Antes do XDarwin rodar o <code>xinit</code> 
-    ele ir&aacute; adicionar espec&iacute;ficos diret&oacute;rios a seu path. 
-    Por padr&atilde;o somente o <code>/usr/X11R6/bin</code> &eacute; adicionado. 
-    separado por um ponto-e-v&iacute;rgula. Os clientes X s&atilde;o inicializados 
-    no shell padr&atilde;o do usu&aacute;rio e os arquivos de inicializa&ccedil;&atilde;o 
-    do shell ser&atilde;o lidos. Se desejado, um shell alternativo pode ser especificado.</li>
-</ul>
-<h3>Tela Cheia</h3>
-<ul>
-  <li><b>Bot&atilde;o de Combina&ccedil;&atilde;o de Teclas: </b> Clique no bot&atilde;o 
-    e pressione qualquer quantidade de teclas modificadoras seguidas por uma tecla 
-    padr&atilde;o para modificar a combina&ccedil;&atilde;o quando se quer mudar 
-    entre o Aqua e X11.</li>
-  <li><b>Clique no &Iacute;cone no Dock para mudar para o X11: </b>Habilitando 
-    esta op&ccedil;&atilde;o voc&ecirc; ir&aacute; ativar a mudan&ccedil;a para 
-    o X11 clicando no &iacute;cone do XDarwin no Dock. Em algumas vers&otilde;es 
-    do Mac OS X, mudando pelo clique no Dock pode causar o desaparecimento do 
-    cursor quando retornar ao Aqua.</li>
-  <li><b>Mostrar a Ajuda na inicializa&ccedil;&atilde;o: </b>Isto ir&aacute; mostrar 
-    uma tela introdut&oacute;ria quando o XDarwin for inicializado no modo Tela 
-    Cheia. </li>
-  <li><b>Profundidade de Cores em bits: </b> No modo Tela Cheia, a tela do X11 
-    pode usar uma profundiadde de cor diferente da usada no Aqua. Se a op&ccedil;&atilde;o 
-    &quot;Atual&quot; est&aacute; especificada, a profundidade usada pelo Aqua 
-    quando o XDarwin iniciar ser&aacute; a mesma. Al&eacute;m das op&ccedil;&otilde;es 
-    8, 15 ou 24 bits que podem ser especificadas.</li>
-</ul>
-
-<h2><a NAME="license">Licen&ccedil;a</a></h2>
-<p>A licen&ccedil;a 
-  principal n&oacute;s por XDarwin baseada na licen&ccedil;a tradicional MIT X11 
-  / X Consortium, que n&atilde;o imp&otilde;e nenhuma condi&ccedil;&atilde;o sobre 
-  modifica&ccedil;&otilde;es ou redistribui&ccedil;&atilde;o do c&oacute;digo-fonte 
-  ou dos bin&aacute;rios desde que o copyright/licen&ccedil;a sejam mantidos intactos. 
-  Para mais informa&ccedil;&otilde;es e not&iacute;cias adicionais de copyright/licensing 
-  em algumas se&ccedil;&atilde;o do c&oacute;digo, por favor refer to the source code.</p>
-<H3><A NAME="3"></A>Licen&ccedil;a do X Consortium</H3>
-<p>Copyright (C) 1996 X Consortium</p>
-<p>Permiss&otilde;es s&atilde;o em virtude garantidas, livre de mudan&ccedil;as, 
-  para qualquer pessoa que possua uma c&oacute;pia deste software e aos arquivos 
-  de documenta&ccedil;&atilde;o associada (o &quot;Software&quot;), para lidar 
-  com o software sem restri&ccedil;&otilde;es, incluindo limita&ccedil;&otilde;es 
-  dos direitos de uso, c&oacute;pia, modifica&ccedil;&atilde;o, inclus&atilde;o, 
-  publica&ccedil;&atilde;o, distribui&ccedil;&atilde;o, sub licen&ccedil;a, e/ou 
-  venda de c&oacute;pias deste Software, e permitir pessoas to whom o Software 
-  &eacute; fornecido para ser desta forma, verifique as seguintes condi&ccedil;&otilde;es:</p>
-<p>O nota de copyright abaixo e a permiss&atilde;o dever&atilde;o ser inclu&iacute;das 
-  em todas as c&oacute;pias ou substanciais por&ccedil;&otilde;es do Software.</p>
-<p>O SOFTWARE 'E PROVIDO &quot;COMO TAL&quot;, SEM GARANTIAS DE NENHUM TIPO, EXPLICITA 
-  OU IMPLICITA, INCLUINDO MAS N&Atilde;O LIMITADO NOS AVISOS DE COM&Eacute;RCIO, 
-  TAMANHO OU PARA PROPOSTAS PARTICULARES E N&Atilde;O INFRA&Ccedil;&Atilde;O. 
-  EM NENHUM ACONTECIMENTO O X CONSORTIUM SER&Aacute; RESPONSAV&Eacute;L POR NENHUMA 
-  RECLAMA&Ccedil;&Atilde;O, DANOS OU OUTRAS RESPONSABILIDADES, SE NUMA A&Ccedil;&Atilde;O 
-  DE CONTRATO, OU OUTRA COISA, SURGINDO DE, FORA DE OU EM CONEX&Atilde;O COM O 
-  SOFTWARE OU O USO OU OUTRO MODO DE LIDAR COM O SOFTWARE.</p>
-<p>Exceto o contido nesta nota, o nome do X Consortium n&atilde;o pode ser usado 
-  em propagandas ou outra forma de promo&ccedil;&atilde;o de vendas, uso ou outro 
-  modo de lidar com este Software sem ter recebido uma autoriza&ccedil;&atilde;o 
-  escrita pelo X Consortium.</p>
-<p>O Sistema X Window &eacute; marca registrada do X Consortium, Inc.</p>
-</body>
-</html>
-
diff --git a/hw/darwin/bundle/Spanish.lproj/Credits.rtf b/hw/darwin/bundle/Spanish.lproj/Credits.rtf
deleted file mode 100644
index 34408e7..0000000
--- a/hw/darwin/bundle/Spanish.lproj/Credits.rtf
+++ /dev/null
@@ -1,168 +0,0 @@
-{\rtf1\mac\ansicpg10000\cocoartf102
-{\fonttbl\f0\fswiss\fcharset77 Helvetica;\f1\fswiss\fcharset77 Helvetica-Bold;\f2\fswiss\fcharset77 Helvetica-Oblique;
-}
-{\colortbl;\red255\green255\blue255;}
-\vieww5160\viewh6300\viewkind0
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural
-
-\f0\fs24 \cf0 This product includes software developed by The XFree86 Project, Inc  (http://www.xfree86.org/) and its contributors. The following people contributed to Darwin/Mac OS X support.\
-\
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc
-
-\f1\b \cf0 Contributors to Xorg Foundation Release:
-\f0\b0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
-\cf0 Kaleb KEITHLEY\
-     
-\f2\i Working left and right Ctrl, Alt (Option), Meta (Command) and Shift keys.
-\f0\i0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
-
-\f1\b \cf0 \
-\f1\b \cf0 Contributors to XFree86 4.4:
-\f0\b0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
-\cf0 John Harper\
-     
-\f2\i Rootless acceleration and Apple-WM extension
-\f0\i0 \
-Torrey T. Lyons\
-     
-\f2\i Project Lead
-\f0\i0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
-
-\f1\b \cf0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc
-\cf0 Additional XonX Contributors to XFree86 4.3:
-\f0\b0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
-\cf0 Fabr\'92cio Luis de Castro\
-     
-\f2\i Portuguese localization
-\f0\i0 \
-Michael Oland\
-     
-\f2\i New XDarwin icon
-\f0\i0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
-
-\f1\b \cf0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc
-\cf0 XonX Contributors to XFree86 4.2:
-\f0\b0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
-\cf0 Rob Braun\
-     
-\f2\i Darwin x86 support
-\f0\i0 \
-Pablo Di Noto\
-
-\f2\i      Spanish localization
-\f0\i0 \
-Paul Edens\
-
-\f2\i      Dutch localization
-\f0\i0 \
-Kyunghwan Kim\
-
-\f2\i      Korean localization
-\f0\i0 \
-Mario Klebsch\
-     
-\f2\i Non-US keyboard support
-\f0\i0 \
-Torrey T. Lyons\
-     
-\f2\i Project Lead
-\f0\i0 \
-Andreas Monitzer\
-     
-\f2\i German localization
-\f0\i0 \
-Patrik Montgomery\
-
-\f2\i      Swedish localization
-\f0\i0 \
-Greg Parker\
-     
-\f2\i Rootless support
-\f0\i0 \
-Toshimitsu Tanaka\
-     
-\f2\i Japanese localization
-\f0\i0 \
-Olivier Verdier\
-
-\f2\i      French localization
-\f0\i0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
-
-\f1\b \cf0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc
-\cf0 Special Thanks:
-\f0\b0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
-\cf0 Devin Poolman and Zero G Software, Inc.\
-
-\f2\i      Installer
-\f0\i0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
-
-\f1\b \cf0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc
-\cf0 XonX Team Members\
-Contributing to XFree86 4.1:
-\f0\b0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
-\cf0 Rob Braun\
-     
-\f2\i Darwin x86 support
-\f0\i0 \
-Torrey T. Lyons\
-     
-\f2\i Project Lead
-\f0\i0 \
-Andreas Monitzer\
-     
-\f2\i Cocoa version of XDarwin front end
-\f0\i0 \
-Greg Parker\
-     
-\f2\i Original Quartz implementation
-\f0\i0 \
-Christoph Pfisterer\
-     
-\f2\i Dynamic shared libraries
-\f0\i0 \
-Toshimitsu Tanaka\
-     
-\f2\i Japanese localization
-\f0\i0 \
-\
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc
-
-\f1\b \cf0 Special Thanks:
-\f0\b0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
-\cf0 Tiago Ribeiro\
-     
-\f2\i XDarwin icon
-\f0\i0 \
-\
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc
-
-\f1\b \cf0 History:
-\f0\b0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
-\cf0 John Carmack\
-     
-\f2\i Original XFree86 port to Mac OS X Server
-\f0\i0 \
-Dave Zarzycki\
-     
-\f2\i XFree86 4.0 port to Darwin 1.0
-\f0\i0 \
-Torrey T. Lyons\
-     
-\f2\i Integration into XFree86 Project for 4.0.2}
\ No newline at end of file
diff --git a/hw/darwin/bundle/Spanish.lproj/Localizable.strings b/hw/darwin/bundle/Spanish.lproj/Localizable.strings
deleted file mode 100644
index 5bf813f..0000000
Binary files a/hw/darwin/bundle/Spanish.lproj/Localizable.strings and /dev/null differ
diff --git a/hw/darwin/bundle/Spanish.lproj/MainMenu.nib/classes.nib b/hw/darwin/bundle/Spanish.lproj/MainMenu.nib/classes.nib
deleted file mode 100644
index 77f345a..0000000
--- a/hw/darwin/bundle/Spanish.lproj/MainMenu.nib/classes.nib
+++ /dev/null
@@ -1,72 +0,0 @@
-{
-    IBClasses = (
-        {
-            ACTIONS = {showHelp = id; }; 
-            CLASS = FirstResponder; 
-            LANGUAGE = ObjC; 
-            SUPERCLASS = NSObject; 
-        }, 
-        {
-            ACTIONS = {close = id; pickFile = id; saveChanges = id; setKey = id; }; 
-            CLASS = Preferences; 
-            LANGUAGE = ObjC; 
-            OUTLETS = {
-                addToPathButton = id; 
-                addToPathField = id; 
-                button2ModifiersMatrix = id; 
-                button3ModifiersMatrix = id; 
-                depthButton = id; 
-                displayField = id; 
-                dockSwitchButton = id; 
-                fakeButton = id; 
-                keymapFileField = id; 
-                modeMatrix = id; 
-                modeWindowButton = id; 
-                mouseAccelChangeButton = id; 
-                startupHelpButton = id; 
-                switchKeyButton = id; 
-                systemBeepButton = id; 
-                useDefaultShellMatrix = id; 
-                useOtherShellField = id; 
-                useXineramaButton = id; 
-                window = id; 
-            }; 
-            SUPERCLASS = NSObject; 
-        }, 
-        {
-            CLASS = XApplication; 
-            LANGUAGE = ObjC; 
-            OUTLETS = {preferences = id; xserver = id; }; 
-            SUPERCLASS = NSApplication; 
-        }, 
-        {
-            ACTIONS = {
-                bringAllToFront = id; 
-                closeHelpAndShow = id; 
-                itemSelected = id; 
-                nextWindow = id; 
-                previousWindow = id; 
-                showAction = id; 
-                showSwitchPanel = id; 
-                startFullScreen = id; 
-                startRootless = id; 
-            }; 
-            CLASS = XServer; 
-            LANGUAGE = ObjC; 
-            OUTLETS = {
-                dockMenu = NSMenu; 
-                helpWindow = NSWindow; 
-                modeWindow = NSWindow; 
-                startFullScreenButton = NSButton; 
-                startRootlessButton = NSButton; 
-                startupHelpButton = NSButton; 
-                startupModeButton = NSButton; 
-                switchWindow = NSPanel; 
-                windowMenu = NSMenu; 
-                windowSeparator = NSMenuItem; 
-            }; 
-            SUPERCLASS = NSObject; 
-        }
-    ); 
-    IBVersion = 1; 
-}
\ No newline at end of file
diff --git a/hw/darwin/bundle/Spanish.lproj/MainMenu.nib/objects.nib b/hw/darwin/bundle/Spanish.lproj/MainMenu.nib/objects.nib
deleted file mode 100644
index 2df75ee..0000000
Binary files a/hw/darwin/bundle/Spanish.lproj/MainMenu.nib/objects.nib and /dev/null differ
diff --git a/hw/darwin/bundle/Spanish.lproj/Makefile.am b/hw/darwin/bundle/Spanish.lproj/Makefile.am
deleted file mode 100644
index 438d0c2..0000000
--- a/hw/darwin/bundle/Spanish.lproj/Makefile.am
+++ /dev/null
@@ -1,36 +0,0 @@
-BINDIR = ${bindir}
-include $(top_srcdir)/cpprules.in
-XINITDIR = $(libdir)/X11/xinit
-XDEFS = \
-        -DX_VERSION="$(PLIST_VERSION_STRING)" \
-        -DX_PRE_RELEASE="$(PRE)" \
-        -DX_REL_DATE="$(XORG_DATE)" \
-        -DX_VENDOR_NAME="$(VENDOR_STRING)" \
-        -DX_VENDOR_LINK="$(PLIST_VENDOR_WEB)"
-
-resourcesdir = @APPLE_APPLICATIONS_DIR@/XDarwin.app/Contents/Resources
-
-Spanishlprojdir = $(resourcesdir)/Spanish.lproj
-
-Spanishlproj_DATA = \
-		    XDarwinHelp.html \
-		    InfoPlist.strings \
-		    Credits.rtf Localizable.strings
-
-Spanishlprojnibdir = $(Spanishlprojdir)/MainMenu.nib
-Spanishlprojnib_DATA = MainMenu.nib/classes.nib MainMenu.nib/objects.nib
-
-InfoPlist.strings: $(srcdir)/../English.lproj/InfoPlist.strings.cpp
-	 $(RAWCPP) $(RAWCPPFLAGS) $(XDEFS) $(CPP_FILES_FLAGS) $< | $(CPP_SED_MAGIC) | $(SED) -e's/__quote__/"/g' > $@
-
-XDarwinHelp.html: XDarwinHelp.html.cpp
-	$(RAWCPP) $(RAWCPPFLAGS) $(XDEFS) $(CPP_FILES_FLAGS) $< | $(CPP_SED_MAGIC) > $@
-
-CLEANFILES = XDarwinHelp.html InfoPlist.strings 
-
-EXTRA_DIST = \
-	Credits.rtf Localizable.strings \
-	Localizable.strings \
-	MainMenu.nib/classes.nib \
-	MainMenu.nib/objects.nib \
-	XDarwinHelp.html.cpp
diff --git a/hw/darwin/bundle/Spanish.lproj/XDarwinHelp.html.cpp b/hw/darwin/bundle/Spanish.lproj/XDarwinHelp.html.cpp
deleted file mode 100644
index a79e6f9..0000000
--- a/hw/darwin/bundle/Spanish.lproj/XDarwinHelp.html.cpp
+++ /dev/null
@@ -1,109 +0,0 @@
-<html>
-<head>
-<title>XDarwin Ayuda</title>
-</head>
-<body>
-<center>
-    <h1>XDarwin X Server for Mac OS X</h1>
-    X_VENDOR_NAME X_VERSION<br>
-    Fecha de release: X_REL_DATE
-</center>
-<h2>Contenido</h2>
-<ol>
-    <li><A HREF="#notice">Aviso Importante</A></li>
-    <li><A HREF="#usage">Modo de uso</A></li>
-    <li><A HREF="#path">Configurando su Path</A></li>
-    <li><A HREF="#prefs">Preferencias del Usuario</A></li>
-    <li><A HREF="#license">Licencia</A></li>
-</ol>
-<center>
-    <h2><a NAME="notice">Aviso Importante</a></h2>
-</center>
-<blockquote>
-#if PRE_RELEASE
-Esta es una versi&oacuten pre-release de XDarwin, y no tiene ning&uacuten soporte. Patches y reportes de error pueden ser enviados a la <A HREF="http://sourceforge.net/projects/xonx/">p&aacutegina del proyecto XonX</A> en SourceForge.  Antes de reportar errores en versiones pre-release, por favor verifique la ultima versi&oacuten en <A HREF="http://sourceforge.net/projects/xonx/">XonX</A> o bien el X_VENDOR_LINK.
-#else
-Si el server el m&aacutes antiguo que 6 a 12 meses, o si su hardware es posterior a la fecha indicada m&aacutes arriba, por favor verifique la &uacuteltima versi&oacuten antes de reportar problemas. Patches y reportes de error pueden ser enviados a la <A HREF="http://sourceforge.net/projects/xonx/">p&aacutegina del proyecto XonX</A> en SourceForge.
-#endif
-</blockquote>
-<blockquote>
-Este software es distribuido bajo los t&eacuterminos de la <A HREF="#license">Licencia MIT X11 / X Consortium</A> y es provisto sin garant&iacutea alguna y en el estado en que se encuentra. Por favor lea la <A HREF="#license">Licencia</A> antes de utilizarlo.</blockquote>
-
-<h2><a NAME="usage">Modo de uso</a></h2>
-<p>XDarwin es una X server open-source de distribuci&oacuten libre del <a HREF
-="http://www.x.org/">X Window System</a>. This version of XDarwin was produced by the X_VENDOR_LINK. XDarwin funciona en Mac OS X en modo pantalla completa o en modo rootless (integrado al escritorio).</p>
-<p>En modo pantalla completa, el X window system toma control total de la pantalla mientras esta activo. Presionando Command-Option-A  puede regresar al Escritorio de Mac OS X. Esta combinaci&oacuten de teclas puede cambiarse en las Preferencias de Usuario. Desde el Escritorio de Mac OS X, haga click en &iacutecono de XDarwin en el Dock para volver al X window system.  (Puede cambiar esta comportamiento en las Preferencias de Usuario y configurar que XDarwin vuelva al X window system haciendo click en la ventana flotante con el logo X.)</p>
-<p>En modo rootless, el X window system comparte la pantalla con Aqua. La ventana root de X11 es del tama&ntildeo de la pantalla y contiene a todas las dem&aacutes ventanas. La ventana root de X11 no se muestra en este modo, ya que Aqua maneja el fondo de pantalla.</p>
-<h3>Emulaci&oacuten de mouse multi-bot&oacuten</h3>
-<p>Muchas aplicaciones X11 requieren del uso de un mouse de 3 botones. Es posible emular un mouse de 3 botones con un mouse de solo un bot&oacuten presionando teclas modificadoras mientras hace click. Esto es controlado en de la seccion "Emulaci&oacuten mouse" dentro de la secci&oacuten "General" de las Preferencias del Usuario. Por defecto, la emulaci&oacuten est&aacute activa y utiliza la tecla Command para simular el 2do bot&oacuten y la tecla Option para simlar el 3er bot&oacuten. La conbinaci&oacuten para simular el 2do y 3er bot&oacuten pueden ser modificada por cualquier combinaci&oacuten de teclas modificadoras dentro de las Preferencias del Usuario. Tenga en cuenta que aunque las teclas modificadoras hayan sido mapeadas a otras teclas con xmodmap, las teclas configuradas en las Preferencias del Usuario seguir&aacuten siendo las utilizadas por la emulaci&oacuten de mouse multi-bot&oacuten.</p>
-
-<h2><a NAME="path">Configurando su Path</a></h2>
-<p>El path es la lista de directorios donde se buscar&aacuten los comandos ejecutables. Los comandos de X11 se encuentran en  <code>/usr/X11R6/bin</code>, y &eacuteste necesita estar dentro de su path. XDarwin hace &eacutesto autom&aacuteticamente por defecto, y puede adem&aacutes agregar directorios adicionales donde tenga otros comandos de l&iacutenea.</p>
-<p>Usuarios experimentados pueden tener su path correctamente configurado mediante los archivos de inicio de su interprete de comandos.  En este caso, puede informarle a XDarwin en las Preferencias de Usuario para que no modifique su path. XDarwin arrancar&aacute los clientes X11 iniciales usando el int&eacuterprete de comandos del usuario, seg&uacuten su configuraci&oacuten de login. Un int&eacuterprete de comandos alternativo puede ser especificado en las Preferencias del Usuario. La manera de configurar el path de su int&eacuterprete de comandos depende de cual est&aacute usando, y es generalmente descripta en las p&aacuteginas man del mismo.</p>
-<p>Adem&aacutes, Ud. puede agregar las p&aacuteginas man de X11 a la lista de p&aacuteginas que son consultadas. Estas est&aacuten ubicadas en <code>/usr/X11R6/man</code> y <code>MANPATH</code> es la variable de entorno que contiene los directorios que son consultados.</p>
-
-<h2><a NAME="prefs">Preferencias del Usuario</a></h2>
-<p>Ciertas opciones pueden definirse dentro de "Preferencias...", en el men&uacute de XDarwin. Las opciones dentro de de "Inicio" no surtir&aacuten efecto hasta que la aplicaci&oacuten se reinicie. Las restantes opciones surten efecto inmediatamente. Las diferentes opciones se describen a continuaci&oacuten:</p>
-<h3>General</h3>
-<ul>
-    <li><b>Usar beep del sistema en X11:</b> Cuando esta opci&oacuten est&aacute activa, el sonido de alerta est&aacutendar de Mac OS X se usar&aacute como alerta de X11. Cuando est&aacute desactivada, un simple tono es utilizado (esta es la opci&oacuten por defecto).</li>
-    <li><b>Permitir que X11 cambie la aceleraci&oacuten del mouse:</b> En una implementaci&oacuten est&aacutendard de X11, el window manager puede cambiar la aceleraci&oacuten del mouse. Esto puede llevar a una gran confusi&oacuten si la aceleraci&oacuten es diferente en XDarwin y en Mac OS X. Por defecto, no se le permite a X11 alterar la aceleraci&oacuten para evitar este inconveniente.</li>
-    <li><b>Emulaci&oacuten de mouse multi-bot&oacuten:</b> Esta opci&oacuten es descripta m&aacutes arriba bajo <a HREF="#usage">Modo de Uso</a>. Cuando esta emulaci&oacuten est&aacute activa los modificadores seleccionados deben ser presionados cuando se hace click para emular el bot&oacuten 2 o el bot&oacuten 3.</li>
-</ul>
-<h3>Inicio</h3>
-<ul>
-    <li><b>Modo inicial:</b> Si el usuario no indica si desea utilizar la Pantalla Completa o el modo Rootless, el modo especificado aqu&iacute ser&aacute el usado.</li>
-    <li><b>Mostrar panel de selecci&oacuten al inicio:</b> Por defecto, un di&aacutelogo permite al usuario elegir entre Pantalla Completa o Rootless al inicio. Si esta opci&oacuten esta desactivada, XDarwin arrancar&aacute utilizando el modo por defecto sin consultar al usuario.</li>
-    <li><b>N&uacutemero de display X11:</b> X11 permite que existan m&uacuteltiples pantallas manejadas por servidores X11 separados funcionando en una misma computadora. El usuario puede especificar aqui un n&uacutemero entero para indicar el n&uacutemero de pantalla (display) que XDarwin utilizar&aacute si m&aacutes de un servidor X funciona en forma simult&aacutenea.</li>
-    <li><b>Habilitar soporte Xinerama para m&uacuteltipes monitores:</b> XDarwin suporta m&uacuteltiple monitores con Xinerama, que maneja todos los monitores como si fueran parte de una gran pantalla rectangular. Puede deshabilitar Xinerama con esta opci&oacuten, pero XDarwin no maneja m&uacuteltiples monitores en forma correcta sin esta opci&oacuten habilitada. Si tiene solo un monitor, Xinerama es autom&aacuteticamente deshabilitado.</li>
-    <li><b>Archivo de mapa de teclado:</b> Un archivo de mapa de teclas es le&iacutedo al inicio y es traducido a un keymap X11 (un archivo est&aacutendard de X11 para especificar la funci&oacuten de cada tecla). Estos archivos, disponibles para una amplia variedad de lenguajes, pueden encontrarse en  <code>/System/Library/Keyboards</code>.</li>
-    <li><b>Al iniciar clientes X11:</b> Cuando XDarwin arranca desde el Finder, &eacuteste ejecutar&aacute <code>xinit</code> para a su vez arrancar el window manager y otros clientes. (Vea en "<code>man xinit</code>" para mayor informaci&oacuten). Antes de ejecutar <code>xinit</code> XDarwin agregar&aacute los directorios especificados al path del usuario. Por defecto, solo <code>/usr/X11R6/bin</code> es agregado. Otros directorios adicionales puede agregarse separados por dos puntos (:). Los clientes X son ejecutados con el int&eacuterprete de comandos del usuario, por lo que los archivos de inicio de &eacuteste son le&iacutedos. Si se desea, un int&eacuterprete de comandos diferente puede ser especificado.</li>
-</ul>
-<h3>Pantalla Completa</h3>
-<ul>
-    <li><b>Bot&oacuten para definir combinaci&oacuten de teclas:</b> Haga click en este bot&oacuten y luego presione cualquier combinaci&oacuten de modificadores seguidos de una tecla convencional para definir que combinaci&oacuten usar&aacute para intercambiar entre X11 y Aqua.</li>
-    <li><b>Click en el &iacutecono del Dock cambia a X11:</b> Habilite esta opci&oacuten para volver a X11 al hacer click en &iacutecono de XDarwin en el Dock. En algunas versiones de Mac OS X, al volver haciendo click en el Dock puede causar al desaparci&oacuten del cursor al volver a Aqua.</li>
-    <li><b>Mostrar ayuda al inicio:</b> Esta opci&oacuten habilitada har&aacute que una pantalla inicial de introducci&oacuten aparezca cuando XDarwin es arrancado en modo Pantalla Completa.</li>
-    <li><b>Profundidad de color (bits):</b> En modo Pantalla Completa, el display X11 puede utilizar una profundidad de color diferente de la utilizada por Aqua. Si se especifica "Actual", la misma profundidad de color que Aqua utiliza ser&aacute adoptada por X11. Al contrario, puede especificar 8, 15, o 24 bits.</li>
-</ul>
-
-<h2><a NAME="license">Licencia</a></h2>
-La licencia principal de XDarwin es basada en la Licencia MIT X11 tradicional, que no impone condiciones a la modificaci&oacuten o redistribuci&oacuten del c&oacutedigo fuente o de archivos binarios m&aacutes all&aacute de requerir que los mensajes de Licencia y Copyright se mantengan intactos. Para mayor informaci&oacuten y para mensajes adicionales de Licencia y Copyright que cubren algunas secciones del c&oacutedigo fuente, por favor consulte the source code.
-<H3><A NAME="3"></A>Licencia del X Consortium</H3>
-<p>Copyright (C) 1996 X Consortium</p>
-<p>Se otorga aqui permiso, libre de costo, a toda persona que obtenga una copia de este Software y los archivos de documentaci&oacuten asociados (el "Software"),
-para utilizar el Software sin restricciones, incluyendo sin l&iacutemites los derechos de usar, copiar, modificar, integrar con otros productos, publicar, distribuir, sub-licenciar y/o comercializar copias del Software, y de permitir a las personas que lo reciben para hacer lo propio, sujeto a las siguientes condiciones:</p>
-<p>El mensaje de Copyright indicado m&aacutes arriba y este permiso ser&aacute inclu&iacutedo en todas las copias o porciones sustanciales del Software.</p>
-<p>THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT
-SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
-IN THE SOFTWARE.</p>
-<p>Excepto lo indicado en este mensaje, el nombre del X Consortium no ser&aacute utilizado en propaganda o como medio de promoci&oacuten para la venta, utilizaci&oacuten u otros manejos de este Software sin previa autorizaci&oacuten escrita del X Consortium.</p>
-<p>X Window System es una marca registrada de X Consortium, Inc.</p>
-<H3><A NAME="3"></A>X Consortium License (English)</H3>
-<p>Copyright (C) 1996 X Consortium</p>
-<p>Permission is hereby granted, free of charge, to any person obtaining a 
-copy of this software and associated documentation files (the "Software"),
-to deal in the Software without restriction, including without
-limitation the rights to use, copy, modify, merge, publish, distribute,
-sublicense, and/or sell copies of the Software, and to permit persons to
-whom the Software is furnished to do so, subject to the following conditions:</p>
-<p>The above copyright notice and this permission notice shall be included
-in all copies or substantial portions of the Software.</p>
-<p>THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT
-SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
-IN THE SOFTWARE.</p>
-<p>Except as contained in this notice, the name of the X Consortium shall
-not be used in advertising or otherwise to promote the sale, use or
-other dealings in this Software without prior written authorization from
-the X Consortium.</p>
-<p>X Window System is a trademark of X Consortium, Inc.</p>
-</body>
-</html>
diff --git a/hw/darwin/bundle/Swedish.lproj/Credits.rtf b/hw/darwin/bundle/Swedish.lproj/Credits.rtf
deleted file mode 100644
index 34408e7..0000000
--- a/hw/darwin/bundle/Swedish.lproj/Credits.rtf
+++ /dev/null
@@ -1,168 +0,0 @@
-{\rtf1\mac\ansicpg10000\cocoartf102
-{\fonttbl\f0\fswiss\fcharset77 Helvetica;\f1\fswiss\fcharset77 Helvetica-Bold;\f2\fswiss\fcharset77 Helvetica-Oblique;
-}
-{\colortbl;\red255\green255\blue255;}
-\vieww5160\viewh6300\viewkind0
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural
-
-\f0\fs24 \cf0 This product includes software developed by The XFree86 Project, Inc  (http://www.xfree86.org/) and its contributors. The following people contributed to Darwin/Mac OS X support.\
-\
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc
-
-\f1\b \cf0 Contributors to Xorg Foundation Release:
-\f0\b0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
-\cf0 Kaleb KEITHLEY\
-     
-\f2\i Working left and right Ctrl, Alt (Option), Meta (Command) and Shift keys.
-\f0\i0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
-
-\f1\b \cf0 \
-\f1\b \cf0 Contributors to XFree86 4.4:
-\f0\b0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
-\cf0 John Harper\
-     
-\f2\i Rootless acceleration and Apple-WM extension
-\f0\i0 \
-Torrey T. Lyons\
-     
-\f2\i Project Lead
-\f0\i0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
-
-\f1\b \cf0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc
-\cf0 Additional XonX Contributors to XFree86 4.3:
-\f0\b0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
-\cf0 Fabr\'92cio Luis de Castro\
-     
-\f2\i Portuguese localization
-\f0\i0 \
-Michael Oland\
-     
-\f2\i New XDarwin icon
-\f0\i0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
-
-\f1\b \cf0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc
-\cf0 XonX Contributors to XFree86 4.2:
-\f0\b0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
-\cf0 Rob Braun\
-     
-\f2\i Darwin x86 support
-\f0\i0 \
-Pablo Di Noto\
-
-\f2\i      Spanish localization
-\f0\i0 \
-Paul Edens\
-
-\f2\i      Dutch localization
-\f0\i0 \
-Kyunghwan Kim\
-
-\f2\i      Korean localization
-\f0\i0 \
-Mario Klebsch\
-     
-\f2\i Non-US keyboard support
-\f0\i0 \
-Torrey T. Lyons\
-     
-\f2\i Project Lead
-\f0\i0 \
-Andreas Monitzer\
-     
-\f2\i German localization
-\f0\i0 \
-Patrik Montgomery\
-
-\f2\i      Swedish localization
-\f0\i0 \
-Greg Parker\
-     
-\f2\i Rootless support
-\f0\i0 \
-Toshimitsu Tanaka\
-     
-\f2\i Japanese localization
-\f0\i0 \
-Olivier Verdier\
-
-\f2\i      French localization
-\f0\i0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
-
-\f1\b \cf0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc
-\cf0 Special Thanks:
-\f0\b0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
-\cf0 Devin Poolman and Zero G Software, Inc.\
-
-\f2\i      Installer
-\f0\i0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
-
-\f1\b \cf0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc
-\cf0 XonX Team Members\
-Contributing to XFree86 4.1:
-\f0\b0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
-\cf0 Rob Braun\
-     
-\f2\i Darwin x86 support
-\f0\i0 \
-Torrey T. Lyons\
-     
-\f2\i Project Lead
-\f0\i0 \
-Andreas Monitzer\
-     
-\f2\i Cocoa version of XDarwin front end
-\f0\i0 \
-Greg Parker\
-     
-\f2\i Original Quartz implementation
-\f0\i0 \
-Christoph Pfisterer\
-     
-\f2\i Dynamic shared libraries
-\f0\i0 \
-Toshimitsu Tanaka\
-     
-\f2\i Japanese localization
-\f0\i0 \
-\
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc
-
-\f1\b \cf0 Special Thanks:
-\f0\b0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
-\cf0 Tiago Ribeiro\
-     
-\f2\i XDarwin icon
-\f0\i0 \
-\
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc
-
-\f1\b \cf0 History:
-\f0\b0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
-\cf0 John Carmack\
-     
-\f2\i Original XFree86 port to Mac OS X Server
-\f0\i0 \
-Dave Zarzycki\
-     
-\f2\i XFree86 4.0 port to Darwin 1.0
-\f0\i0 \
-Torrey T. Lyons\
-     
-\f2\i Integration into XFree86 Project for 4.0.2}
\ No newline at end of file
diff --git a/hw/darwin/bundle/Swedish.lproj/Localizable.strings b/hw/darwin/bundle/Swedish.lproj/Localizable.strings
deleted file mode 100644
index 9709e54..0000000
Binary files a/hw/darwin/bundle/Swedish.lproj/Localizable.strings and /dev/null differ
diff --git a/hw/darwin/bundle/Swedish.lproj/MainMenu.nib/classes.nib b/hw/darwin/bundle/Swedish.lproj/MainMenu.nib/classes.nib
deleted file mode 100644
index 77f345a..0000000
--- a/hw/darwin/bundle/Swedish.lproj/MainMenu.nib/classes.nib
+++ /dev/null
@@ -1,72 +0,0 @@
-{
-    IBClasses = (
-        {
-            ACTIONS = {showHelp = id; }; 
-            CLASS = FirstResponder; 
-            LANGUAGE = ObjC; 
-            SUPERCLASS = NSObject; 
-        }, 
-        {
-            ACTIONS = {close = id; pickFile = id; saveChanges = id; setKey = id; }; 
-            CLASS = Preferences; 
-            LANGUAGE = ObjC; 
-            OUTLETS = {
-                addToPathButton = id; 
-                addToPathField = id; 
-                button2ModifiersMatrix = id; 
-                button3ModifiersMatrix = id; 
-                depthButton = id; 
-                displayField = id; 
-                dockSwitchButton = id; 
-                fakeButton = id; 
-                keymapFileField = id; 
-                modeMatrix = id; 
-                modeWindowButton = id; 
-                mouseAccelChangeButton = id; 
-                startupHelpButton = id; 
-                switchKeyButton = id; 
-                systemBeepButton = id; 
-                useDefaultShellMatrix = id; 
-                useOtherShellField = id; 
-                useXineramaButton = id; 
-                window = id; 
-            }; 
-            SUPERCLASS = NSObject; 
-        }, 
-        {
-            CLASS = XApplication; 
-            LANGUAGE = ObjC; 
-            OUTLETS = {preferences = id; xserver = id; }; 
-            SUPERCLASS = NSApplication; 
-        }, 
-        {
-            ACTIONS = {
-                bringAllToFront = id; 
-                closeHelpAndShow = id; 
-                itemSelected = id; 
-                nextWindow = id; 
-                previousWindow = id; 
-                showAction = id; 
-                showSwitchPanel = id; 
-                startFullScreen = id; 
-                startRootless = id; 
-            }; 
-            CLASS = XServer; 
-            LANGUAGE = ObjC; 
-            OUTLETS = {
-                dockMenu = NSMenu; 
-                helpWindow = NSWindow; 
-                modeWindow = NSWindow; 
-                startFullScreenButton = NSButton; 
-                startRootlessButton = NSButton; 
-                startupHelpButton = NSButton; 
-                startupModeButton = NSButton; 
-                switchWindow = NSPanel; 
-                windowMenu = NSMenu; 
-                windowSeparator = NSMenuItem; 
-            }; 
-            SUPERCLASS = NSObject; 
-        }
-    ); 
-    IBVersion = 1; 
-}
\ No newline at end of file
diff --git a/hw/darwin/bundle/Swedish.lproj/MainMenu.nib/objects.nib b/hw/darwin/bundle/Swedish.lproj/MainMenu.nib/objects.nib
deleted file mode 100644
index 3157d72..0000000
Binary files a/hw/darwin/bundle/Swedish.lproj/MainMenu.nib/objects.nib and /dev/null differ
diff --git a/hw/darwin/bundle/Swedish.lproj/Makefile.am b/hw/darwin/bundle/Swedish.lproj/Makefile.am
deleted file mode 100644
index 19f35a6..0000000
--- a/hw/darwin/bundle/Swedish.lproj/Makefile.am
+++ /dev/null
@@ -1,36 +0,0 @@
-BINDIR = ${bindir}
-include $(top_srcdir)/cpprules.in
-XINITDIR = $(libdir)/X11/xinit
-XDEFS = \
-        -DX_VERSION="$(PLIST_VERSION_STRING)" \
-        -DX_PRE_RELEASE="$(PRE)" \
-        -DX_REL_DATE="$(XORG_DATE)" \
-        -DX_VENDOR_NAME="$(VENDOR_STRING)" \
-        -DX_VENDOR_LINK="$(PLIST_VENDOR_WEB)"
-
-resourcesdir = @APPLE_APPLICATIONS_DIR@/XDarwin.app/Contents/Resources
-
-Swedishlprojdir = $(resourcesdir)/Swedish.lproj
-
-Swedishlproj_DATA = \
-		    XDarwinHelp.html \
-		    InfoPlist.strings \
-		    Credits.rtf Localizable.strings
-
-Swedishlprojnibdir = $(Swedishlprojdir)/MainMenu.nib
-Swedishlprojnib_DATA = MainMenu.nib/classes.nib MainMenu.nib/objects.nib
-
-InfoPlist.strings: $(srcdir)/../English.lproj/InfoPlist.strings.cpp
-	 $(RAWCPP) $(RAWCPPFLAGS) $(XDEFS) $(CPP_FILES_FLAGS) $< | $(CPP_SED_MAGIC) | $(SED) -e's/__quote__/"/g' > $@
-
-XDarwinHelp.html: XDarwinHelp.html.cpp
-	$(RAWCPP) $(RAWCPPFLAGS) $(XDEFS) $(CPP_FILES_FLAGS) $< | $(CPP_SED_MAGIC) > $@
-
-CLEANFILES = XDarwinHelp.html InfoPlist.strings 
-
-EXTRA_DIST = \
-	Credits.rtf Localizable.strings \
-	Localizable.strings \
-	MainMenu.nib/classes.nib \
-	MainMenu.nib/objects.nib \
-	XDarwinHelp.html.cpp
diff --git a/hw/darwin/bundle/Swedish.lproj/XDarwinHelp.html.cpp b/hw/darwin/bundle/Swedish.lproj/XDarwinHelp.html.cpp
deleted file mode 100644
index ab940ec..0000000
--- a/hw/darwin/bundle/Swedish.lproj/XDarwinHelp.html.cpp
+++ /dev/null
@@ -1,101 +0,0 @@
-<html>
-<head>
-<title>XDarwin Help</title>
-</head>
-<body>
-<center>
-    <h1>XDarwin X Server for Mac OS X</h1>
-    X_VENDOR_NAME X_VERSION<br>
-    F&auml;rdigst&auml;llt: X_REL_DATE
-</center>
-<h2>Inneh&aring;ll</h2>
-<ol>
-    <li><A HREF="#notice">Viktigt!</A></li>
-    <li><A HREF="#usage">Anv&auml;ndande</A></li>
-    <li><A HREF="#path">Att st&auml;lla in sin s&ouml;kv&auml;g</A></li>
-    <li><A HREF="#prefs">Inst&auml;llningar</A></li>
-    <li><A HREF="#license">Licens</A></li>
-</ol>
-<center>
-    <h2><a NAME="notice">Viktigt!</a></h2>
-</center>
-<blockquote>
-#if PRE_RELEASE
-Detta &auml;r en testversion av XDarwin, och du kan inte garranteras n&aring;gon som helst support f&ouml;r den. Buggar och fel kan rapporteras och f&ouml;rslag till fixar kan skickas till <A HREF="http://sourceforge.net/projects/xonx/">XonX-projektets sida</A> p&aring; SourceForge.  Innan du rapporterar buggar i testversioner, var god pr&ouml;va den senaste versionen fr&aring;n <A HREF="http://sourceforge.net/projects/xonx/">XonX</A> eller i X_VENDOR_LINK.
-#else
-Om servern &auml;r &auml;ldre &auml;n 6-12 m&aring;nader, eller om din h&aring;rdvara &auml;r nyare &auml;n datumet ovan, leta efter en nyare version innan du rapporterar fel. Buggar och fel kan rapporteras och f&ouml;rslag till fixar kan skickas till <A HREF="http://sourceforge.net/projects/xonx/">XonX-projektets sida</A> p&aring; SourceForge.
-#endif
-</blockquote>
-<blockquote>
-Denna programvara distrubueras i enlighet med <A HREF="#license">MIT X11 / X Consortium License</A> och tilhandh&aring;lls som den &auml;r, helt utan garantier. Var god l&auml;s igenom <A HREF="#license">licensdokumentet (engelska)</A> innan du anv&auml;nder programmet.</blockquote>
-
-<h2><a NAME="usage">Anv&auml;ndande</a></h2>
-<p>XDarwin &auml;r en fritt spridd X server av <a HREF
-="http://www.x.org/">X Window-systemet</a>. This version of XDarwin was produced by the X_VENDOR_LINK. XDarwin kan k&ouml;ras p&aring; Mac OS X i fullsk&auml;rmsl&auml;ge eller rotl&ouml;st l&auml;ge.</p>
-<p>I fullsk&auml;rmsl&auml;ge kommer X window-systemet att ta &ouml;ver hela sk&auml;rmen n&auml;r det &auml;r aktivt. Du kan byta tillbaka till Mac OS Xs skrivbord genom att trycka Kommando-Alt-A. Denna tangentkombination kan &auml;ndra i inst&auml;llningarna. N&auml;r du &auml;r p&aring; Mac OS Xs skrivbord kan du klicka p&aring; XDarwin-ikonen i dockan f&ouml;r att byta tillbaka till X Window-systemet. (Du kan f&ouml;r&auml;ndra detta beteende i inst&auml;llningarna s&aring; att du ist&auml;llet m&aring;ste klicka i det fltande bytesf&ouml;nstret ist&auml;llet.)</p>
-<p>I rotl&ouml;stl&auml;ge delar X11 och Aqua p&aring; din sk&auml;rm. Rotf&ouml;nstret p&aring; X11-sk&auml;rmen &auml;r av samma storlek som hela sk&auml;rmen och inneh&aring;ller alla andra f&ouml;nster - det fungerar som bakgrund. I rotl&ouml;stl&auml;ge visas inte detta rotf&ouml;nster, eftersom Aqua hanterar skrvbordbakgrunden.</p>
-
-<h3>Emulering av flerknapparsmus</h3>
-<p>M&aring;nga X11-program utnyttjar en treknapparsmus. Du kan emulera en treknapparsmus med en knapp genom att h&aring;lla ner olika knappar p&aring; tangentbordet medan du klickar med musens enda knapp. Denna funktion styrs av inst&auml;llningarna i  "Emulera flerknapparsmus" under fliken "Diverse" i inst&auml;llningarna. Grundinst&auml;llningen &auml;r att emulationen &auml;r aktiv  och att ett kommando-klick (H&aring;ll ner kommando och klicka) simulerar den andra musknappen. Den tredje musknappen f&aring;s genom att h&aring;lla ner alt och klicka. Du kan &auml;ndra detta till n&aring;gon annan kombination av de fem tangenterna kommando, alt, kontrol, skift och fn (Powerbook/iBook). Notera att om dessa knappar har flyttats med hj&auml;lp av kommandot xmodmap kommer denna f&ouml;r&auml;ndring inte att p&aring;verka vilka knappar som anv&auml;nds vid flerknappsemulationen.</p>
-
-<h2><a NAME="path">Att st&auml;lla in sin s&ouml;kv&auml;g</a></h2>
-<p>Din s&ouml;kv&auml;g &auml;r en lista av kataloger som s&ouml;ks igenom n&auml;r terminalen letar efter kommandon att exekvera. Kommandon som h&ouml;r till X11 ligger i <code>/usr/X11R6/bin</code>, en katalog som inte ligger i din s&ouml;kv&auml;g fr&aring;n b&ouml;rjan. XDarwin l&auml;gger till denna katalog &aring;t dig, och du kan ocks&aring; l&auml;gga till ytterligare kataloger i vilka du lagt program som skall k&ouml;ras fr&aring;n kommandoraden.</p>
-<p>Mer erfarna anv&auml;ndare har antagligen redan st&auml;llt in sin s&ouml;kv&auml;g i skalets inst&auml;llningsfiler. Om detta g&auml;ller dig  kan st&auml;lla in XDarwin s&aring; att din s&ouml;kv&auml;g inte modifieras. XDarwin startar de f&ouml;rsta X11-klienterna i anv&auml;ndarens inloggningsskal (Vill du anv&auml;nda ett alternativt skall, kan du specificera detta i inst&auml;llningarna). Hur du st&auml;ller in din s&ouml;kv&auml;g beror p&aring; vilket skal du anv&auml;nder. Exakt hur beskrivs i skalets man-sidor.</p>
-
-<p>Ut&ouml;ver detta kan du ocks&aring; vilja l&auml;gga till X11s man-sidor (dokumentation) till listan &auml;ver sidor som som skall s&ouml;kas n&auml;r du vill l&auml;sa efter dokumentationen. X11s man-sidor ligger i <code>/usr/X11R6/man</code> och listan &auml;ver kataloger att s&ouml;ka best&auml;mms av variabeln<code>MANPATH</code>.</p>
-
-<h2><a NAME="prefs">Inst&auml;llningar</a></h2>
-<p>I inst&auml;llningarna finns ett antal alternativ d&auml;r du kan p&aring;verka hur XDarwin beter sig i vissa fall. Inst&auml;llningarna kommer du till genom att v&auml;lja "Inst&auml;llningar..." i menyn "XDarwin". De alternativ som finns under fliken "Starta" tr&auml;der inte i kraft f&ouml;rr&auml;n du startat om programmet. Alla andra alternativ tr&auml;der i kraft omedelbart. De olika alternativen beskrivs nedan:</p>
-<h3>Diverse</h3>
-<ul>
-    <li><b>Anv&auml;nd Mac OS varningsljud i X11:</b> N&auml;r detta alternativ &auml;r valt anv&auml;nds Mac OS vanliga varningsljud &auml;r X11s varningsljud (bell). N&auml;r detta alternativ inte &auml;r valt (f&ouml;rvalt) anv&auml;nds en vanlig ton.</li>
-    <li><b>Till&aring;t X11 att &auml;ndra musens acceleration:</b> I ett vanligt X11-system kan f&ouml;nsterhanteraren &auml;ndra musens acceleration. Detta kan vara f&ouml;rvirrande eftersom musens acceleration kan vara olika i Mac OS Xs System Preferences och i f&ouml;nsterhanteraren i X11. F&ouml;rvalet &auml;r att X11 inte kan &auml;ndra musens acceleration f&ouml;r att p&aring; detta s&auml;tt undvika detta problem.</li>
-    <li><b>Emulera flerknapparsmus:</b> Detta beskrivs ovan under <a HREF="#usage">Anv&auml;ndande</a>. N&auml;r emulationen &auml;r aktiv m&aring;ste du h&aring;lla ner de valda knapparna f&ouml;r att emulera en andra eller tredje musknapp.</li>
-</ul>
-<h3>Starta</h3>
-<ul>
-    <li><b>F&ouml;rvalt l&auml;ge:</b> Om anv&auml;ndaren inte p&aring; annat s&auml;tt v&auml;ljer vilket l&auml;ge som skall anv&auml;ndas kommer alternativet h&auml;r att anv&auml;ndas.</li>
-    <li><b>Visa val av sk&auml;rml&auml;ge vid start:</b> F&ouml;rvalet &auml;r att visa ett f&ouml;nster n&auml;r XDarwin startar som l&aring;ter anv&auml;ndaren v&auml;lja mellan fullsk&auml;rmsl&auml;ge och rotl&ouml;st l&auml;ge. Om detta alternativ inte &auml;r aktivt kommer XDarwin automatiskt att startas i det l&auml;ge som valts ovan.</li>
-    <li><b>Sk&auml;rmnummer i X11:</b> X11 till&aring;ter att det finns flera sk&auml;rmar styrda av varsin X-server p&aring; en och samma dator. Anv&auml;ndaren kan ange vilket nummer XDarwin skall anv&auml;nda om mer &auml;n en X-server skall anv&auml;ndas samtidigt.</li>
-    <li><b>Aktivera Xinerama (st&ouml;d f&ouml;r flera sk&auml;rmar):</b> XDarwin st&ouml;djer flera sk&auml;rmar genom Xinerama, vilket hanterar alla skr&auml;mar som delar av en enda stor rektangul&auml;r sk&auml;rm. Du kan anv&auml;nda detta alternativ f&ouml;r att st&auml;nga av Xinerama, men f&ouml;r n&auml;rvarande kan inte XDarwin hantera flera sk&auml;rmar utan det. Om du bara har en sk&auml;rm kommer Xinerama automatiskt att deaktiveras.</li>
-    <li><b>Fil med tangentbordsupps&auml;ttning:</b> En fil som anger tangentbordsupps&auml;ttning l&auml;ses vid start och &ouml;vers&auml;tts till en tangentborsupps&auml;ttningsfil f&ouml;r X11. Filer med tangentbordsupps&auml;ttningar f&ouml;r ett stort antal spr&aring;k finns i <code>/System/Library/Keyboards</code>.</li>
-    <li><b>Startar f&ouml;rsta X11-klienterna:</b> N&auml;r X11 startas fr&aring;n Finder kommer det att exekvera filen <code>xinit</code> f&ouml;r att starta f&ouml;nsterhanteraren i X11 och andra program. (Se "<code>man xinit</code>" f&ouml;r mer information.) Innan XDarwin k&ouml;r xinit kommer det att l&auml;gga till katalogern h&auml;r till anv&auml;ndarens s&ouml;kv&auml;g. F&ouml;rvalet &auml;r att endast l&auml;gga till katalogen <code>/usr/X11R6/bin</code>. Ytterligare kataloger kan l&auml;ggas till - separera dem med kolon. X11-klienterna startas i anv&auml;ndarens inloggningsskal s&aring; att anv&auml;ndarens inst&auml;llningsfiler i skalet l&auml;ses. Om s&aring; &ouml;nskas kan de startas i ett annat skal.</li>
-</ul>
-<h3>Fullsk&auml;rm</h3>
-<ul>
-    <li><b>Tangentkombinationsknappen:</b> Tryck p&aring; denna knapp och en tangentkombination f&ouml;r att &auml;ndra den tangentkombination som anv&auml;nds f&ouml;r att byta mellan X11 och Aqua.</li>
-    <li><b>Klick p&aring; ikonen i dockan byter till X11:</b> Aktivera detta alternativ f&ouml;r att byta till X11 genom att klicka p&aring; ikonen i dockan. I vissa versioner av Mac OS X kommer ett bte p&aring; detta s&auml;tt att g&ouml;mma pekaren n&auml;r du &aring;terv&auml;nder till Aqua.</li>
-    <li><b>Visa fullsk&auml;rmshj&auml;lp vid start:</b> Detta kommer att visa en informationsruta n&auml;r XDarwin startas i fullsk&auml;rmsl&auml;ge.</li>
-    <li><b>F&auml;rgdjup:</b> I fullsk&auml;rmsl&auml;ge kan X11 anv&auml;nda ett annat f&auml;rgdjup &auml;n Aquas. Om du v&auml;jer "Nuvarande" kommer X11 att anv&auml;nda det f&auml;rgdjup som Aqua har just d&aring;.  Annars kan du v&auml;lja 8, 15, eller 24 bitare f&auml;rg.</li>
-</ul>
-
-<h2><a NAME="license">Licens (svenska)</a></h2>
-<p>Den huvudsakliga licens vi anv&auml;nder oss av &auml;r baserad p&aring; den traditionella MIT X11 / XConsortium-licensen, vilken inte p&aring; n&aring;got s&auml;tt begr&auml;nsar f&ouml;r&auml;ndringar eller vidarespridning av vare sig k&auml;llkod eller kompilerad programvara annat &auml;n genom att kr&auml;va att delarna som r&ouml;r copyright och licensiering l&auml;mnas intakta. F&ouml;r mer information och ytterligare copyright/licensieringsinfromation r&ouml;rande vissa speciella delar av koden, se the source code.</p>
-
-<h3>Licence (english)</h3>
-<p>The main license for XDarwin is based on the traditional MIT X11 / X Consortium License, which does not impose any conditions on modification or redistribution of source code or binaries other than requiring that copyright/license notices are left intact. For more information and additional copyright/licensing notices covering some sections of the code, please refer to the source code.</p>
-
-<H3><A NAME="3"></A>X Consortium License</H3>
-<p>Copyright (C) 1996 X Consortium</p>
-<p>Permission is hereby granted, free of charge, to any person obtaining a 
-copy of this software and associated documentation files (the "Software"),
-to deal in the Software without restriction, including without
-limitation the rights to use, copy, modify, merge, publish, distribute,
-sublicense, and/or sell copies of the Software, and to permit persons to
-whom the Software is furnished to do so, subject to the following conditions:</p>
-<p>The above copyright notice and this permission notice shall be included
-in all copies or substantial portions of the Software.</p>
-<p>THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT
-SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
-IN THE SOFTWARE.</p>
-<p>Except as contained in this notice, the name of the X Consortium shall
-not be used in advertising or otherwise to promote the sale, use or
-other dealings in this Software without prior written authorization from
-the X Consortium.</p>
-<p>X Window System is a trademark of X Consortium, Inc.</p>
-</body>
-</html>
diff --git a/hw/darwin/bundle/XDarwin.icns b/hw/darwin/bundle/XDarwin.icns
deleted file mode 100644
index 9c56084..0000000
Binary files a/hw/darwin/bundle/XDarwin.icns and /dev/null differ
diff --git a/hw/darwin/bundle/ko.lproj/Credits.rtf b/hw/darwin/bundle/ko.lproj/Credits.rtf
deleted file mode 100644
index 34408e7..0000000
--- a/hw/darwin/bundle/ko.lproj/Credits.rtf
+++ /dev/null
@@ -1,168 +0,0 @@
-{\rtf1\mac\ansicpg10000\cocoartf102
-{\fonttbl\f0\fswiss\fcharset77 Helvetica;\f1\fswiss\fcharset77 Helvetica-Bold;\f2\fswiss\fcharset77 Helvetica-Oblique;
-}
-{\colortbl;\red255\green255\blue255;}
-\vieww5160\viewh6300\viewkind0
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural
-
-\f0\fs24 \cf0 This product includes software developed by The XFree86 Project, Inc  (http://www.xfree86.org/) and its contributors. The following people contributed to Darwin/Mac OS X support.\
-\
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc
-
-\f1\b \cf0 Contributors to Xorg Foundation Release:
-\f0\b0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
-\cf0 Kaleb KEITHLEY\
-     
-\f2\i Working left and right Ctrl, Alt (Option), Meta (Command) and Shift keys.
-\f0\i0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
-
-\f1\b \cf0 \
-\f1\b \cf0 Contributors to XFree86 4.4:
-\f0\b0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
-\cf0 John Harper\
-     
-\f2\i Rootless acceleration and Apple-WM extension
-\f0\i0 \
-Torrey T. Lyons\
-     
-\f2\i Project Lead
-\f0\i0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
-
-\f1\b \cf0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc
-\cf0 Additional XonX Contributors to XFree86 4.3:
-\f0\b0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
-\cf0 Fabr\'92cio Luis de Castro\
-     
-\f2\i Portuguese localization
-\f0\i0 \
-Michael Oland\
-     
-\f2\i New XDarwin icon
-\f0\i0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
-
-\f1\b \cf0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc
-\cf0 XonX Contributors to XFree86 4.2:
-\f0\b0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
-\cf0 Rob Braun\
-     
-\f2\i Darwin x86 support
-\f0\i0 \
-Pablo Di Noto\
-
-\f2\i      Spanish localization
-\f0\i0 \
-Paul Edens\
-
-\f2\i      Dutch localization
-\f0\i0 \
-Kyunghwan Kim\
-
-\f2\i      Korean localization
-\f0\i0 \
-Mario Klebsch\
-     
-\f2\i Non-US keyboard support
-\f0\i0 \
-Torrey T. Lyons\
-     
-\f2\i Project Lead
-\f0\i0 \
-Andreas Monitzer\
-     
-\f2\i German localization
-\f0\i0 \
-Patrik Montgomery\
-
-\f2\i      Swedish localization
-\f0\i0 \
-Greg Parker\
-     
-\f2\i Rootless support
-\f0\i0 \
-Toshimitsu Tanaka\
-     
-\f2\i Japanese localization
-\f0\i0 \
-Olivier Verdier\
-
-\f2\i      French localization
-\f0\i0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
-
-\f1\b \cf0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc
-\cf0 Special Thanks:
-\f0\b0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
-\cf0 Devin Poolman and Zero G Software, Inc.\
-
-\f2\i      Installer
-\f0\i0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
-
-\f1\b \cf0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc
-\cf0 XonX Team Members\
-Contributing to XFree86 4.1:
-\f0\b0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
-\cf0 Rob Braun\
-     
-\f2\i Darwin x86 support
-\f0\i0 \
-Torrey T. Lyons\
-     
-\f2\i Project Lead
-\f0\i0 \
-Andreas Monitzer\
-     
-\f2\i Cocoa version of XDarwin front end
-\f0\i0 \
-Greg Parker\
-     
-\f2\i Original Quartz implementation
-\f0\i0 \
-Christoph Pfisterer\
-     
-\f2\i Dynamic shared libraries
-\f0\i0 \
-Toshimitsu Tanaka\
-     
-\f2\i Japanese localization
-\f0\i0 \
-\
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc
-
-\f1\b \cf0 Special Thanks:
-\f0\b0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
-\cf0 Tiago Ribeiro\
-     
-\f2\i XDarwin icon
-\f0\i0 \
-\
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc
-
-\f1\b \cf0 History:
-\f0\b0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
-\cf0 John Carmack\
-     
-\f2\i Original XFree86 port to Mac OS X Server
-\f0\i0 \
-Dave Zarzycki\
-     
-\f2\i XFree86 4.0 port to Darwin 1.0
-\f0\i0 \
-Torrey T. Lyons\
-     
-\f2\i Integration into XFree86 Project for 4.0.2}
\ No newline at end of file
diff --git a/hw/darwin/bundle/ko.lproj/Localizable.strings b/hw/darwin/bundle/ko.lproj/Localizable.strings
deleted file mode 100644
index fb8c77e..0000000
Binary files a/hw/darwin/bundle/ko.lproj/Localizable.strings and /dev/null differ
diff --git a/hw/darwin/bundle/ko.lproj/MainMenu.nib/classes.nib b/hw/darwin/bundle/ko.lproj/MainMenu.nib/classes.nib
deleted file mode 100644
index 77f345a..0000000
--- a/hw/darwin/bundle/ko.lproj/MainMenu.nib/classes.nib
+++ /dev/null
@@ -1,72 +0,0 @@
-{
-    IBClasses = (
-        {
-            ACTIONS = {showHelp = id; }; 
-            CLASS = FirstResponder; 
-            LANGUAGE = ObjC; 
-            SUPERCLASS = NSObject; 
-        }, 
-        {
-            ACTIONS = {close = id; pickFile = id; saveChanges = id; setKey = id; }; 
-            CLASS = Preferences; 
-            LANGUAGE = ObjC; 
-            OUTLETS = {
-                addToPathButton = id; 
-                addToPathField = id; 
-                button2ModifiersMatrix = id; 
-                button3ModifiersMatrix = id; 
-                depthButton = id; 
-                displayField = id; 
-                dockSwitchButton = id; 
-                fakeButton = id; 
-                keymapFileField = id; 
-                modeMatrix = id; 
-                modeWindowButton = id; 
-                mouseAccelChangeButton = id; 
-                startupHelpButton = id; 
-                switchKeyButton = id; 
-                systemBeepButton = id; 
-                useDefaultShellMatrix = id; 
-                useOtherShellField = id; 
-                useXineramaButton = id; 
-                window = id; 
-            }; 
-            SUPERCLASS = NSObject; 
-        }, 
-        {
-            CLASS = XApplication; 
-            LANGUAGE = ObjC; 
-            OUTLETS = {preferences = id; xserver = id; }; 
-            SUPERCLASS = NSApplication; 
-        }, 
-        {
-            ACTIONS = {
-                bringAllToFront = id; 
-                closeHelpAndShow = id; 
-                itemSelected = id; 
-                nextWindow = id; 
-                previousWindow = id; 
-                showAction = id; 
-                showSwitchPanel = id; 
-                startFullScreen = id; 
-                startRootless = id; 
-            }; 
-            CLASS = XServer; 
-            LANGUAGE = ObjC; 
-            OUTLETS = {
-                dockMenu = NSMenu; 
-                helpWindow = NSWindow; 
-                modeWindow = NSWindow; 
-                startFullScreenButton = NSButton; 
-                startRootlessButton = NSButton; 
-                startupHelpButton = NSButton; 
-                startupModeButton = NSButton; 
-                switchWindow = NSPanel; 
-                windowMenu = NSMenu; 
-                windowSeparator = NSMenuItem; 
-            }; 
-            SUPERCLASS = NSObject; 
-        }
-    ); 
-    IBVersion = 1; 
-}
\ No newline at end of file
diff --git a/hw/darwin/bundle/ko.lproj/MainMenu.nib/objects.nib b/hw/darwin/bundle/ko.lproj/MainMenu.nib/objects.nib
deleted file mode 100644
index 8f9b5e0..0000000
Binary files a/hw/darwin/bundle/ko.lproj/MainMenu.nib/objects.nib and /dev/null differ
diff --git a/hw/darwin/bundle/ko.lproj/Makefile.am b/hw/darwin/bundle/ko.lproj/Makefile.am
deleted file mode 100644
index 56dd6b3..0000000
--- a/hw/darwin/bundle/ko.lproj/Makefile.am
+++ /dev/null
@@ -1,37 +0,0 @@
-BINDIR = ${bindir}
-include $(top_srcdir)/cpprules.in
-XINITDIR = $(libdir)/X11/xinit
-XDEFS = \
-        -DX_VERSION="$(PLIST_VERSION_STRING)" \
-        -DX_PRE_RELEASE="$(PRE)" \
-        -DX_REL_DATE="$(XORG_DATE)" \
-        -DX_VENDOR_NAME="$(VENDOR_STRING)" \
-        -DX_VENDOR_LINK="$(PLIST_VENDOR_WEB)"
-
-
-resourcesdir = @APPLE_APPLICATIONS_DIR@/XDarwin.app/Contents/Resources
-
-kolprojdir = $(resourcesdir)/ko.lproj
-
-kolproj_DATA = \
-		    XDarwinHelp.html \
-		    InfoPlist.strings \
-		    Credits.rtf Localizable.strings
-
-kolprojnibdir = $(kolprojdir)/MainMenu.nib
-kolprojnib_DATA = MainMenu.nib/classes.nib MainMenu.nib/objects.nib
-
-InfoPlist.strings: $(srcdir)/../English.lproj/InfoPlist.strings.cpp
-	 $(RAWCPP) $(RAWCPPFLAGS) $(XDEFS) $(CPP_FILES_FLAGS) $< | $(CPP_SED_MAGIC) | $(SED) -e's/__quote__/"/g' > $@
-
-XDarwinHelp.html: XDarwinHelp.html.cpp
-	$(RAWCPP) $(RAWCPPFLAGS) $(XDEFS) $(CPP_FILES_FLAGS) $< | $(CPP_SED_MAGIC) > $@
-
-CLEANFILES = XDarwinHelp.html InfoPlist.strings 
-
-EXTRA_DIST = \
-	Credits.rtf Localizable.strings \
-	Localizable.strings \
-	MainMenu.nib/classes.nib \
-	MainMenu.nib/objects.nib \
-	XDarwinHelp.html.cpp
diff --git a/hw/darwin/bundle/ko.lproj/XDarwinHelp.html.cpp b/hw/darwin/bundle/ko.lproj/XDarwinHelp.html.cpp
deleted file mode 100644
index db33670..0000000
--- a/hw/darwin/bundle/ko.lproj/XDarwinHelp.html.cpp
+++ /dev/null
@@ -1,94 +0,0 @@
-<html>
-<head>
-<title>XDarwin Help</title>
-</head>
-<body>
-<center>
-    <h1>XDarwin X Server for Mac OS X</h1>
-    X_VENDOR_NAME X_VERSION<br>
-    Release Date: X_REL_DATE
-</center>
-<h2>Contents</h2>
-<ol>
-    <li><A HREF="#notice">Important Notice</A></li>
-    <li><A HREF="#usage">Usage</A></li>
-    <li><A HREF="#path">Setting Your Path</A></li>
-    <li><A HREF="#prefs">User Preferences</A></li>
-    <li><A HREF="#license">License</A></li>
-</ol>
-<center>
-    <h2><a NAME="notice">Important Notice</a></h2>
-</center>
-<blockquote>
-#if X_PRE_RELEASE
-This is a pre-release version of XDarwin, and is not supported in any way. Bugs may be reported and patches may be submitted to the <A HREF="http://sourceforge.net/projects/xonx/">XonX project page</A> at SourceForge.  Before reporting bugs in pre-release versions, please check the latest version from <A HREF="http://sourceforge.net/projects/xonx/">XonX</A> or the X_VENDOR_LINK.
-#else
-If the server is older than 6-12 months, or if your hardware is newer than the above date, look for a newer version before reporting problems. Bugs may be reported and patches may be submitted to the <A HREF="http://sourceforge.net/projects/xonx/">XonX project page</A> at SourceForge.
-#endif
-</blockquote>
-<blockquote>
-This software is distributed under the terms of the <A HREF="#license">MIT X11 / X Consortium License</A> and is provided AS IS, with no warranty. Please read the <A HREF="#license">License</A> before using.</blockquote>
-
-<h2><a NAME="usage">Usage</a></h2>
-<p>XDarwin is a freely redistributable open-source X server for the <a HREF="http://www.x.org/">X Window System</a>. This version of XDarwin was produced by the X_VENDOR_LINK. XDarwin runs on Mac OS X in full screen or rootless modes.</p>
-<p>In full screen mode, when the X window system is active, it takes over the entire screen. You can switch back to the Mac OS X desktop by holding down Command-Option-A. This key combination can be changed in the user preferences. From the Mac OS X desktop, click on the XDarwin icon in the Dock to switch back to the X window system.  (You can change this behavior in the user preferences so that you must click the XDarwin icon in the floating switch window instead.)</p>
-<p>In rootless mode, the X window system and Aqua share your display. The root window of the X11 display is the size of the screen and contains all the other windows. The X11 root window is not displayed in rootless mode as Aqua handles the desktop background.</p>
-<h3>Multi-Button Mouse Emulation</h3>
-<p>Many X11 applications rely on the use of a 3-button mouse. You can emulate a 3-button mouse with a single button by holding down various modifier keys while you click the mouse button. This is controlled by settings in the "Multi-Button Mouse Emulation" section of the "General" preferences. By default, emulation is on and holding down the command key and clicking the mouse button will simulate clicking the second mouse button. Holding down the option key and clicking will simulate the third button. You can change to any combination of modifiers to emulate buttons two and three in the preferences. Note, even if the modifiers keys are mapped to some other key with xmodmap, you still must use the actual keys specified in the preferences for multi-button mouse emulation.</p>
-
-<h2><a NAME="path">Setting Your Path</a></h2>
-<p>Your path is the list of directories to be searched for executable commands. The X11 commands are located in <code>/usr/X11R6/bin</code>, which needs to be added to your path. XDarwin does this for you by default and can also add additional directories where you have installed command line applications.</p>
-<p>More experienced users will have already set their path correctly using the initialization files for their shell. In this case, you can inform XDarwin not to modify your path in the preferences. XDarwin launches the initial X11 clients in the user's default login shell. (An alternate shell can also be specified in the preferences.) The way to set the path depends on the shell you are using. This is described in the man page documentation for the shell.</p>
-<p>In addition you may also want to add the X11 man pages to the list of pages to be searched when you are looking for documentation. The X11 man pages are located in <code>/usr/X11R6/man</code> and the <code>MANPATH</code> environment variable contains the list of directories to search.</p>
-
-<h2><a NAME="prefs">User Preferences</a></h2>
-<p>A number of options may be set from the user preferences, accessible from the "Preferences..." menu item in the "XDarwin" menu. The options listed as start up options will not take effect until you have restarted XDarwin. All other options take effect immediately. The various options are described below:</p>
-<h3>General</h3>
-<ul>
-    <li><b>Use System beep for X11:</b> When enabled the standard Mac OS X alert sound is used as the X11 bell. When disabled (default) a simple tone is used.</li>
-    <li><b>Allow X11 to change mouse acceleration:</b> In a standard X window system implementation, the window manager can change the mouse acceleration. This can lead to confusion as the mouse acceleration may be set to different values by the Mac OS X System Preferences and the X window manager. By default, X11 is not allowed to change the mouse acceleration to avoid this problem.</li>
-    <li><b>Multi-Button Mouse Emulation:</b> This is described above under <a HREF="#usage">Usage</a>. When emulation is enabled the selected modifiers must be held down when the mouse button is pushed to emulate the second or third mouse buttons.</li>
-</ul>
-<h3>Start Up</h3>
-<ul>
-    <li><b>Default Mode:</b> If the user does not indicate whether to run in full screen or rootless mode, the mode specified here will be used.</li>
-    <li><b>Show mode pick panel on startup:</b> By default, a panel is displayed when XDarwin is started to allow the user to choose between full screen or rootless mode. If this option is turned off, the default mode will be started automatically.</li>
-    <li><b>X11 Display number:</b> X11 allows there to be multiple displays managed by separate X servers on a single computer. The user may specify an integer display number for XDarwin to use if more than one X server is going to be run simultaneously.</li>
-    <li><b>Allow Xinerama multiple monitor support:</b> XDarwin supports multiple monitors with Xinerama, which treats all monitors as being part of one large rectangular screen. You can disable Xinerama with this option, but currently XDarwin does not handle multiple monitors correctly without it. If you only have a single monitor, Xinerama is automatically disabled.</li>
-    <li><b>Keymapping File:</b> A keymapping file is read at startup and translated to an X11 keymap. Keymapping files, available for a wide variety of languages, are found in <code>/System/Library/Keyboards</code>.</li>
-    <li><b>Starting First X11 Clients:</b> When XDarwin is started from the Finder, it will run <code>xinit</code> to launch the X window manager and other X clients. (See "<code>man xinit</code>" for more information.) Before XDarwin runs <code>xinit</code> it will add the specified directories to the user's path. By default only <code>/usr/X11R6/bin</code> is added. Additional directories may added, separated by a colon. The X clients are started in the user's default login shell so that the user's shell initialization files are read. If desired, an alternate shell may be specified.</li>
-</ul>
-<h3>Full Screen</h3>
-<ul>
-    <li><b>Key combination button:</b> Click this button and then press any number of modifiers followed by a standard key to change the key combination to switch between Aqua and X11.</li>
-    <li><b>Click on icon in Dock switches to X11:</b> Enable this to activate switching to X11 by clicking on the XDarwin icon in the Dock. On some versions of Mac OS X, switching by clicking in the Dock can cause the cursor to disappear on returning to Aqua.</li>
-    <li><b>Show help on startup:</b> This will show an introductory splash screen when XDarwin is started in full screen mode.</li>
-    <li><b>Color bit depth:</b> In full screen mode, the X11 display can use a different color bit depth than is used by Aqua. If "Current" is specified, the depth used by Aqua when XDarwin starts will be used. Otherwise 8, 15, or 24 bits may be specified.</li>
-</ul>
-
-<h2><a NAME="license">License</a></h2>
-The main license for XDarwin is based on the traditional MIT X11 / X Consortium License, which does not impose any conditions on modification or redistribution of source code or binaries other than requiring that copyright/license notices are left intact. For more information and additional copyright/licensing notices covering some sections of the code, please refer to the source code.
-<H3><A NAME="3"></A>X Consortium License</H3>
-<p>Copyright (C) 1996 X Consortium</p>
-<p>Permission is hereby granted, free of charge, to any person obtaining a 
-copy of this software and associated documentation files (the "Software"),
-to deal in the Software without restriction, including without
-limitation the rights to use, copy, modify, merge, publish, distribute,
-sublicense, and/or sell copies of the Software, and to permit persons to
-whom the Software is furnished to do so, subject to the following conditions:</p>
-<p>The above copyright notice and this permission notice shall be included
-in all copies or substantial portions of the Software.</p>
-<p>THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT
-SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
-IN THE SOFTWARE.</p>
-<p>Except as contained in this notice, the name of the X Consortium shall
-not be used in advertising or otherwise to promote the sale, use or
-other dealings in this Software without prior written authorization from
-the X Consortium.</p>
-<p>X Window System is a trademark of X Consortium, Inc.</p>
-</body>
-</html>
diff --git a/hw/darwin/bundle/startXClients.cpp b/hw/darwin/bundle/startXClients.cpp
deleted file mode 100644
index f812dbf..0000000
--- a/hw/darwin/bundle/startXClients.cpp
+++ /dev/null
@@ -1,22 +0,0 @@
-XCOMM!/bin/sh
-
-XCOMM This script is used by XDarwin to start X clients when XDarwin is
-XCOMM launched from the Finder.
-
-userclientrc=$HOME/.xinitrc
-sysclientrc=XINITDIR/xinitrc
-clientargs=""
-
-if [ -f $userclientrc ]; then
-    clientargs=$userclientrc
-else if [ -f $sysclientrc ]; then
-    clientargs=$sysclientrc
-fi
-fi
-
-if [ "x$2" != "x" ]; then
-    PATH="$PATH:$2"
-    export PATH
-fi
-
-exec xinit $clientargs -- XBINDIR/XDarwinStartup "$1" -idle
diff --git a/hw/darwin/darwin.c b/hw/darwin/darwin.c
index c32cd54..22e1338 100644
--- a/hw/darwin/darwin.c
+++ b/hw/darwin/darwin.c
@@ -67,6 +67,11 @@
 #include <IOKit/hidsystem/IOHIDLib.h>
 #include <IOKit/hidsystem/ev_keymap.h>
 
+#ifdef MITSHM
+#define _XSHM_SERVER_
+#include <X11/extensions/XShm.h>
+#endif
+
 #include "darwin.h"
 #include "darwinClut8.h"
 
@@ -180,7 +185,9 @@ static Bool DarwinAddScreen(
 
     // allocate space for private per screen storage
     dfb = xalloc(sizeof(DarwinFramebufferRec));
-    SCREEN_PRIV(pScreen) = dfb;
+
+    // SCREEN_PRIV(pScreen) = dfb;
+    pScreen->devPrivates[darwinScreenIndex].ptr = dfb;
 
     // setup hardware/mode specific details
     ret = DarwinModeAddScreen(foundIndex, pScreen);
@@ -336,7 +343,7 @@ static int DarwinMouseProc(
     DeviceIntPtr    pPointer,
     int             what )
 {
-    char map[6];
+    CARD8 map[6];
 
     switch (what) {
 
@@ -677,10 +684,30 @@ void ddxInitGlobals(void)
  */
 int ddxProcessArgument( int argc, char *argv[], int i )
 {
-    int numDone;
+    if ( !strcmp( argv[i], "-fullscreen" ) ) {
+        ErrorF( "Running full screen in parallel with Mac OS X Quartz window server.\n" );
+        return 1;
+    }
+
+    if ( !strcmp( argv[i], "-rootless" ) ) {
+        ErrorF( "Running rootless inside Mac OS X window server.\n" );
+        return 1;
+    }
 
-    if ((numDone = DarwinModeProcessArgument( argc, argv, i )))
-        return numDone;
+    if ( !strcmp( argv[i], "-quartz" ) ) {
+        ErrorF( "Running in parallel with Mac OS X Quartz window server.\n" );
+        return 1;
+    }
+
+    // The Mac OS X front end uses this argument, which we just ignore here.
+    if ( !strcmp( argv[i], "-nostartx" ) ) {
+        return 1;
+    }
+
+    // This command line arg is passed when launched from the Aqua GUI.
+    if ( !strncmp( argv[i], "-psn_", 5 ) ) {
+        return 1;
+    }
 
     if ( !strcmp( argv[i], "-fakebuttons" ) ) {
         darwinFakeButtons = TRUE;
@@ -833,14 +860,11 @@ void ddxUseMsg( void )
     ErrorF("-keymap <file> : read the keymapping from a file instead of the kernel.\n");
     ErrorF("-version : show the server version.\n");
     ErrorF("\n");
-#ifdef DARWIN_WITH_QUARTZ
-    ErrorF("Quartz modes:\n");
+    ErrorF("Quartz modes (Experimental / In Development):\n");
     ErrorF("-fullscreen : run full screen in parallel with Mac OS X window server.\n");
     ErrorF("-rootless : run rootless inside Mac OS X window server.\n");
-    ErrorF("-quartz : use default Mac OS X window server mode\n");
     ErrorF("\n");
     ErrorF("Options ignored in rootless mode:\n");
-#endif
     ErrorF("-size <height> <width> : use a screen resolution of <height> x <width>.\n");
     ErrorF("-depth <8,15,24> : use this bit depth.\n");
     ErrorF("-refresh <rate> : use a monitor refresh rate of <rate> Hz.\n");
diff --git a/hw/darwin/darwin.h b/hw/darwin/darwin.h
index e633858..587ba1c 100644
--- a/hw/darwin/darwin.h
+++ b/hw/darwin/darwin.h
@@ -27,6 +27,8 @@
 #ifndef _DARWIN_H
 #define _DARWIN_H
 
+#include "dix-config.h"
+
 #include <IOKit/IOTypes.h>
 #include "inputstr.h"
 #include "scrnintstr.h"
@@ -76,7 +78,6 @@ Bool DarwinModeAddScreen(int index, ScreenPtr pScreen);
 Bool DarwinModeSetupScreen(int index, ScreenPtr pScreen);
 void DarwinModeInitOutput(int argc,char **argv);
 void DarwinModeInitInput(int argc, char **argv);
-int DarwinModeProcessArgument(int argc, char *argv[], int i);
 void DarwinModeProcessEvent(xEvent *xe);
 void DarwinModeGiveUp(void);
 void DarwinModeBell(int volume, DeviceIntPtr pDevice, pointer ctrl, int class);
diff --git a/hw/darwin/iokit/Makefile.am b/hw/darwin/iokit/Makefile.am
deleted file mode 100644
index 54464ae..0000000
--- a/hw/darwin/iokit/Makefile.am
+++ /dev/null
@@ -1,17 +0,0 @@
-noinst_LIBRARIES = libiokit.a
-
-AM_CFLAGS = @XORG_CFLAGS@ @DIX_CFLAGS@
-INCLUDES = -I. -I.. -I$(srcdir) -I$(srcdir)/.. @XORG_INCS@
-AM_DEFS =
-if XQUARTZ
-AM_DEFS += -DDARWIN_WITH_QUARTZ -DXFree86Server
-XQUARTZ_SUBDIRS = bundle quartz
-endif
-DEFS = @DEFS@ $(AM_DEFS)
-
-libiokit_a_SOURCES = xfIOKit.c \
-	           xfIOKitCursor.c \
-	           xfIOKitStartup.c
-
-EXTRA_DIST = \
-	xfIOKit.h
diff --git a/hw/darwin/iokit/xfIOKit.c b/hw/darwin/iokit/xfIOKit.c
deleted file mode 100644
index 0feb8cc..0000000
--- a/hw/darwin/iokit/xfIOKit.c
+++ /dev/null
@@ -1,773 +0,0 @@
-/**************************************************************
- *
- * IOKit support for the Darwin X Server
- *
- * HISTORY:
- * Original port to Mac OS X Server by John Carmack
- * Port to Darwin 1.0 by Dave Zarzycki
- * Significantly rewritten for XFree86 4.0.1 by Torrey Lyons
- *
- **************************************************************/
-/*
- * Copyright (c) 2001-2004 Torrey T. Lyons. All Rights Reserved.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE ABOVE LISTED COPYRIGHT HOLDER(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR
- * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
- * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
- * DEALINGS IN THE SOFTWARE.
- *
- * Except as contained in this notice, the name(s) of the above copyright
- * holders shall not be used in advertising or otherwise to promote the sale,
- * use or other dealings in this Software without prior written authorization.
- */
-
-#include <dix-config.h>
-
-#include <X11/X.h>
-#include <X11/Xproto.h>
-#include "os.h"
-#include "servermd.h"
-#include "inputstr.h"
-#include "scrnintstr.h"
-#include "mi.h"
-#include "mibstore.h"
-#include "mipointer.h"
-#include "micmap.h"
-#include "shadow.h"
-
-#include <sys/types.h>
-#include <sys/time.h>
-#include <unistd.h>
-#include <fcntl.h>
-#include <pthread.h>
-#include <assert.h>
-
-#include <mach/mach_interface.h>
-
-#define NO_CFPLUGIN
-#include <IOKit/IOKitLib.h>
-#include <IOKit/hidsystem/IOHIDShared.h>
-#include <IOKit/hidsystem/event_status_driver.h>
-#include <IOKit/graphics/IOGraphicsLib.h>
-
-// Define this to work around bugs in the display drivers for
-// older PowerBook G3's. If the X server starts without this
-// #define, you don't need it.
-#undef OLD_POWERBOOK_G3
-
-#include "darwin.h"
-#include "xfIOKit.h"
-
-// Globals
-int             xfIOKitScreenIndex = 0;
-io_connect_t    xfIOKitInputConnect = 0;
-
-static pthread_t                inputThread;
-static EvGlobals *              evg;
-static mach_port_t              masterPort;
-static mach_port_t              notificationPort;
-static IONotificationPortRef    NotificationPortRef;
-static mach_port_t              pmNotificationPort;
-static io_iterator_t            fbIter;
-
-
-/*
- * XFIOKitStoreColors
- * This is a callback from X to change the hardware colormap
- * when using PsuedoColor.
- */
-static void XFIOKitStoreColors(
-    ColormapPtr     pmap,
-    int             numEntries,
-    xColorItem      *pdefs)
-{
-    kern_return_t   kr;
-    int             i;
-    IOColorEntry    *newColors;
-    ScreenPtr       pScreen = pmap->pScreen;
-    XFIOKitScreenPtr iokitScreen = XFIOKIT_SCREEN_PRIV(pScreen);
-
-    assert( newColors = (IOColorEntry *)
-                xalloc( numEntries*sizeof(IOColorEntry) ));
-
-    // Convert xColorItem values to IOColorEntry
-    // assume the colormap is PsuedoColor
-    // as we do not support DirectColor
-    for (i = 0; i < numEntries; i++) {
-        newColors[i].index = pdefs[i].pixel;
-        newColors[i].red =   pdefs[i].red;
-        newColors[i].green = pdefs[i].green;
-        newColors[i].blue =  pdefs[i].blue;
-    }
-
-    kr = IOFBSetCLUT( iokitScreen->fbService, 0, numEntries,
-                      kSetCLUTByValue, newColors );
-    kern_assert( kr );
-
-    xfree( newColors );
-}
-
-
-/*
- * DarwinModeBell
- *  FIXME
- */
-void DarwinModeBell(
-    int             loud,
-    DeviceIntPtr    pDevice,
-    pointer         ctrl,
-    int             fbclass)
-{
-}
-
-
-/*
- * DarwinModeGiveUp
- *  Closes the connections to IOKit services
- */
-void DarwinModeGiveUp( void )
-{
-    int i;
-
-    // we must close the HID System first
-    // because it is a client of the framebuffer
-    NXCloseEventStatus( darwinParamConnect );
-    IOServiceClose( xfIOKitInputConnect );
-    for (i = 0; i < screenInfo.numScreens; i++) {
-        XFIOKitScreenPtr iokitScreen =
-                            XFIOKIT_SCREEN_PRIV(screenInfo.screens[i]);
-        IOServiceClose( iokitScreen->fbService );
-    }
-}
-
-
-/*
- * ClearEvent
- *  Clear an event from the HID System event queue
- */
-static void ClearEvent(NXEvent * ep)
-{
-    static NXEvent nullEvent = {NX_NULLEVENT, {0, 0 }, 0, -1, 0 };
-
-    *ep = nullEvent;
-    ep->data.compound.subType = ep->data.compound.misc.L[0] =
-                                ep->data.compound.misc.L[1] = 0;
-}
-
-
-/*
- * XFIOKitHIDThread
- *  Read the HID System event queue, translate it to an X event,
- *  and queue it for processing.
- */
-static void *XFIOKitHIDThread(void *unused)
-{
-    for (;;) {
-        NXEQElement             *oldHead;
-        mach_msg_return_t       kr;
-        mach_msg_empty_rcv_t    msg;
-
-        kr = mach_msg((mach_msg_header_t*) &msg, MACH_RCV_MSG, 0,
-                      sizeof(msg), notificationPort, 0, MACH_PORT_NULL);
-        kern_assert(kr);
-
-        while (evg->LLEHead != evg->LLETail) {
-            NXEvent ev;
-            xEvent xe;
-
-            // Extract the next event from the kernel queue
-            oldHead = (NXEQElement*)&evg->lleq[evg->LLEHead];
-            ev_lock(&oldHead->sema);
-            ev = oldHead->event;
-            ClearEvent(&oldHead->event);
-            evg->LLEHead = oldHead->next;
-            ev_unlock(&oldHead->sema);
-
-            memset(&xe, 0, sizeof(xe));
-
-            // These fields should be filled in for every event
-            xe.u.keyButtonPointer.rootX = ev.location.x;
-            xe.u.keyButtonPointer.rootY = ev.location.y;
-            xe.u.keyButtonPointer.time = GetTimeInMillis();
-
-            switch( ev.type ) {
-                case NX_MOUSEMOVED:
-                    xe.u.u.type = MotionNotify;
-                    break;
-
-                case NX_LMOUSEDOWN:
-                    xe.u.u.type = ButtonPress;
-                    xe.u.u.detail = 1;
-                    break;
-
-                case NX_LMOUSEUP:
-                    xe.u.u.type = ButtonRelease;
-                    xe.u.u.detail = 1;
-                    break;
-
-                // A newer kernel generates multi-button events with
-                // NX_SYSDEFINED. Button 2 isn't handled correctly by
-                // older kernels anyway. Just let NX_SYSDEFINED events
-                // handle these.
-#if 0
-                case NX_RMOUSEDOWN:
-                    xe.u.u.type = ButtonPress;
-                    xe.u.u.detail = 2;
-                    break;
-
-                case NX_RMOUSEUP:
-                    xe.u.u.type = ButtonRelease;
-                    xe.u.u.detail = 2;
-                    break;
-#endif
-
-                case NX_KEYDOWN:
-                    xe.u.u.type = KeyPress;
-                    xe.u.u.detail = ev.data.key.keyCode;
-                    break;
-
-                case NX_KEYUP:
-                    xe.u.u.type = KeyRelease;
-                    xe.u.u.detail = ev.data.key.keyCode;
-                    break;
-
-                case NX_FLAGSCHANGED:
-                    xe.u.u.type = kXDarwinUpdateModifiers;
-                    xe.u.clientMessage.u.l.longs0 = ev.flags;
-                    break;
-
-                case NX_SYSDEFINED:
-                    if (ev.data.compound.subType == 7) {
-                        xe.u.u.type = kXDarwinUpdateButtons;
-                        xe.u.clientMessage.u.l.longs0 =
-                                        ev.data.compound.misc.L[0];
-                        xe.u.clientMessage.u.l.longs1 =
-                                        ev.data.compound.misc.L[1];
-                    } else {
-                        continue;
-                    }
-                    break;
-
-                case NX_SCROLLWHEELMOVED:
-                    xe.u.u.type = kXDarwinScrollWheel;
-                    xe.u.clientMessage.u.s.shorts0 =
-                                    ev.data.scrollWheel.deltaAxis1;
-                    break;
-
-                default:
-                    continue;
-            }
-
-            DarwinEQEnqueue(&xe);
-        }
-    }
-
-    return NULL;
-}
-
-
-/*
- * XFIOKitPMThread
- *  Handle power state notifications
- */
-static void *XFIOKitPMThread(void *arg)
-{
-    ScreenPtr pScreen = (ScreenPtr)arg;
-    XFIOKitScreenPtr iokitScreen = XFIOKIT_SCREEN_PRIV(pScreen);
-
-    for (;;) {
-        mach_msg_return_t       kr;
-        mach_msg_empty_rcv_t    msg;
-
-        kr = mach_msg((mach_msg_header_t*) &msg, MACH_RCV_MSG, 0,
-                      sizeof(msg), pmNotificationPort, 0, MACH_PORT_NULL);
-        kern_assert(kr);
-
-        // display is powering down
-        if (msg.header.msgh_id == 0) {
-            IOFBAcknowledgePM( iokitScreen->fbService );
-            xf86SetRootClip(pScreen, FALSE);
-        }
-        // display just woke up
-        else if (msg.header.msgh_id == 1) {
-            xf86SetRootClip(pScreen, TRUE);
-        }
-    }
-    return NULL;
-}
-
-
-/*
- * SetupFBandHID
- *  Setup an IOFramebuffer service and connect the HID system to it.
- */
-static Bool SetupFBandHID(
-    int                    index,
-    DarwinFramebufferPtr   dfb,
-    XFIOKitScreenPtr       iokitScreen)
-{
-    kern_return_t           kr;
-    io_service_t            service;
-    io_connect_t            fbService;
-    vm_address_t            vram;
-    vm_size_t               shmemSize;
-    int                     i;
-    UInt32                  numModes;
-    IODisplayModeInformation modeInfo;
-    IODisplayModeID         displayMode, *allModes;
-    IOIndex                 displayDepth;
-    IOFramebufferInformation fbInfo;
-    IOPixelInformation      pixelInfo;
-    StdFBShmem_t            *cshmem;
-
-    // find and open the IOFrameBuffer service
-    service = IOIteratorNext(fbIter);
-    if (service == 0)
-        return FALSE;
-
-    kr = IOServiceOpen( service, mach_task_self(),
-                        kIOFBServerConnectType, &iokitScreen->fbService );
-    IOObjectRelease( service );
-    if (kr != KERN_SUCCESS) {
-        ErrorF("Failed to connect as window server to screen %i.\n", index);
-        return FALSE;
-    }
-    fbService = iokitScreen->fbService;
-
-    // create the slice of shared memory containing cursor state data
-    kr = IOFBCreateSharedCursor( fbService,
-                                 kIOFBCurrentShmemVersion,
-                                 32, 32 );
-    if (kr != KERN_SUCCESS)
-        return FALSE;
-
-    // Register for power management events for the framebuffer's device
-    kr = IOCreateReceivePort(kOSNotificationMessageID, &pmNotificationPort);
-    kern_assert(kr);
-    kr = IOConnectSetNotificationPort( fbService, 0,
-                                       pmNotificationPort, 0 );
-    if (kr != KERN_SUCCESS) {
-        ErrorF("Power management registration failed.\n");
-    }
-
-    // SET THE SCREEN PARAMETERS
-    // get the current screen resolution, refresh rate and depth
-    kr = IOFBGetCurrentDisplayModeAndDepth( fbService,
-                                            &displayMode,
-                                            &displayDepth );
-    if (kr != KERN_SUCCESS)
-        return FALSE;
-
-    // use the current screen resolution if the user
-    // only wants to change the refresh rate
-    if (darwinDesiredRefresh != -1 && darwinDesiredWidth == 0) {
-        kr = IOFBGetDisplayModeInformation( fbService,
-                                            displayMode,
-                                            &modeInfo );
-        if (kr != KERN_SUCCESS)
-            return FALSE;
-        darwinDesiredWidth = modeInfo.nominalWidth;
-        darwinDesiredHeight = modeInfo.nominalHeight;
-    }
-
-    // use the current resolution and refresh rate
-    // if the user doesn't have a preference
-    if (darwinDesiredWidth == 0) {
-
-        // change the pixel depth if desired
-        if (darwinDesiredDepth != -1) {
-            kr = IOFBGetDisplayModeInformation( fbService,
-                                                displayMode,
-                                                &modeInfo );
-            if (kr != KERN_SUCCESS)
-                return FALSE;
-            if (modeInfo.maxDepthIndex < darwinDesiredDepth) {
-                ErrorF("Discarding screen %i:\n", index);
-                ErrorF("Current screen resolution does not support desired pixel depth.\n");
-                return FALSE;
-            }
-
-            displayDepth = darwinDesiredDepth;
-            kr = IOFBSetDisplayModeAndDepth( fbService, displayMode,
-                                             displayDepth );
-            if (kr != KERN_SUCCESS)
-                return FALSE;
-        }
-
-    // look for display mode with correct resolution and refresh rate
-    } else {
-
-        // get an array of all supported display modes
-        kr = IOFBGetDisplayModeCount( fbService, &numModes );
-        if (kr != KERN_SUCCESS)
-            return FALSE;
-        assert(allModes = (IODisplayModeID *)
-                xalloc( numModes * sizeof(IODisplayModeID) ));
-        kr = IOFBGetDisplayModes( fbService, numModes, allModes );
-        if (kr != KERN_SUCCESS)
-            return FALSE;
-
-        for (i = 0; i < numModes; i++) {
-            kr = IOFBGetDisplayModeInformation( fbService, allModes[i],
-                                                &modeInfo );
-            if (kr != KERN_SUCCESS)
-                return FALSE;
-
-            if (modeInfo.flags & kDisplayModeValidFlag &&
-                modeInfo.nominalWidth == darwinDesiredWidth &&
-                modeInfo.nominalHeight == darwinDesiredHeight) {
-
-                if (darwinDesiredDepth == -1)
-                    darwinDesiredDepth = modeInfo.maxDepthIndex;
-                if (modeInfo.maxDepthIndex < darwinDesiredDepth) {
-                    ErrorF("Discarding screen %i:\n", index);
-                    ErrorF("Desired screen resolution does not support desired pixel depth.\n");
-                    return FALSE;
-                }
-
-                if ((darwinDesiredRefresh == -1 ||
-                    (darwinDesiredRefresh << 16) == modeInfo.refreshRate)) {
-                    displayMode = allModes[i];
-                    displayDepth = darwinDesiredDepth;
-                    kr = IOFBSetDisplayModeAndDepth(fbService,
-                                                    displayMode,
-                                                    displayDepth);
-                    if (kr != KERN_SUCCESS)
-                        return FALSE;
-                    break;
-                }
-            }
-        }
-
-        xfree( allModes );
-        if (i >= numModes) {
-            ErrorF("Discarding screen %i:\n", index);
-            ErrorF("Desired screen resolution or refresh rate is not supported.\n");
-            return FALSE;
-        }
-    }
-
-    kr = IOFBGetPixelInformation( fbService, displayMode, displayDepth,
-                                  kIOFBSystemAperture, &pixelInfo );
-    if (kr != KERN_SUCCESS)
-        return FALSE;
-
-#ifdef __i386__
-    /* x86 in 8bit mode currently needs fixed color map... */
-    if (pixelInfo.bitsPerComponent == 8 &&
-        pixelInfo.componentCount == 1)
-    {
-        pixelInfo.pixelType = kIOFixedCLUTPixels;
-    }
-#endif
-
-#ifdef OLD_POWERBOOK_G3
-    if (pixelInfo.pixelType == kIOCLUTPixels)
-        pixelInfo.pixelType = kIOFixedCLUTPixels;
-#endif
-
-    kr = IOFBGetFramebufferInformationForAperture( fbService,
-                                                   kIOFBSystemAperture,
-                                                   &fbInfo );
-    if (kr != KERN_SUCCESS)
-        return FALSE;
-
-    // FIXME: 1x1 IOFramebuffers are sometimes used to indicate video
-    // outputs without a monitor connected to them. Since IOKit Xinerama
-    // does not really work, this often causes problems on PowerBooks.
-    // For now we explicitly check and ignore these screens.
-    if (fbInfo.activeWidth <= 1 || fbInfo.activeHeight <= 1) {
-        ErrorF("Discarding screen %i:\n", index);
-        ErrorF("Invalid width or height.\n");
-        return FALSE;
-    }
-
-    kr = IOConnectMapMemory( fbService, kIOFBCursorMemory,
-                             mach_task_self(), (vm_address_t *) &cshmem,
-                             &shmemSize, kIOMapAnywhere );
-    if (kr != KERN_SUCCESS)
-        return FALSE;
-    iokitScreen->cursorShmem = cshmem;
-
-    kr = IOConnectMapMemory( fbService, kIOFBSystemAperture,
-                             mach_task_self(), &vram, &shmemSize,
-                             kIOMapAnywhere );
-    if (kr != KERN_SUCCESS)
-        return FALSE;
-
-    iokitScreen->framebuffer = (void*)vram;
-    dfb->x = cshmem->screenBounds.minx;
-    dfb->y = cshmem->screenBounds.miny;
-    dfb->width = fbInfo.activeWidth;
-    dfb->height = fbInfo.activeHeight;
-    dfb->pitch = fbInfo.bytesPerRow;
-    dfb->bitsPerPixel = fbInfo.bitsPerPixel;
-    dfb->colorBitsPerPixel = pixelInfo.componentCount *
-                             pixelInfo.bitsPerComponent;
-    dfb->bitsPerComponent = pixelInfo.bitsPerComponent;
-
-    // allocate shadow framebuffer
-    iokitScreen->shadowPtr = xalloc(dfb->pitch * dfb->height);
-    dfb->framebuffer = iokitScreen->shadowPtr;
-
-    // Note: Darwin kIORGBDirectPixels = X TrueColor, not DirectColor
-    if (pixelInfo.pixelType == kIORGBDirectPixels) {
-        dfb->colorType = TrueColor;
-    } else if (pixelInfo.pixelType == kIOCLUTPixels) {
-        dfb->colorType = PseudoColor;
-    } else if (pixelInfo.pixelType == kIOFixedCLUTPixels) {
-        dfb->colorType = StaticColor;
-    }
-
-    // Inform the HID system that the framebuffer is also connected to it.
-    kr = IOConnectAddClient( xfIOKitInputConnect, fbService );
-    kern_assert( kr );
-
-    // We have to have added at least one screen
-    // before we can enable the cursor.
-    kr = IOHIDSetCursorEnable(xfIOKitInputConnect, TRUE);
-    kern_assert( kr );
-
-    return TRUE;
-}
-
-
-/*
- * DarwinModeAddScreen
- *  IOKit specific initialization for each screen.
- */
-Bool DarwinModeAddScreen(
-    int index,
-    ScreenPtr pScreen)
-{
-    DarwinFramebufferPtr dfb = SCREEN_PRIV(pScreen);
-    XFIOKitScreenPtr iokitScreen;
-
-    // allocate space for private per screen storage
-    iokitScreen = xalloc(sizeof(XFIOKitScreenRec));
-    XFIOKIT_SCREEN_PRIV(pScreen) = iokitScreen;
-
-    // setup hardware framebuffer
-    iokitScreen->fbService = 0;
-    if (! SetupFBandHID(index, dfb, iokitScreen)) {
-        if (iokitScreen->fbService) {
-            IOServiceClose(iokitScreen->fbService);
-        }
-        return FALSE;
-    }
-
-    return TRUE;
-}
-
-
-/*
- * XFIOKitShadowUpdate
- *  Update the damaged regions of the shadow framebuffer on the screen.
- */
-static void XFIOKitShadowUpdate(ScreenPtr pScreen,
-                                shadowBufPtr pBuf)
-{
-    DarwinFramebufferPtr dfb = SCREEN_PRIV(pScreen);
-    XFIOKitScreenPtr iokitScreen = XFIOKIT_SCREEN_PRIV(pScreen);
-    RegionPtr damage = &pBuf->damage;
-    int numBox = REGION_NUM_RECTS(damage);
-    BoxPtr pBox = REGION_RECTS(damage);
-    int pitch = dfb->pitch;
-    int bpp = dfb->bitsPerPixel/8;
-
-    // Loop through all the damaged boxes
-    while (numBox--) {
-        int width, height, offset;
-        unsigned char *src, *dst;
-
-        width = (pBox->x2 - pBox->x1) * bpp;
-        height = pBox->y2 - pBox->y1;
-        offset = (pBox->y1 * pitch) + (pBox->x1 * bpp);
-        src = iokitScreen->shadowPtr + offset;
-        dst = iokitScreen->framebuffer + offset;
-
-        while (height--) {
-            memcpy(dst, src, width);
-            dst += pitch;
-            src += pitch;
-        }
-
-        // Get the next box
-        pBox++;
-    }
-}
-
-
-/*
- * DarwinModeSetupScreen
- *  Finalize IOKit specific initialization of each screen.
- */
-Bool DarwinModeSetupScreen(
-    int index,
-    ScreenPtr pScreen)
-{
-    DarwinFramebufferPtr dfb = SCREEN_PRIV(pScreen);
-    pthread_t pmThread;
-
-    // initalize cursor support
-    if (! XFIOKitInitCursor(pScreen)) {
-        return FALSE;
-    }
-
-    // initialize shadow framebuffer support
-    if (! shadowInit(pScreen, XFIOKitShadowUpdate, NULL)) {
-        ErrorF("Failed to initalize shadow framebuffer for screen %i.\n",
-               index);
-        return FALSE;
-    }
-
-    // initialize colormap handling as needed
-    if (dfb->colorType == PseudoColor) {
-        pScreen->StoreColors = XFIOKitStoreColors;
-    }
-
-    // initialize power manager handling
-    pthread_create( &pmThread, NULL, XFIOKitPMThread,
-                    (void *) pScreen );
-
-    return TRUE;
-}
-
-
-/*
- * DarwinModeInitOutput
- *  One-time initialization of IOKit output support.
- */
-void DarwinModeInitOutput(
-    int argc,
-    char **argv)
-{
-    static unsigned long    generation = 0;
-    kern_return_t           kr;
-    io_iterator_t           iter;
-    io_service_t            service;
-    vm_address_t            shmem;
-    vm_size_t               shmemSize;
-
-    ErrorF("Display mode: IOKit\n");
-
-    // Allocate private storage for each screen's IOKit specific info
-    if (generation != serverGeneration) {
-        xfIOKitScreenIndex = AllocateScreenPrivateIndex();
-        generation = serverGeneration;
-    }
-
-    kr = IOMasterPort(bootstrap_port, &masterPort);
-    kern_assert( kr );
-
-    // Find and open the HID System Service
-    // Do this now to be sure the Mac OS X window server is not running.
-    kr = IOServiceGetMatchingServices( masterPort,
-                                       IOServiceMatching( kIOHIDSystemClass ),
-                                       &iter );
-    kern_assert( kr );
-
-    assert( service = IOIteratorNext( iter ) );
-
-    kr = IOServiceOpen( service, mach_task_self(), kIOHIDServerConnectType,
-                        &xfIOKitInputConnect );
-    if (kr != KERN_SUCCESS) {
-        ErrorF("Failed to connect to the HID System as the window server!\n");
-#ifdef DARWIN_WITH_QUARTZ
-        FatalError("Quit the Mac OS X window server or use the -quartz option.\n");
-#else
-        FatalError("Make sure you have quit the Mac OS X window server.\n");
-#endif
-    }
-
-    IOObjectRelease( service );
-    IOObjectRelease( iter );
-
-    // Setup the event queue in memory shared by the kernel and X server
-    kr = IOHIDCreateSharedMemory( xfIOKitInputConnect,
-                                  kIOHIDCurrentShmemVersion );
-    kern_assert( kr );
-
-    kr = IOConnectMapMemory( xfIOKitInputConnect, kIOHIDGlobalMemory,
-                             mach_task_self(), &shmem, &shmemSize,
-                             kIOMapAnywhere );
-    kern_assert( kr );
-
-    evg = (EvGlobals *)(shmem + ((EvOffsets *)shmem)->evGlobalsOffset);
-
-    assert(sizeof(EvGlobals) == evg->structSize);
-
-    NotificationPortRef = IONotificationPortCreate( masterPort );
-
-    notificationPort = IONotificationPortGetMachPort(NotificationPortRef);
-
-    kr = IOConnectSetNotificationPort( xfIOKitInputConnect,
-                                       kIOHIDEventNotification,
-                                       notificationPort, 0 );
-    kern_assert( kr );
-
-    evg->movedMask |= NX_MOUSEMOVEDMASK;
-
-    // find number of framebuffers
-    kr = IOServiceGetMatchingServices( masterPort,
-                        IOServiceMatching( IOFRAMEBUFFER_CONFORMSTO ),
-                        &fbIter );
-    kern_assert( kr );
-
-    darwinScreensFound = 0;
-    while ((service = IOIteratorNext(fbIter))) {
-        IOObjectRelease( service );
-        darwinScreensFound++;
-    }
-    IOIteratorReset(fbIter);
-}
-
-
-/*
- * DarwinModeInitInput
- *  One-time initialization of IOKit input support.
- */
-void DarwinModeInitInput(
-    int argc,
-    char **argv)
-{
-    kern_return_t           kr;
-    int                     fd[2];
-
-    kr = IOHIDSetEventsEnable(xfIOKitInputConnect, TRUE);
-    kern_assert( kr );
-
-    // Start event passing thread
-    assert( pipe(fd) == 0 );
-    darwinEventReadFD = fd[0];
-    darwinEventWriteFD = fd[1];
-    fcntl(darwinEventReadFD, F_SETFL, O_NONBLOCK);
-    pthread_create(&inputThread, NULL,
-                   XFIOKitHIDThread, NULL);
-
-}
-
-
-/*
- * DarwinModeProcessEvent
- *  Process IOKit specific events.
- */
-void DarwinModeProcessEvent(
-    xEvent *xe)
-{
-    // No mode specific events
-    ErrorF("Unknown X event caught: %d\n", xe->u.u.type);
-}
diff --git a/hw/darwin/iokit/xfIOKit.h b/hw/darwin/iokit/xfIOKit.h
deleted file mode 100644
index 27d27bc..0000000
--- a/hw/darwin/iokit/xfIOKit.h
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
-  xfIOKit.h
-
-  IOKit specific functions and definitions
-*/
-/*
- * Copyright (c) 2001-2002 Torrey T. Lyons. All Rights Reserved.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE ABOVE LISTED COPYRIGHT HOLDER(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR
- * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
- * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
- * DEALINGS IN THE SOFTWARE.
- *
- * Except as contained in this notice, the name(s) of the above copyright
- * holders shall not be used in advertising or otherwise to promote the sale,
- * use or other dealings in this Software without prior written authorization.
- */
-
-#ifndef _XFIOKIT_H
-#define _XFIOKIT_H
-
-#include <pthread.h>
-#include <IOKit/graphics/IOFramebufferShared.h>
-#include <X11/Xproto.h>
-#include "screenint.h"
-#include "darwin.h"
-
-typedef struct {
-    io_connect_t        fbService;
-    StdFBShmem_t       *cursorShmem;
-    unsigned char      *framebuffer;
-    unsigned char      *shadowPtr;
-} XFIOKitScreenRec, *XFIOKitScreenPtr;
-
-#define XFIOKIT_SCREEN_PRIV(pScreen) \
-    ((XFIOKitScreenPtr)pScreen->devPrivates[xfIOKitScreenIndex].ptr)
-
-extern int xfIOKitScreenIndex; // index into pScreen.devPrivates
-extern io_connect_t xfIOKitInputConnect;
-
-Bool XFIOKitInitCursor(ScreenPtr pScreen);
-
-#endif	/* _XFIOKIT_H */
diff --git a/hw/darwin/iokit/xfIOKitCursor.c b/hw/darwin/iokit/xfIOKitCursor.c
deleted file mode 100644
index e9c78c1..0000000
--- a/hw/darwin/iokit/xfIOKitCursor.c
+++ /dev/null
@@ -1,736 +0,0 @@
-/**************************************************************
- *
- * Cursor support for Darwin X Server
- *
- * Three different cursor modes are possible:
- *  X (0)         - tracking via Darwin kernel,
- *                  display via X machine independent
- *  Kernel (1)    - tracking and display via Darwin kernel
- *                  (not currently supported)
- *  Hardware (2)  - tracking and display via hardware
- *
- * The X software cursor uses the Darwin software cursor
- * routines in IOFramebuffer.cpp to track the cursor, but
- * displays the cursor image using the X machine
- * independent display cursor routines in midispcur.c.
- *
- * The kernel cursor uses IOFramebuffer.cpp routines to
- * track and display the cursor. This gives better
- * performance as the display calls don't have to cross
- * the kernel boundary. Unfortunately, this mode has
- * synchronization issues with the user land X server
- * and isn't currently used.
- *
- * Hardware cursor support lets the hardware handle these
- * details.
- *
- * Kernel and hardware cursor mode only work for cursors
- * up to a certain size, currently 16x16 pixels. If a
- * bigger cursor is set, we fallback to X cursor mode.
- *
- * HISTORY:
- * 1.0 by Torrey T. Lyons, October 30, 2000
- *
- **************************************************************/
-/*
- * Copyright (c) 2001-2002 Torrey T. Lyons. All Rights Reserved.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE ABOVE LISTED COPYRIGHT HOLDER(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR
- * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
- * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
- * DEALINGS IN THE SOFTWARE.
- *
- * Except as contained in this notice, the name(s) of the above copyright
- * holders shall not be used in advertising or otherwise to promote the sale,
- * use or other dealings in this Software without prior written authorization.
- */
-
-#include <dix-config.h>
-
-#include "scrnintstr.h"
-#include "cursorstr.h"
-#include "mipointrst.h"
-#include "micmap.h"
-#define NO_CFPLUGIN
-#include <IOKit/graphics/IOGraphicsLib.h>
-#include <IOKit/hidsystem/IOHIDLib.h>
-#include "darwin.h"
-#include "xfIOKit.h"
-#include <assert.h>
-#define DUMP_DARWIN_CURSOR FALSE
-
-#define CURSOR_PRIV(pScreen) \
-    ((XFIOKitCursorScreenPtr)pScreen->devPrivates[darwinCursorScreenIndex].ptr)
-
-// The cursors format are documented in IOFramebufferShared.h.
-#define RGBto34WithGamma(red, green, blue)  \
-    (  0x000F                               \
-     | (((red) & 0xF) << 12)                \
-     | (((green) & 0xF) << 8)               \
-     | (((blue) & 0xF) << 4) )
-#define RGBto38WithGamma(red, green, blue)  \
-    (  0xFF << 24                           \
-     | (((red) & 0xFF) << 16)               \
-     | (((green) & 0xFF) << 8)              \
-     | (((blue) & 0xFF)) )
-#define HighBitOf32 0x80000000
-
-typedef struct {
-    Bool                    canHWCursor;
-    short                   cursorMode;
-    RecolorCursorProcPtr    RecolorCursor;
-    InstallColormapProcPtr  InstallColormap;
-    QueryBestSizeProcPtr    QueryBestSize;
-    miPointerSpriteFuncPtr  spriteFuncs;
-    ColormapPtr             pInstalledMap;
-} XFIOKitCursorScreenRec, *XFIOKitCursorScreenPtr;
-
-static int darwinCursorScreenIndex = -1;
-static unsigned long darwinCursorGeneration = 0;
-
-/*
-===========================================================================
-
- Pointer sprite functions
-
-===========================================================================
-*/
-
-/*
-    Realizing the Darwin hardware cursor (ie. converting from the
-    X representation to the IOKit representation) is complicated
-    by the fact that we have three different potential cursor
-    formats to go to, one for each bit depth (8, 15, or 24).
-    The IOKit formats are documented in IOFramebufferShared.h.
-    X cursors are represented as two pieces, a source and a mask.
-    The mask is a bitmap indicating which parts of the cursor are 
-    transparent and which parts are drawn.  The source is a bitmap
-    indicating which parts of the non-transparent portion of the the
-    cursor should be painted in the foreground color and which should
-    be painted in the background color. The bitmaps are given in
-    32-bit format with least significant byte and bit first.
-    (This is opposite PowerPC Darwin.)
-*/
-
-typedef struct {
-    unsigned char image[CURSORWIDTH*CURSORHEIGHT];
-    unsigned char mask[CURSORWIDTH*CURSORHEIGHT];
-} cursorPrivRec, *cursorPrivPtr;
-
-/*
- * XFIOKitRealizeCursor8
- * Convert the X cursor representation to an 8-bit depth
- * format for Darwin. This function assumes the maximum cursor
- * width is a multiple of 8.
- */
-static Bool
-XFIOKitRealizeCursor8(
-    ScreenPtr pScreen,
-    CursorPtr pCursor)
-{
-    cursorPrivPtr   newCursor;
-    unsigned char   *newSourceP, *newMaskP;
-    CARD32          *oldSourceP, *oldMaskP;
-    xColorItem      fgColor, bgColor;
-    int             index, x, y, rowPad;
-    int             cursorWidth, cursorHeight;
-    ColormapPtr     pmap;
-
-    // check cursor size just to be sure
-    cursorWidth = pCursor->bits->width;
-    cursorHeight = pCursor->bits->height;
-    if (cursorHeight > CURSORHEIGHT || cursorWidth > CURSORWIDTH)
-        return FALSE;
-
-    // get cursor colors in colormap
-    index = pScreen->myNum;
-    pmap = miInstalledMaps[index];
-    if (!pmap) return FALSE;
-
-    fgColor.red = pCursor->foreRed;
-    fgColor.green = pCursor->foreGreen;
-    fgColor.blue = pCursor->foreBlue;
-    FakeAllocColor(pmap, &fgColor);
-    bgColor.red = pCursor->backRed;
-    bgColor.green = pCursor->backGreen;
-    bgColor.blue = pCursor->backBlue;
-    FakeAllocColor(pmap, &bgColor);
-    FakeFreeColor(pmap, fgColor.pixel);
-    FakeFreeColor(pmap, bgColor.pixel);
-
-    // allocate memory for new cursor image
-    newCursor = xalloc( sizeof(cursorPrivRec) );
-    if (!newCursor)
-        return FALSE;
-    memset( newCursor->image, pScreen->blackPixel, CURSORWIDTH*CURSORHEIGHT );
-    memset( newCursor->mask, 0, CURSORWIDTH*CURSORHEIGHT );
-
-    // convert to 8-bit Darwin cursor format
-    oldSourceP = (CARD32 *) pCursor->bits->source;
-    oldMaskP = (CARD32 *) pCursor->bits->mask;
-    newSourceP = newCursor->image;
-    newMaskP = newCursor->mask;
-    rowPad = CURSORWIDTH - cursorWidth;
-
-    for (y = 0; y < cursorHeight; y++) {
-        for (x = 0; x < cursorWidth; x++) {
-            if (*oldSourceP & (HighBitOf32 >> x))
-                *newSourceP = fgColor.pixel;
-            else
-                *newSourceP = bgColor.pixel;
-            if (*oldMaskP & (HighBitOf32 >> x))
-                *newMaskP = 255;
-            else
-                *newSourceP = pScreen->blackPixel;
-            newSourceP++; newMaskP++;
-        }
-        oldSourceP++; oldMaskP++;
-        newSourceP += rowPad; newMaskP += rowPad;
-    }
-
-    // save the result
-    pCursor->devPriv[pScreen->myNum] = (pointer) newCursor;
-    return TRUE;
-}
-
-
-/*
- * XFIOKitRealizeCursor15
- * Convert the X cursor representation to an 15-bit depth
- * format for Darwin.
- */
-static Bool
-XFIOKitRealizeCursor15(
-    ScreenPtr       pScreen,
-    CursorPtr       pCursor)
-{
-    unsigned short  *newCursor;
-    unsigned short  fgPixel, bgPixel;
-    unsigned short  *newSourceP;
-    CARD32          *oldSourceP, *oldMaskP;
-    int             x, y, rowPad;
-    int             cursorWidth, cursorHeight;
-
-    // check cursor size just to be sure
-    cursorWidth = pCursor->bits->width;
-    cursorHeight = pCursor->bits->height;
-    if (cursorHeight > CURSORHEIGHT || cursorWidth > CURSORWIDTH)
-       return FALSE;
-
-    // allocate memory for new cursor image
-    newCursor = xalloc( CURSORWIDTH*CURSORHEIGHT*sizeof(short) );
-    if (!newCursor)
-        return FALSE;
-    memset( newCursor, 0, CURSORWIDTH*CURSORHEIGHT*sizeof(short) );
-
-    // calculate pixel values
-    fgPixel = RGBto34WithGamma( pCursor->foreRed, pCursor->foreGreen,
-                                pCursor->foreBlue );
-    bgPixel = RGBto34WithGamma( pCursor->backRed, pCursor->backGreen,
-                                pCursor->backBlue );
-
-    // convert to 15-bit Darwin cursor format
-    oldSourceP = (CARD32 *) pCursor->bits->source;
-    oldMaskP = (CARD32 *) pCursor->bits->mask;
-    newSourceP = newCursor;
-    rowPad = CURSORWIDTH - cursorWidth;
-
-    for (y = 0; y < cursorHeight; y++) {
-        for (x = 0; x < cursorWidth; x++) {
-            if (*oldMaskP & (HighBitOf32 >> x)) {
-                if (*oldSourceP & (HighBitOf32 >> x))
-                    *newSourceP = fgPixel;
-                else
-                    *newSourceP = bgPixel;
-            } else {
-                *newSourceP = 0;
-            }
-            newSourceP++;
-        }
-        oldSourceP++; oldMaskP++;
-        newSourceP += rowPad;
-    }
-
-#if DUMP_DARWIN_CURSOR
-    // Write out the cursor
-    ErrorF("Cursor: 0x%x\n", pCursor);
-    ErrorF("Width = %i, Height = %i, RowPad = %i\n", cursorWidth,
-            cursorHeight, rowPad);
-    for (y = 0; y < cursorHeight; y++) {
-        newSourceP = newCursor + y*CURSORWIDTH;
-        for (x = 0; x < cursorWidth; x++) {
-            if (*newSourceP == fgPixel)
-                ErrorF("x");
-            else if (*newSourceP == bgPixel)
-                ErrorF("o");
-            else
-                ErrorF(" ");
-            newSourceP++;
-        }
-        ErrorF("\n");
-    }
-#endif
-
-    // save the result
-    pCursor->devPriv[pScreen->myNum] = (pointer) newCursor;
-    return TRUE;
-}
-
-
-/*
- * XFIOKitRealizeCursor24
- * Convert the X cursor representation to an 24-bit depth
- * format for Darwin. This function assumes the maximum cursor
- * width is a multiple of 8.
- */
-static Bool
-XFIOKitRealizeCursor24(
-    ScreenPtr       pScreen,
-    CursorPtr       pCursor)
-{
-    unsigned int    *newCursor;
-    unsigned int    fgPixel, bgPixel;
-    unsigned int    *newSourceP;
-    CARD32          *oldSourceP, *oldMaskP;
-    int             x, y, rowPad;
-    int             cursorWidth, cursorHeight;
-
-    // check cursor size just to be sure
-    cursorWidth = pCursor->bits->width;
-    cursorHeight = pCursor->bits->height;
-    if (cursorHeight > CURSORHEIGHT || cursorWidth > CURSORWIDTH)
-       return FALSE;
-
-    // allocate memory for new cursor image
-    newCursor = xalloc( CURSORWIDTH*CURSORHEIGHT*sizeof(int) );
-    if (!newCursor)
-        return FALSE;
-    memset( newCursor, 0, CURSORWIDTH*CURSORHEIGHT*sizeof(int) );
-
-    // calculate pixel values
-    fgPixel = RGBto38WithGamma( pCursor->foreRed, pCursor->foreGreen,
-                                pCursor->foreBlue );
-    bgPixel = RGBto38WithGamma( pCursor->backRed, pCursor->backGreen,
-                                pCursor->backBlue );
-
-    // convert to 24-bit Darwin cursor format
-    oldSourceP = (CARD32 *) pCursor->bits->source;
-    oldMaskP = (CARD32 *) pCursor->bits->mask;
-    newSourceP = newCursor;
-    rowPad = CURSORWIDTH - cursorWidth;
-
-    for (y = 0; y < cursorHeight; y++) {
-        for (x = 0; x < cursorWidth; x++) {
-            if (*oldMaskP & (HighBitOf32 >> x)) {
-                if (*oldSourceP & (HighBitOf32 >> x))
-                    *newSourceP = fgPixel;
-                else
-                    *newSourceP = bgPixel;
-            } else {
-                *newSourceP = 0;
-            }
-            newSourceP++;
-        }
-        oldSourceP++; oldMaskP++;
-        newSourceP += rowPad;
-    }
-
-#if DUMP_DARWIN_CURSOR
-    // Write out the cursor
-    ErrorF("Cursor: 0x%x\n", pCursor);
-    ErrorF("Width = %i, Height = %i, RowPad = %i\n", cursorWidth,
-            cursorHeight, rowPad);
-    for (y = 0; y < cursorHeight; y++) {
-        newSourceP = newCursor + y*CURSORWIDTH;
-        for (x = 0; x < cursorWidth; x++) {
-            if (*newSourceP == fgPixel)
-                ErrorF("x");
-            else if (*newSourceP == bgPixel)
-                ErrorF("o");
-            else
-                ErrorF(" ");
-            newSourceP++;
-        }
-        ErrorF("\n");
-    }
-#endif
-
-    // save the result
-    pCursor->devPriv[pScreen->myNum] = (pointer) newCursor;
-    return TRUE;
-}
-
-
-/*
- * XFIOKitRealizeCursor
- * 
- */
-static Bool
-XFIOKitRealizeCursor(
-    ScreenPtr       pScreen,
-    CursorPtr       pCursor)
-{
-    Bool                        result;
-    XFIOKitCursorScreenPtr      ScreenPriv = CURSOR_PRIV(pScreen);
-    DarwinFramebufferPtr        dfb = SCREEN_PRIV(pScreen);
-
-    if ((pCursor->bits->height > CURSORHEIGHT) ||
-        (pCursor->bits->width > CURSORWIDTH) ||
-        // FIXME: this condition is not needed after kernel cursor works
-        !ScreenPriv->canHWCursor) {
-        result = (*ScreenPriv->spriteFuncs->RealizeCursor)(pScreen, pCursor);
-    } else if (dfb->bitsPerPixel == 8) {
-        result = XFIOKitRealizeCursor8(pScreen, pCursor);
-    } else if (dfb->bitsPerPixel == 16) {
-        result = XFIOKitRealizeCursor15(pScreen, pCursor);
-    } else {
-        result = XFIOKitRealizeCursor24(pScreen, pCursor);
-    }
-
-    return result;
-}
-
-
-/*
- * XFIOKitUnrealizeCursor
- * 
- */
-static Bool
-XFIOKitUnrealizeCursor(
-    ScreenPtr pScreen,
-    CursorPtr pCursor)
-{
-    Bool                        result;
-    XFIOKitCursorScreenPtr      ScreenPriv = CURSOR_PRIV(pScreen);
-
-    if ((pCursor->bits->height > CURSORHEIGHT) ||
-        (pCursor->bits->width > CURSORWIDTH) ||
-        // FIXME: this condition is not needed after kernel cursor works
-        !ScreenPriv->canHWCursor) {
-        result = (*ScreenPriv->spriteFuncs->UnrealizeCursor)(pScreen, pCursor);
-    } else {
-        xfree( pCursor->devPriv[pScreen->myNum] );
-        result = TRUE;
-    }
-
-    return result;
-}
-
-
-/*
- * XFIOKitSetCursor
- * Set the cursor sprite and position
- * Use hardware cursor if possible
- */
-static void
-XFIOKitSetCursor(
-    ScreenPtr       pScreen,
-    CursorPtr       pCursor,
-    int             x,
-    int             y)
-{
-    kern_return_t               kr;
-    DarwinFramebufferPtr        dfb = SCREEN_PRIV(pScreen);
-    XFIOKitScreenPtr            iokitScreen = XFIOKIT_SCREEN_PRIV(pScreen);
-    StdFBShmem_t                *cshmem = iokitScreen->cursorShmem;
-    XFIOKitCursorScreenPtr      ScreenPriv = CURSOR_PRIV(pScreen);
-
-    // are we supposed to remove the cursor?
-    if (!pCursor) {
-        if (ScreenPriv->cursorMode == 0)
-            (*ScreenPriv->spriteFuncs->SetCursor)(pScreen, 0, x, y);
-        else {
-            if (!cshmem->cursorShow) {
-                cshmem->cursorShow++;
-                if (cshmem->hardwareCursorActive) {
-                    kr = IOFBSetCursorVisible(iokitScreen->fbService, FALSE);
-                    kern_assert( kr );
-                }
-            }
-        }
-        return;
-    } 
- 
-    // can we use the kernel or hardware cursor?
-    if ((pCursor->bits->height <= CURSORHEIGHT) &&
-        (pCursor->bits->width <= CURSORWIDTH) &&
-        // FIXME: condition not needed when kernel cursor works
-        ScreenPriv->canHWCursor) {
-
-        if (ScreenPriv->cursorMode == 0)    // remove the X cursor
-            (*ScreenPriv->spriteFuncs->SetCursor)(pScreen, 0, x, y);
-        ScreenPriv->cursorMode = 1;         // kernel cursor
-
-        // change the cursor image in shared memory
-        if (dfb->bitsPerPixel == 8) {
-            cursorPrivPtr newCursor =
-                    (cursorPrivPtr) pCursor->devPriv[pScreen->myNum];
-            memcpy(cshmem->cursor.bw8.image[0], newCursor->image,
-                        CURSORWIDTH*CURSORHEIGHT);
-            memcpy(cshmem->cursor.bw8.mask[0], newCursor->mask,
-                        CURSORWIDTH*CURSORHEIGHT);
-        } else if (dfb->bitsPerPixel == 16) {
-            unsigned short *newCursor =
-                    (unsigned short *) pCursor->devPriv[pScreen->myNum];
-            memcpy(cshmem->cursor.rgb.image[0], newCursor,
-                        2*CURSORWIDTH*CURSORHEIGHT);
-        } else {
-            unsigned int *newCursor =
-                    (unsigned int *) pCursor->devPriv[pScreen->myNum];
-            memcpy(cshmem->cursor.rgb24.image[0], newCursor,
-                        4*CURSORWIDTH*CURSORHEIGHT);
-        }
-
-        // FIXME: We always use a full size cursor, even if the image
-        // is smaller because I couldn't get the padding to come out
-        // right otherwise.
-        cshmem->cursorSize[0].width = CURSORWIDTH;
-        cshmem->cursorSize[0].height = CURSORHEIGHT;
-        cshmem->hotSpot[0].x = pCursor->bits->xhot;
-        cshmem->hotSpot[0].y = pCursor->bits->yhot;
-
-        // try to use a hardware cursor
-        if (ScreenPriv->canHWCursor) {
-            kr = IOFBSetNewCursor(iokitScreen->fbService, 0, 0, 0);
-            // FIXME: this is a fatal error without the kernel cursor
-            kern_assert( kr );
-#if 0
-            if (kr != KERN_SUCCESS) {
-                ErrorF("Could not set new cursor with kernel return 0x%x.\n", kr);
-                ScreenPriv->canHWCursor = FALSE;
-            }
-#endif
-        }
-
-        // make the new cursor visible
-        if (cshmem->cursorShow)
-            cshmem->cursorShow--;
-
-        if (!cshmem->cursorShow && ScreenPriv->canHWCursor) {
-            kr = IOFBSetCursorVisible(iokitScreen->fbService, TRUE);
-            // FIXME: this is a fatal error without the kernel cursor
-            kern_assert( kr );
-#if 0
-            if (kr != KERN_SUCCESS) {
-                ErrorF("Couldn't set hardware cursor visible with kernel return 0x%x.\n", kr);
-                ScreenPriv->canHWCursor = FALSE;
-            } else
-#endif
-                ScreenPriv->cursorMode = 2;     // hardware cursor
-        }
-
-	return; 
-    }
-
-    // otherwise we use a software cursor
-    if (ScreenPriv->cursorMode) {
-        /* remove the kernel or hardware cursor */
-        XFIOKitSetCursor(pScreen, 0, x, y);
-    }
-
-    ScreenPriv->cursorMode = 0;
-    (*ScreenPriv->spriteFuncs->SetCursor)(pScreen, pCursor, x, y);
-}
-
-
-/*
- * XFIOKitMoveCursor
- * Move the cursor. This is a noop for a kernel or hardware cursor.
- */
-static void
-XFIOKitMoveCursor(
-    ScreenPtr   pScreen,
-    int         x,
-    int         y)
-{
-    XFIOKitCursorScreenPtr ScreenPriv = CURSOR_PRIV(pScreen);
-
-    // only the X cursor needs to be explicitly moved
-    if (!ScreenPriv->cursorMode)
-        (*ScreenPriv->spriteFuncs->MoveCursor)(pScreen, x, y);
-}
-
-static miPointerSpriteFuncRec darwinSpriteFuncsRec = {
-    XFIOKitRealizeCursor,
-    XFIOKitUnrealizeCursor,
-    XFIOKitSetCursor,
-    XFIOKitMoveCursor
-};
-
-
-/*
-===========================================================================
-
- Pointer screen functions
-
-===========================================================================
-*/
-
-/*
- * XFIOKitCursorOffScreen
- */
-static Bool XFIOKitCursorOffScreen(ScreenPtr *pScreen, int *x, int *y)
-{	return FALSE;
-}
-
-
-/*
- * XFIOKitCrossScreen
- */
-static void XFIOKitCrossScreen(ScreenPtr pScreen, Bool entering)
-{	return;
-}
-
-
-/*
- * XFIOKitWarpCursor
- * Change the cursor position without generating an event or motion history
- */
-static void
-XFIOKitWarpCursor(
-    ScreenPtr               pScreen,
-    int                     x,
-    int                     y)
-{
-    kern_return_t           kr;
-
-    kr = IOHIDSetMouseLocation( xfIOKitInputConnect, x, y );
-    if (kr != KERN_SUCCESS) {
-        ErrorF("Could not set cursor position with kernel return 0x%x.\n", kr);
-    }
-    miPointerWarpCursor(pScreen, x, y);
-}
-
-static miPointerScreenFuncRec darwinScreenFuncsRec = {
-  XFIOKitCursorOffScreen,
-  XFIOKitCrossScreen,
-  XFIOKitWarpCursor,
-  DarwinEQPointerPost,
-  DarwinEQSwitchScreen
-};
-
-
-/*
-===========================================================================
-
- Other screen functions
-
-===========================================================================
-*/
-
-/*
- * XFIOKitCursorQueryBestSize
- * Handle queries for best cursor size
- */
-static void
-XFIOKitCursorQueryBestSize(
-   int              class, 
-   unsigned short   *width,
-   unsigned short   *height,
-   ScreenPtr        pScreen)
-{
-    XFIOKitCursorScreenPtr ScreenPriv = CURSOR_PRIV(pScreen);
-
-    if (class == CursorShape) {
-        *width = CURSORWIDTH;
-        *height = CURSORHEIGHT;
-    } else
-        (*ScreenPriv->QueryBestSize)(class, width, height, pScreen);
-}
-
-
-/*
- * XFIOKitInitCursor
- * Initialize cursor support
- */
-Bool 
-XFIOKitInitCursor(
-    ScreenPtr	pScreen)
-{
-    XFIOKitScreenPtr        iokitScreen = XFIOKIT_SCREEN_PRIV(pScreen);
-    XFIOKitCursorScreenPtr  ScreenPriv;
-    miPointerScreenPtr	    PointPriv;
-    kern_return_t           kr;
-
-    // start with no cursor displayed
-    if (!iokitScreen->cursorShmem->cursorShow++) {
-        if (iokitScreen->cursorShmem->hardwareCursorActive) {
-            kr = IOFBSetCursorVisible(iokitScreen->fbService, FALSE);
-            kern_assert( kr );
-        }
-    }
-
-    // initialize software cursor handling (always needed as backup)
-    if (!miDCInitialize(pScreen, &darwinScreenFuncsRec)) {
-        return FALSE;
-    }
-
-    // allocate private storage for this screen's hardware cursor info
-    if (darwinCursorGeneration != serverGeneration) {
-        if ((darwinCursorScreenIndex = AllocateScreenPrivateIndex()) < 0)
-            return FALSE;
-        darwinCursorGeneration = serverGeneration; 	
-    }
-
-    ScreenPriv = xcalloc( 1, sizeof(XFIOKitCursorScreenRec) );
-    if (!ScreenPriv) return FALSE;
-
-    pScreen->devPrivates[darwinCursorScreenIndex].ptr = (pointer) ScreenPriv;
-
-    // check if a hardware cursor is supported
-    if (!iokitScreen->cursorShmem->hardwareCursorCapable) {
-        ScreenPriv->canHWCursor = FALSE;
-        ErrorF("Hardware cursor not supported.\n");
-    } else {
-        // we need to make sure that the hardware cursor really works
-        ScreenPriv->canHWCursor = TRUE;
-        kr = IOFBSetNewCursor(iokitScreen->fbService, 0, 0, 0);
-        if (kr != KERN_SUCCESS) {
-            ErrorF("Could not set hardware cursor with kernel return 0x%x.\n", kr);
-            ScreenPriv->canHWCursor = FALSE;
-        }
-        kr = IOFBSetCursorVisible(iokitScreen->fbService, TRUE);
-        if (kr != KERN_SUCCESS) {
-            ErrorF("Couldn't set hardware cursor visible with kernel return 0x%x.\n", kr);
-            ScreenPriv->canHWCursor = FALSE;
-        }
-        IOFBSetCursorVisible(iokitScreen->fbService, FALSE);
-    }
-
-    ScreenPriv->cursorMode = 0;
-    ScreenPriv->pInstalledMap = NULL;
-
-    // override some screen procedures
-    ScreenPriv->QueryBestSize = pScreen->QueryBestSize;
-    pScreen->QueryBestSize = XFIOKitCursorQueryBestSize;
-//    ScreenPriv->ConstrainCursor = pScreen->ConstrainCursor;
-//    pScreen->ConstrainCursor = XFIOKitConstrainCursor;
-
-    // initialize hardware cursor handling
-    PointPriv = (miPointerScreenPtr)
-                    pScreen->devPrivates[miPointerScreenIndex].ptr;
-
-    ScreenPriv->spriteFuncs = PointPriv->spriteFuncs;
-    PointPriv->spriteFuncs = &darwinSpriteFuncsRec; 
-
-    /* Other routines that might be overridden */
-/*
-    CursorLimitsProcPtr		CursorLimits;
-    RecolorCursorProcPtr	RecolorCursor;
-*/
-
-    return TRUE;
-}
diff --git a/hw/darwin/iokit/xfIOKitStartup.c b/hw/darwin/iokit/xfIOKitStartup.c
deleted file mode 100644
index ad8e05b..0000000
--- a/hw/darwin/iokit/xfIOKitStartup.c
+++ /dev/null
@@ -1,131 +0,0 @@
-/**************************************************************
- *
- * Startup code for the IOKit Darwin X Server
- *
- **************************************************************/
-/*
- * Copyright (c) 2001-2004 Torrey T. Lyons. All Rights Reserved.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE ABOVE LISTED COPYRIGHT HOLDER(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR
- * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
- * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
- * DEALINGS IN THE SOFTWARE.
- *
- * Except as contained in this notice, the name(s) of the above copyright
- * holders shall not be used in advertising or otherwise to promote the sale,
- * use or other dealings in this Software without prior written authorization.
- */
-
-#include <dix-config.h>
-
-#include "darwin.h"
-#include "darwinKeyboard.h"
-#include "micmap.h"
-
-void GlxExtensionInit(void);
-void GlxWrapInitVisuals(miInitVisualsProcPtr *procPtr);
-
-
-/*
- * DarwinHandleGUI
- *  This function is called first from main().
- *  It does nothing for the IOKit X server.
- */
-void DarwinHandleGUI(
-    int         argc,
-    char        *argv[],
-    char        *envp[] )
-{
-}
-
-
-/*
- * DarwinGlxExtensionInit
- *  Initialize the GLX extension.
- *  Mesa is linked into the IOKit mode X server so we just call directly.
- */
-void DarwinGlxExtensionInit(void)
-{
-#ifdef GLXEXT
-    	GlxExtensionInit();
-#endif
-}
-
-
-/*
- * DarwinGlxWrapInitVisuals
- */
-void DarwinGlxWrapInitVisuals(
-    miInitVisualsProcPtr *procPtr)
-{
-#ifdef GLXEXT
-    GlxWrapInitVisuals(procPtr);
-#endif
-}
-
-
-/*
- * DarwinModeProcessArgument
- *  Process IOKit specific command line arguments.
- */
-int DarwinModeProcessArgument(
-    int argc,
-    char *argv[],
-    int i)
-{
-#ifdef DARWIN_WITH_QUARTZ
-    // XDarwinStartup uses these arguments to indicate which X server
-    // should be started. Ignore them here.
-    if (!strcmp( argv[i], "-fullscreen" ) ||
-        !strcmp( argv[i], "-rootless" ) ||
-        !strcmp( argv[i], "-quartz" ))
-    {
-        return 1;
-    }
-#else
-    if (!strcmp( argv[i], "-fullscreen" ) ||
-        !strcmp( argv[i], "-rootless" ) ||
-        !strcmp( argv[i], "-quartz" ))
-    {
-        FatalError("Command line option %s is not available without Quartz "
-                   "support.\n", argv[i]);
-    }
-#endif
-
-    return 0;
-}
-
-
-/*
- * DarwinModeSystemKeymapSeed
- *  Changes to NXKeyMapping are not tracked.
- */
-unsigned int
-DarwinModeSystemKeymapSeed(void)
-{
-    return 0;
-}
-
-
-/*
- * DarwinModeReadSystemKeymap
- *  IOKit has no alternative to NXKeyMapping API.
- */
-Bool DarwinModeReadSystemKeymap(
-    darwinKeyboardInfo *info)
-{
-    return FALSE;
-}
diff --git a/hw/darwin/quartz/Makefile.am b/hw/darwin/quartz/Makefile.am
index f8dc167..54e6c30 100644
--- a/hw/darwin/quartz/Makefile.am
+++ b/hw/darwin/quartz/Makefile.am
@@ -1,54 +1,36 @@
 noinst_LIBRARIES = libXQuartz.a
 
-AM_CFLAGS = @XORG_CFLAGS@ @DIX_CFLAGS@
-AM_OBJCFLAGS = @XORG_CFLAGS@ @DIX_CFLAGS@
+AM_CFLAGS = $(XORG_CFLAGS) $(DIX_CFLAGS)
+AM_OBJCFLAGS = $(XORG_CFLAGS) $(DIX_CFLAGS)
+AM_CPPFLAGS = $(XORG_INCS) \
+	-DHAS_KL_API \
+	-I$(srcdir) -I$(srcdir)/.. \
+	-I$(top_srcdir)/miext/rootless
 
-INCLUDES = -I$(srcdir) -I$(srcdir)/.. @XORG_INCS@
-AM_DEFS = -DHAS_CG_MACH_PORT -DHAS_KL_API
-if HAVE_XPLUGIN
-AM_DEFS += -DBUILD_XPR
-endif
-DEFS = @DEFS@ $(AM_DEFS) -DXBINDIR=\"${bindir}\"
+SUBDIRS = xpr
 
 libXQuartz_a_SOURCES = \
-		  Preferences.m \
-	          XApplication.m \
-	          XServer.m \
-	          applewm.c \
-	          keysym2ucs.c \
-	          quartz.c \
-	          quartzAudio.c \
-	          quartzCocoa.m \
-	          quartzPasteboard.c \
-	          quartzKeyboard.c \
-	          quartzStartup.c \
-	          pseudoramiX.c
-
-bin_PROGRAMS = XDarwinStartup
-
-XDarwinStartup_SOURCES = XDarwinStartup.c
-XDarwinStartup_LDFLAGS = -Wl,-framework,CoreFoundation \
-			 -Wl,-framework,ApplicationServices
-XDarwinStartupCFLAGS = -DXBINDIR="${bindir}"
-XDARWINROOT = @APPLE_APPLICATIONS_DIR@
-BINDIR = $(bindir)
-install-exec-local:
-	-(cd $(DESTDIR)$(BINDIR); rm X; $(LN_S) XDarwinStartup X)
-
-man1_MANS = XDarwinStartup.man
+	X11Application.m \
+	X11Controller.m \
+	applewm.c \
+	keysym2ucs.c \
+	pseudoramiX.c \
+	quartz.c \
+	quartzAudio.c \
+	quartzCocoa.m \
+	quartzKeyboard.c \
+	quartzPasteboard.c \
+	quartzStartup.c
 
 EXTRA_DIST = \
+	X11Application.h \
+	X11Controller.h \
 	applewmExt.h \
 	keysym2ucs.h \
-	Preferences.h \
 	pseudoramiX.h \
 	quartzAudio.h \
 	quartzCommon.h \
 	quartzCursor.c \
 	quartzCursor.h \
 	quartz.h \
-	quartzPasteboard.h \
-	XApplication.h \
-	XDarwin.pbproj/project.pbxproj \
-	XServer.h \
-	XDarwinStartup.man
+	quartzPasteboard.h
diff --git a/hw/darwin/quartz/X11Application.h b/hw/darwin/quartz/X11Application.h
new file mode 100644
index 0000000..8615657
--- /dev/null
+++ b/hw/darwin/quartz/X11Application.h
@@ -0,0 +1,103 @@
+/* X11Application.h -- subclass of NSApplication to multiplex events
+
+   Copyright (c) 2002-2007 Apple Inc. All rights reserved.
+
+   Permission is hereby granted, free of charge, to any person
+   obtaining a copy of this software and associated documentation files
+   (the "Software"), to deal in the Software without restriction,
+   including without limitation the rights to use, copy, modify, merge,
+   publish, distribute, sublicense, and/or sell copies of the Software,
+   and to permit persons to whom the Software is furnished to do so,
+   subject to the following conditions:
+
+   The above copyright notice and this permission notice shall be
+   included in all copies or substantial portions of the Software.
+
+   THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+   EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+   MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+   NONINFRINGEMENT.  IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT
+   HOLDER(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+   WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+   OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+   DEALINGS IN THE SOFTWARE.
+
+   Except as contained in this notice, the name(s) of the above
+   copyright holders shall not be used in advertising or otherwise to
+   promote the sale, use or other dealings in this Software without
+   prior written authorization. */
+
+#ifndef X11APPLICATION_H
+#define X11APPLICATION_H 1
+
+#if __OBJC__
+
+#import <Cocoa/Cocoa.h>
+#import "X11Controller.h"
+
+ at interface X11Application : NSApplication {
+    X11Controller *_controller;
+
+    unsigned int _x_active :1;
+}
+
+- (void) set_controller:controller;
+- (void) set_window_menu:(NSArray *)list;
+
+- (int) prefs_get_integer:(NSString *)key default:(int)def;
+- (const char *) prefs_get_string:(NSString *)key default:(const char *)def;
+- (float) prefs_get_float:(NSString *)key default:(float)def;
+- (int) prefs_get_boolean:(NSString *)key default:(int)def;
+- (NSArray *) prefs_get_array:(NSString *)key;
+- (void) prefs_set_integer:(NSString *)key value:(int)value;
+- (void) prefs_set_float:(NSString *)key value:(float)value;
+- (void) prefs_set_boolean:(NSString *)key value:(int)value;
+- (void) prefs_set_array:(NSString *)key value:(NSArray *)value;
+- (void) prefs_set_string:(NSString *)key value:(NSString *)value;
+- (void) prefs_synchronize;
+
+- (BOOL) x_active;
+
+ at end
+
+extern X11Application *X11App;
+
+#endif /* __OBJC__ */
+
+extern void X11ApplicationSetWindowMenu (int nitems, const char **items,
+					 const char *shortcuts);
+extern void X11ApplicationSetWindowMenuCheck (int idx);
+extern void X11ApplicationSetFrontProcess (void);
+extern void X11ApplicationSetCanQuit (int state);
+extern void X11ApplicationServerReady (void);
+extern void X11ApplicationShowHideMenubar (int state);
+
+extern void X11ApplicationMain (int argc, const char *argv[],
+				void (*server_thread) (void *),
+				void *server_arg);
+
+extern int X11EnableKeyEquivalents;
+extern int quartzHasRoot, quartzEnableRootless;
+
+#define APP_PREFS "org.x.X11"
+
+#define PREFS_APPSMENU		"apps_menu"
+#define PREFS_FAKEBUTTONS	"enable_fake_buttons"
+#define PREFS_SYSBEEP		"enable_system_beep"
+#define PREFS_KEYEQUIVS		"enable_key_equivalents"
+#define PREFS_KEYMAP_FILE	"keymap_file"
+#define PREFS_SYNC_KEYMAP	"sync_keymap"
+#define PREFS_DEPTH		"depth"
+#define PREFS_NO_AUTH		"no_auth"
+#define PREFS_NO_TCP		"nolisten_tcp"
+#define PREFS_DONE_XINIT_CHECK	"done_xinit_check"
+#define PREFS_NO_QUIT_ALERT	"no_quit_alert"
+#define PREFS_FAKE_BUTTON2	"fake_button2"
+#define PREFS_FAKE_BUTTON3	"fake_button3"
+#define PREFS_ROOTLESS		"rootless"
+#define PREFS_FULLSCREEN_HOTKEYS "fullscreen_hotkeys"
+#define PREFS_SWAP_ALT_META	"swap_alt_meta"
+#define PREFS_XP_OPTIONS	"xp_options"
+#define PREFS_ENABLE_STEREO	"enable_stereo"
+
+#endif /* X11APPLICATION_H */
diff --git a/hw/darwin/quartz/X11Application.m b/hw/darwin/quartz/X11Application.m
new file mode 100644
index 0000000..6d079ee
--- /dev/null
+++ b/hw/darwin/quartz/X11Application.m
@@ -0,0 +1,919 @@
+/* X11Application.m -- subclass of NSApplication to multiplex events
+ 
+ Copyright (c) 2002-2007 Apple Inc.
+ 
+ Permission is hereby granted, free of charge, to any person
+ obtaining a copy of this software and associated documentation files
+ (the "Software"), to deal in the Software without restriction,
+ including without limitation the rights to use, copy, modify, merge,
+ publish, distribute, sublicense, and/or sell copies of the Software,
+ and to permit persons to whom the Software is furnished to do so,
+ subject to the following conditions:
+ 
+ The above copyright notice and this permission notice shall be
+ included in all copies or substantial portions of the Software.
+ 
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ NONINFRINGEMENT.  IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT
+ HOLDER(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+ WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ DEALINGS IN THE SOFTWARE.
+ 
+ Except as contained in this notice, the name(s) of the above
+ copyright holders shall not be used in advertising or otherwise to
+ promote the sale, use or other dealings in this Software without
+ prior written authorization. */
+
+#include "../quartz/quartzCommon.h"
+
+#import "X11Application.h"
+#include <Carbon/Carbon.h>
+
+/* ouch! */
+#define BOOL X_BOOL
+# include "darwin.h"
+# include "../quartz/quartz.h"
+# define _APPLEWM_SERVER_
+# include "X11/extensions/applewm.h"
+# include "micmap.h"
+#undef BOOL
+
+#include <mach/mach.h>
+#include <unistd.h>
+#include <pthread.h>
+
+#include "rootlessCommon.h"
+
+WindowPtr xprGetXWindowFromAppKit(int windowNumber); // xpr/xprFrame.c
+
+#define DEFAULTS_FILE "/usr/X11/lib/X11/xserver/Xquartz.plist"
+
+int X11EnableKeyEquivalents = TRUE;
+int quartzHasRoot = FALSE, quartzEnableRootless = TRUE;
+
+extern int darwinFakeButtons, input_check_flag;
+// extern Bool enable_stereo; 
+Bool enable_stereo;  //<-- this needs to go back to being an extern once glxCGL is fixed
+
+extern xEvent *darwinEvents;
+
+X11Application *X11App;
+
+#define ALL_KEY_MASKS (NSShiftKeyMask | NSControlKeyMask | NSAlternateKeyMask | NSCommandKeyMask)
+
+ at implementation X11Application
+
+typedef struct message_struct message;
+struct message_struct {
+    mach_msg_header_t hdr;
+    SEL selector;
+    NSObject *arg;
+};
+
+static mach_port_t _port;
+
+static void send_nsevent (NSEventType type, NSEvent *e);
+
+/* Quartz mode initialization routine. This is often dynamically loaded
+ but is statically linked into this X server. */
+extern Bool QuartzModeBundleInit(void);
+
+static void init_ports (void) {
+    kern_return_t r;
+    NSPort *p;
+	
+    if (_port != MACH_PORT_NULL) return;
+	
+    r = mach_port_allocate (mach_task_self (), MACH_PORT_RIGHT_RECEIVE, &_port);
+    if (r != KERN_SUCCESS) return;
+	
+    p = [NSMachPort portWithMachPort:_port];
+    [p setDelegate:NSApp];
+    [p scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode];
+}
+
+static void message_kit_thread (SEL selector, NSObject *arg) {
+    message msg;
+    kern_return_t r;
+	
+    msg.hdr.msgh_bits = MACH_MSGH_BITS (MACH_MSG_TYPE_MAKE_SEND, 0);
+    msg.hdr.msgh_size = sizeof (msg);
+    msg.hdr.msgh_remote_port = _port;
+    msg.hdr.msgh_local_port = MACH_PORT_NULL;
+    msg.hdr.msgh_reserved = 0;
+    msg.hdr.msgh_id = 0;
+	
+    msg.selector = selector;
+    msg.arg = [arg retain];
+	
+    r = mach_msg (&msg.hdr, MACH_SEND_MSG, msg.hdr.msgh_size,
+		  0, MACH_PORT_NULL, 0, MACH_PORT_NULL);
+    if (r != KERN_SUCCESS)
+		ErrorF("%s: mach_msg failed: %x\n", __FUNCTION__, r);
+}
+
+- (void) handleMachMessage:(void *)_msg {
+    message *msg = _msg;
+	
+    [self performSelector:msg->selector withObject:msg->arg];
+    [msg->arg release];
+}
+
+- (void) set_controller:obj {
+    if (_controller == nil) _controller = [obj retain];
+}
+
+- (void) dealloc {
+    if (_controller != nil) [_controller release];
+	
+    if (_port != MACH_PORT_NULL)
+		mach_port_deallocate (mach_task_self (), _port);
+	
+    [super dealloc];
+}
+
+- (void) orderFrontStandardAboutPanel: (id) sender {
+    NSMutableDictionary *dict;
+    NSDictionary *infoDict;
+    NSString *tem;
+	
+    dict = [NSMutableDictionary dictionaryWithCapacity:2];
+    infoDict = [[NSBundle mainBundle] infoDictionary];
+	
+    [dict setObject: NSLocalizedString (@"The X Window System", @"About panel")
+			 forKey:@"ApplicationName"];
+	
+    tem = [infoDict objectForKey:@"CFBundleShortVersionString"];
+	
+    [dict setObject:[NSString stringWithFormat:@"X11.app %@ - X.org X11R7.3", tem] 
+	  forKey:@"ApplicationVersion"];
+	
+    [self orderFrontStandardAboutPanelWithOptions: dict];
+}
+
+- (void) activateX:(BOOL)state {
+    /* Create a TSM document that supports full Unicode input, and
+	 have it activated while X is active (unless using the old
+	 keymapping files) */
+    static TSMDocumentID x11_document;
+	
+    if (state) {
+      QuartzMessageServerThread (kXDarwinActivate, 0);
+      
+      if (!_x_active) {
+	if (x11_document == 0 && darwinKeymapFile == NULL) {
+	  OSType types[1];
+	  types[0] = kUnicodeDocument;
+	  NewTSMDocument (1, types, &x11_document, 0);
+	}
+	
+	if (x11_document != 0)	ActivateTSMDocument (x11_document);
+      }
+    } else {
+      QuartzMessageServerThread (kXDarwinDeactivate, 0);
+      
+      if (_x_active && x11_document != 0)
+	DeactivateTSMDocument (x11_document);
+    }
+    
+    _x_active = state;
+}
+
+- (void) became_key:(NSWindow *)win {
+    [self activateX:NO];
+}
+
+- (void) sendEvent:(NSEvent *)e {
+  NSEventType type;
+  BOOL for_appkit, for_x;
+  
+  type = [e type];
+  
+  /* By default pass down the responder chain and to X. */
+  for_appkit = YES;
+  for_x = YES;
+  
+  switch (type) {
+  case NSLeftMouseDown: case NSRightMouseDown: case NSOtherMouseDown:
+  case NSLeftMouseUp: case NSRightMouseUp: case NSOtherMouseUp:
+    if ([e window] != nil) {
+      /* Pointer event has an (AppKit) window. Probably something for the kit. */
+      for_x = NO;
+      if (_x_active) [self activateX:NO];
+    } else if ([self modalWindow] == nil) {
+      /* Must be an X window. Tell appkit it doesn't have focus. */
+      WindowPtr pWin = xprGetXWindowFromAppKit([e windowNumber]);
+      if (pWin) RootlessReorderWindow(pWin);
+      for_appkit = NO;
+      
+      if ([self isActive]) {
+	[self deactivate];
+	
+	if (!_x_active && quartzProcs->IsX11Window([e window],
+						   [e windowNumber]))
+	  [self activateX:YES];
+      }
+    }
+    break;
+      
+  case NSKeyDown: case NSKeyUp:
+    if (_x_active) {
+      static int swallow_up;
+      
+      /* No kit window is focused, so send it to X. */
+      for_appkit = NO;
+      if (type == NSKeyDown) {
+	/* Before that though, see if there are any global
+	   shortcuts bound to it. */
+	
+	if (X11EnableKeyEquivalents
+	    && [[self mainMenu] performKeyEquivalent:e]) {
+	  swallow_up = [e keyCode];
+	  for_x = NO;
+	} else if (!quartzEnableRootless
+		   && ([e modifierFlags] & ALL_KEY_MASKS)
+		   == (NSCommandKeyMask | NSAlternateKeyMask)
+		   && ([e keyCode] == 0 /*a*/
+		    || [e keyCode] == 53 /*Esc*/)) {
+	  swallow_up = 0;
+	  for_x = NO;
+#ifdef DARWIN_DDX_MISSING
+	  QuartzMessageServerThread (kXDarwinToggleFullscreen, 0);
+#endif
+	}
+      } else {
+	/* If we saw a key equivalent on the down, don't pass
+	   the up through to X. */
+	
+	if (swallow_up != 0 && [e keyCode] == swallow_up) {
+	  swallow_up = 0;
+	  for_x = NO;
+	}
+      }
+    } else for_x = NO;
+    break;
+    
+  case NSFlagsChanged:
+    /* For the l33t X users who remap modifier keys to normal keysyms. */
+    if (!_x_active) for_x = NO;
+    break;
+    
+  case NSAppKitDefined:
+    switch ([e subtype]) {
+    case NSApplicationActivatedEventType:
+      for_x = NO;
+      if ([self modalWindow] == nil) {
+	for_appkit = NO;
+	
+	/* FIXME: hack to avoid having to pass the event to appkit,
+	   which would cause it to raise one of its windows. */
+	_appFlags._active = YES;
+	
+	[self activateX:YES];
+	if ([e data2] & 0x10) X11ApplicationSetFrontProcess();
+      }
+      break;
+      
+    case 18: /* ApplicationDidReactivate */
+      if (quartzHasRoot) for_appkit = NO;
+      break;
+      
+    case NSApplicationDeactivatedEventType:
+      for_x = NO;
+      [self activateX:NO];
+      break;
+    }
+    break;
+    
+  default: break; /* for gcc */
+  }
+  
+  if (for_appkit) [super sendEvent:e];
+  
+  if (for_x) send_nsevent (type, e);
+}
+
+- (void) set_window_menu:(NSArray *)list {
+    [_controller set_window_menu:list];
+}
+
+- (void) set_window_menu_check:(NSNumber *)n {
+    [_controller set_window_menu_check:n];
+}
+
+- (void) set_apps_menu:(NSArray *)list {
+    [_controller set_apps_menu:list];
+}
+
+- (void) set_front_process:unused {
+    [NSApp activateIgnoringOtherApps:YES];
+	
+    if ([self modalWindow] == nil) [self activateX:YES];
+    QuartzMessageServerThread(kXDarwinBringAllToFront, 0);
+}
+
+- (void) set_can_quit:(NSNumber *)state {
+    [_controller set_can_quit:[state boolValue]];
+}
+
+- (void) server_ready:unused {
+    [_controller server_ready];
+}
+
+- (void) show_hide_menubar:(NSNumber *)state {
+    if ([state boolValue]) ShowMenuBar ();
+    else HideMenuBar ();
+}
+
+
+/* user preferences */
+
+/* Note that these functions only work for arrays whose elements
+ can be toll-free-bridged between NS and CF worlds. */
+
+static const void *cfretain (CFAllocatorRef a, const void *b) {
+    return CFRetain (b);
+}
+
+static void cfrelease (CFAllocatorRef a, const void *b) {
+    CFRelease (b);
+}
+
+static CFMutableArrayRef nsarray_to_cfarray (NSArray *in) {
+    CFMutableArrayRef out;
+    CFArrayCallBacks cb;
+    NSObject *ns;
+    const CFTypeRef *cf;
+    int i, count;
+	
+    memset (&cb, 0, sizeof (cb));
+    cb.version = 0;
+    cb.retain = cfretain;
+    cb.release = cfrelease;
+	
+    count = [in count];
+    out = CFArrayCreateMutable (NULL, count, &cb);
+	
+    for (i = 0; i < count; i++) {
+      ns = [in objectAtIndex:i];
+      
+      if ([ns isKindOfClass:[NSArray class]])
+	cf = (CFTypeRef) nsarray_to_cfarray ((NSArray *) ns);
+      else
+	cf = CFRetain ((CFTypeRef) ns);
+      
+      CFArrayAppendValue (out, cf);
+      CFRelease (cf);
+    }
+    
+    return out;
+}
+
+static NSMutableArray * cfarray_to_nsarray (CFArrayRef in) {
+    NSMutableArray *out;
+    const CFTypeRef *cf;
+    NSObject *ns;
+    int i, count;
+	
+    count = CFArrayGetCount (in);
+    out = [[NSMutableArray alloc] initWithCapacity:count];
+	
+    for (i = 0; i < count; i++) {
+      cf = CFArrayGetValueAtIndex (in, i);
+		
+      if (CFGetTypeID (cf) == CFArrayGetTypeID ())
+	ns = cfarray_to_nsarray ((CFArrayRef) cf);
+      else
+	ns = [(id)cf retain];
+      
+      [out addObject:ns];
+      [ns release];
+    }
+    
+    return out;
+}
+
+- (CFPropertyListRef) prefs_get:(NSString *)key {
+    CFPropertyListRef value;
+	
+    value = CFPreferencesCopyAppValue ((CFStringRef) key, CFSTR (APP_PREFS));
+	
+    if (value == NULL) {
+      static CFDictionaryRef defaults;
+      
+      if (defaults == NULL) {
+	CFStringRef error = NULL;
+	CFDataRef data;
+	CFURLRef url;
+	SInt32 error_code;
+	
+	url = (CFURLCreateFromFileSystemRepresentation
+	       (NULL, (unsigned char *)DEFAULTS_FILE, strlen (DEFAULTS_FILE), false));
+	if (CFURLCreateDataAndPropertiesFromResource (NULL, url, &data,
+						      NULL, NULL, &error_code)) {
+	  defaults = (CFPropertyListCreateFromXMLData
+		      (NULL, data, kCFPropertyListMutableContainersAndLeaves, &error));
+	  if (error != NULL) CFRelease (error);
+	  CFRelease (data);
+	}
+	CFRelease (url);
+			
+	if (defaults != NULL) {
+	  NSMutableArray *apps, *elt;
+	  int count, i;
+	  NSString *name, *nname;
+	  
+	  /* Localize the names in the default apps menu. */
+	  
+	  apps = [(NSDictionary *)defaults objectForKey:@PREFS_APPSMENU];
+	  if (apps != nil) {
+	    count = [apps count];
+	    for (i = 0; i < count; i++)	{
+	      elt = [apps objectAtIndex:i];
+	      if (elt != nil && [elt isKindOfClass:[NSArray class]]) {
+		name = [elt objectAtIndex:0];
+		if (name != nil) {
+		  nname = NSLocalizedString (name, nil);
+		  if (nname != nil && nname != name)
+		    [elt replaceObjectAtIndex:0 withObject:nname];
+		}
+	      }
+	    }
+	  }
+	}
+      }
+		
+      if (defaults != NULL) value = CFDictionaryGetValue (defaults, key);
+      if (value != NULL) CFRetain (value);
+    }
+	
+    return value;
+}
+
+- (int) prefs_get_integer:(NSString *)key default:(int)def {
+  CFPropertyListRef value;
+  int ret;
+  
+  value = [self prefs_get:key];
+  
+  if (value != NULL && CFGetTypeID (value) == CFNumberGetTypeID ())
+    CFNumberGetValue (value, kCFNumberIntType, &ret);
+  else if (value != NULL && CFGetTypeID (value) == CFStringGetTypeID ())
+    ret = CFStringGetIntValue (value);
+  else
+    ret = def;
+  
+  if (value != NULL) CFRelease (value);
+  
+  return ret;
+}
+
+- (const char *) prefs_get_string:(NSString *)key default:(const char *)def {
+  CFPropertyListRef value;
+  const char *ret = NULL;
+  
+  value = [self prefs_get:key];
+  
+  if (value != NULL && CFGetTypeID (value) == CFStringGetTypeID ()) {
+    NSString *s = (NSString *) value;
+    
+    ret = [s UTF8String];
+  }
+  
+  if (value != NULL) CFRelease (value);
+  
+  return ret != NULL ? ret : def;
+}
+
+- (float) prefs_get_float:(NSString *)key default:(float)def {
+  CFPropertyListRef value;
+  float ret = def;
+  
+  value = [self prefs_get:key];
+  
+  if (value != NULL
+      && CFGetTypeID (value) == CFNumberGetTypeID ()
+      && CFNumberIsFloatType (value)) 
+    CFNumberGetValue (value, kCFNumberFloatType, &ret);
+  else if (value != NULL && CFGetTypeID (value) == CFStringGetTypeID ())
+    ret = CFStringGetDoubleValue (value);
+	
+  if (value != NULL) CFRelease (value);
+  
+  return ret;
+}
+
+- (int) prefs_get_boolean:(NSString *)key default:(int)def {
+  CFPropertyListRef value;
+  int ret = def;
+  
+  value = [self prefs_get:key];
+  
+  if (value != NULL) {
+    if (CFGetTypeID (value) == CFNumberGetTypeID ())
+      CFNumberGetValue (value, kCFNumberIntType, &ret);
+    else if (CFGetTypeID (value) == CFBooleanGetTypeID ())
+      ret = CFBooleanGetValue (value);
+    else if (CFGetTypeID (value) == CFStringGetTypeID ()) {
+      const char *tem = [(NSString *) value UTF8String];
+      if (strcasecmp (tem, "true") == 0 || strcasecmp (tem, "yes") == 0)
+	ret = YES;
+      else
+	ret = NO;
+    }
+    
+    CFRelease (value);
+  }
+  return ret;
+}
+
+- (NSArray *) prefs_get_array:(NSString *)key {
+  NSArray *ret = nil;
+  CFPropertyListRef value;
+  
+  value = [self prefs_get:key];
+  
+  if (value != NULL) {
+    if (CFGetTypeID (value) == CFArrayGetTypeID ())
+      ret = [cfarray_to_nsarray (value) autorelease];
+    
+    CFRelease (value);
+  }
+  
+  return ret;
+}
+
+- (void) prefs_set_integer:(NSString *)key value:(int)value {
+    CFNumberRef x;
+	
+    x = CFNumberCreate (NULL, kCFNumberIntType, &value);
+	
+    CFPreferencesSetValue ((CFStringRef) key, (CFTypeRef) x, CFSTR (APP_PREFS),
+			   kCFPreferencesCurrentUser, kCFPreferencesAnyHost);
+	
+    CFRelease (x);
+}
+
+- (void) prefs_set_float:(NSString *)key value:(float)value {
+    CFNumberRef x;
+	
+    x = CFNumberCreate (NULL, kCFNumberFloatType, &value);
+	
+    CFPreferencesSetValue ((CFStringRef) key, (CFTypeRef) x, CFSTR (APP_PREFS),
+			   kCFPreferencesCurrentUser, kCFPreferencesAnyHost);
+	
+    CFRelease (x);
+}
+
+- (void) prefs_set_boolean:(NSString *)key value:(int)value {
+  CFPreferencesSetValue ((CFStringRef) key,
+			 (CFTypeRef) value ? kCFBooleanTrue
+			 : kCFBooleanFalse, CFSTR (APP_PREFS),
+			 kCFPreferencesCurrentUser, kCFPreferencesAnyHost);
+  
+}
+
+- (void) prefs_set_array:(NSString *)key value:(NSArray *)value {
+  CFArrayRef cfarray;
+  
+  cfarray = nsarray_to_cfarray (value);
+  CFPreferencesSetValue ((CFStringRef) key,
+			 (CFTypeRef) cfarray,
+			 CFSTR (APP_PREFS),
+			 kCFPreferencesCurrentUser, kCFPreferencesAnyHost);
+  CFRelease (cfarray);
+}
+
+- (void) prefs_set_string:(NSString *)key value:(NSString *)value {
+  CFPreferencesSetValue ((CFStringRef) key, (CFTypeRef) value,
+			 CFSTR (APP_PREFS), kCFPreferencesCurrentUser,
+			 kCFPreferencesAnyHost);
+}
+
+- (void) prefs_synchronize {
+    CFPreferencesAppSynchronize (kCFPreferencesCurrentApplication);
+}
+
+- (void) read_defaults
+{
+    const char *tem;
+	
+    quartzUseSysBeep = [self prefs_get_boolean:@PREFS_SYSBEEP
+                        default:quartzUseSysBeep];
+    quartzEnableRootless = [self prefs_get_boolean:@PREFS_ROOTLESS
+                        default:quartzEnableRootless];
+#ifdef DARWIN_DDX_MISSING
+    quartzFullscreenDisableHotkeys = ![self prefs_get_boolean:
+					      @PREFS_FULLSCREEN_HOTKEYS default:
+					      !quartzFullscreenDisableHotkeys];
+    quartzXpluginOptions = [self prefs_get_integer:@PREFS_XP_OPTIONS
+                            default:quartzXpluginOptions];
+#endif
+	
+    darwinSwapAltMeta = [self prefs_get_boolean:@PREFS_SWAP_ALT_META
+                         default:darwinSwapAltMeta];
+    darwinFakeButtons = [self prefs_get_boolean:@PREFS_FAKEBUTTONS
+                         default:darwinFakeButtons];
+    if (darwinFakeButtons) {
+      const char *fake2, *fake3;
+      
+      fake2 = [self prefs_get_string:@PREFS_FAKE_BUTTON2 default:NULL];
+      fake3 = [self prefs_get_string:@PREFS_FAKE_BUTTON3 default:NULL];
+      
+      if (fake2 != NULL) darwinFakeMouse2Mask = DarwinParseModifierList(fake2);
+      if (fake3 != NULL) darwinFakeMouse3Mask = DarwinParseModifierList(fake3);
+    }
+	
+    X11EnableKeyEquivalents = [self prefs_get_boolean:@PREFS_KEYEQUIVS
+                               default:X11EnableKeyEquivalents];
+	
+    darwinSyncKeymap = [self prefs_get_boolean:@PREFS_SYNC_KEYMAP
+                        default:darwinSyncKeymap];
+	
+    tem = [self prefs_get_string:@PREFS_KEYMAP_FILE default:NULL];
+    if (tem != NULL) darwinKeymapFile = strdup (tem);
+    else             darwinKeymapFile = NULL;
+	
+    darwinDesiredDepth = [self prefs_get_integer:@PREFS_DEPTH
+                          default:darwinDesiredDepth];
+	
+    enable_stereo = [self prefs_get_boolean:@PREFS_ENABLE_STEREO
+                     default:false];
+}
+
+/* This will end up at the end of the responder chain. */
+- (void) copy:sender {
+  QuartzMessageServerThread (kXDarwinPasteboardNotify, 1,
+			     AppleWMCopyToPasteboard);
+}
+
+- (BOOL) x_active {
+    return _x_active;
+}
+
+ at end
+
+static NSArray *
+array_with_strings_and_numbers (int nitems, const char **items,
+				const char *numbers) {
+  NSMutableArray *array, *subarray;
+  NSString *string, *number;
+  int i;
+	
+  /* (Can't autorelease on the X server thread) */
+  
+  array = [[NSMutableArray alloc] initWithCapacity:nitems];
+  
+  for (i = 0; i < nitems; i++) {
+    subarray = [[NSMutableArray alloc] initWithCapacity:2];
+    
+    string = [[NSString alloc] initWithUTF8String:items[i]];
+    [subarray addObject:string];
+    [string release];
+    
+    if (numbers[i] != 0) {
+      number = [[NSString alloc] initWithFormat:@"%d", numbers[i]];
+      [subarray addObject:number];
+      [number release];
+    } else
+      [subarray addObject:@""];
+    
+    [array addObject:subarray];
+    [subarray release];
+  }
+  
+  return array;
+}
+
+void X11ApplicationSetWindowMenu (int nitems, const char **items,
+				  const char *shortcuts) {
+  NSArray *array;
+  array = array_with_strings_and_numbers (nitems, items, shortcuts);
+  
+  /* Send the array of strings over to the appkit thread */
+  
+  message_kit_thread (@selector (set_window_menu:), array);
+  [array release];
+}
+
+void X11ApplicationSetWindowMenuCheck (int idx) {
+  NSNumber *n;
+  
+  n = [[NSNumber alloc] initWithInt:idx];
+  
+  message_kit_thread (@selector (set_window_menu_check:), n);
+  
+  [n release];
+}
+
+void X11ApplicationSetFrontProcess (void) {
+    message_kit_thread (@selector (set_front_process:), nil);
+}
+
+void X11ApplicationSetCanQuit (int state) {
+    NSNumber *n;
+	
+    n = [[NSNumber alloc] initWithBool:state];
+	
+    message_kit_thread (@selector (set_can_quit:), n);
+	
+    [n release];
+}
+
+void X11ApplicationServerReady (void) {
+    message_kit_thread (@selector (server_ready:), nil);
+}
+
+void X11ApplicationShowHideMenubar (int state) {
+    NSNumber *n;
+	
+    n = [[NSNumber alloc] initWithBool:state];
+	
+    message_kit_thread (@selector (show_hide_menubar:), n);
+	
+    [n release];
+}
+
+static void * create_thread (void *func, void *arg) {
+    pthread_attr_t attr;
+    pthread_t tid;
+	
+    pthread_attr_init (&attr);
+    pthread_attr_setscope (&attr, PTHREAD_SCOPE_SYSTEM);
+    pthread_attr_setdetachstate (&attr, PTHREAD_CREATE_DETACHED);
+    pthread_create (&tid, &attr, func, arg);
+    pthread_attr_destroy (&attr);
+	
+    return (void *) tid;
+}
+
+static void check_xinitrc (void) {
+    char *tem, buf[1024];
+    NSString *msg;
+	
+    if ([X11App prefs_get_boolean:@PREFS_DONE_XINIT_CHECK default:NO])
+		return;
+	
+    tem = getenv ("HOME");
+    if (tem == NULL) goto done;
+	
+    snprintf (buf, sizeof (buf), "%s/.xinitrc", tem);
+    if (access (buf, F_OK) != 0)
+		goto done;
+	
+    /* FIXME: put localized strings into Resources/English.lproj */
+	
+    msg = NSLocalizedString (@"You have an existing ~/.xinitrc file.\n\n\
+Windows displayed by X11 applications may not have titlebars, or may look \
+different to windows displayed by native applications.\n\n\
+Would you like to move aside the existing file and use the standard X11 \
+environment?", @"Startup xinitrc dialog");
+	
+    if (NSRunAlertPanel (nil, msg, NSLocalizedString (@"Yes", @""),
+			 NSLocalizedString (@"No", @""), nil)
+	== NSAlertDefaultReturn) {
+      char buf2[1024];
+      int i = -1;
+      
+      snprintf (buf2, sizeof (buf2), "%s.old", buf);
+      
+      for (i = 1; access (buf2, F_OK) == 0; i++)
+	snprintf (buf2, sizeof (buf2), "%s.old.%d", buf, i);
+      
+      rename (buf, buf2);
+    }
+    
+ done:
+    [X11App prefs_set_boolean:@PREFS_DONE_XINIT_CHECK value:YES];
+    [X11App prefs_synchronize];
+}
+
+void X11ApplicationMain (int argc, const char *argv[],
+			 void (*server_thread) (void *), void *server_arg) {
+  NSAutoreleasePool *pool;
+  
+#ifdef DEBUG
+  while (access ("/tmp/x11-block", F_OK) == 0) sleep (1);
+#endif
+  
+  pool = [[NSAutoreleasePool alloc] init];
+  X11App = (X11Application *) [X11Application sharedApplication];
+  init_ports ();
+  [NSApp read_defaults];
+  [NSBundle loadNibNamed:@"main" owner:NSApp];
+  [[NSNotificationCenter defaultCenter] addObserver:NSApp
+					selector:@selector (became_key:)
+					name:NSWindowDidBecomeKeyNotification object:nil];
+  check_xinitrc ();
+	
+  /*
+   * The xpr Quartz mode is statically linked into this server.
+   * Initialize all the Quartz functions.
+   */
+  QuartzModeBundleInit();
+  
+  /* Calculate the height of the menubar so we can avoid it. */
+  aquaMenuBarHeight = NSHeight([[NSScreen mainScreen] frame]) -
+    NSMaxY([[NSScreen mainScreen] visibleFrame]);
+  
+  if (!create_thread (server_thread, server_arg)) {
+    ErrorF("can't create secondary thread\n");
+    exit (1);
+  }
+  
+  [NSApp run];
+  
+  /* not reached */
+}
+
+
+/* event conversion */
+
+static inline unsigned short
+convert_flags (unsigned int nsflags) {
+    unsigned int xflags = 0;
+	
+    if (nsflags == ~0) return 0xffff;
+	
+    if (nsflags & NSAlphaShiftKeyMask)	xflags |= LockMask;
+    if (nsflags & NSShiftKeyMask)	xflags |= ShiftMask;
+    if (nsflags & NSControlKeyMask)	xflags |= ControlMask;
+    if (nsflags & NSAlternateKeyMask)	xflags |= Mod1Mask;
+    if (nsflags & NSCommandKeyMask)	xflags |= Mod2Mask;
+    /* FIXME: secondaryfn? */
+	
+    return xflags;
+}
+
+
+// This code should probably be merged with that in XDarwin's XServer.m - BB
+static void send_nsevent (NSEventType type, NSEvent *e) {
+  //    static unsigned int button_state = 0;
+    NSRect screen;
+    NSPoint location;
+    NSWindow *window;
+    int pointer_x, pointer_y, ev_button, ev_type; 
+    //    int num_events=0, i=0, state;
+    xEvent xe;
+	
+    /* convert location to global top-left coordinates */
+    location = [e locationInWindow];
+    window = [e window];
+    screen = [[[NSScreen screens] objectAtIndex:0] frame];
+		
+    if (window != nil)	{
+      NSRect frame = [window frame];
+      pointer_x = location.x + frame.origin.x;
+      pointer_y = (((screen.origin.y + screen.size.height)
+		    - location.y) - frame.origin.y);
+    } else {
+      pointer_x = location.x;
+      pointer_y = (screen.origin.y + screen.size.height) - location.y;
+    }
+    
+    pointer_y -= aquaMenuBarHeight;
+    //    state = convert_flags ([e modifierFlags]);
+    
+    switch (type) {
+    case NSLeftMouseDown:    ev_button=1; ev_type=ButtonPress; goto handle_mouse;
+    case NSOtherMouseDown:   ev_button=2; ev_type=ButtonPress; goto handle_mouse;
+    case NSRightMouseDown:   ev_button=3; ev_type=ButtonPress; goto handle_mouse;
+    case NSLeftMouseUp:      ev_button=1; ev_type=ButtonRelease; goto handle_mouse;
+    case NSOtherMouseUp:     ev_button=2; ev_type=ButtonRelease; goto handle_mouse;
+    case NSRightMouseUp:     ev_button=3; ev_type=ButtonRelease; goto handle_mouse;
+    case NSLeftMouseDragged:  ev_button=1; ev_type=MotionNotify; goto handle_mouse;
+    case NSOtherMouseDragged: ev_button=2; ev_type=MotionNotify; goto handle_mouse;
+    case NSRightMouseDragged: ev_button=3; ev_type=MotionNotify; goto handle_mouse;
+    case NSMouseMoved: ev_button=0; ev_type=MotionNotify; goto handle_mouse;
+    handle_mouse:
+      
+      /* I'm not sure the below code is necessary or useful (-bb)
+	if(ev_type==ButtonPress) {
+	if (!quartzProcs->IsX11Window([e window], [e windowNumber])) {
+	  fprintf(stderr, "Dropping event because it's not a window\n");
+	  break;
+	}
+	button_state |= (1 << ev_button);
+	DarwinSendPointerEvents(ev_type, ev_button, pointer_x, pointer_y);
+      } else if (ev_type==ButtonRelease && (button_state & (1 << ev_button)) == 0) break;
+      */
+      DarwinSendPointerEvents(ev_type, ev_button, pointer_x, pointer_y);
+      break;
+    case NSScrollWheel: 
+      DarwinSendScrollEvents([e deltaY], pointer_x, pointer_y);
+      break;
+      
+    case NSKeyDown:  // do we need to translate these keyCodes?
+    case NSKeyUp:
+      DarwinSendKeyboardEvents((type == NSKeyDown)?KeyPress:KeyRelease, [e keyCode]);
+      break;
+
+    case NSFlagsChanged:
+      DarwinUpdateModKeys([e modifierFlags]);
+      break;
+    default: break; /* for gcc */
+    }	
+}
diff --git a/hw/darwin/quartz/X11Controller.h b/hw/darwin/quartz/X11Controller.h
new file mode 100644
index 0000000..8d17fd9
--- /dev/null
+++ b/hw/darwin/quartz/X11Controller.h
@@ -0,0 +1,85 @@
+/* X11Controller.h -- connect the IB ui
+
+   Copyright (c) 2002 Apple Computer, Inc. All rights reserved.
+
+   Permission is hereby granted, free of charge, to any person
+   obtaining a copy of this software and associated documentation files
+   (the "Software"), to deal in the Software without restriction,
+   including without limitation the rights to use, copy, modify, merge,
+   publish, distribute, sublicense, and/or sell copies of the Software,
+   and to permit persons to whom the Software is furnished to do so,
+   subject to the following conditions:
+
+   The above copyright notice and this permission notice shall be
+   included in all copies or substantial portions of the Software.
+
+   THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+   EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+   MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+   NONINFRINGEMENT.  IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT
+   HOLDER(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+   WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+   OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+   DEALINGS IN THE SOFTWARE.
+
+   Except as contained in this notice, the name(s) of the above
+   copyright holders shall not be used in advertising or otherwise to
+   promote the sale, use or other dealings in this Software without
+   prior written authorization. */
+
+#ifndef X11CONTROLLER_H
+#define X11CONTROLLER_H 1
+
+#if __OBJC__
+
+#import <Cocoa/Cocoa.h>
+#include "../quartz/xpr/x-list.h"
+
+ at interface X11Controller : NSObject
+{
+    NSPanel *prefs_panel;
+
+    NSButton *fake_buttons;
+    NSButton *enable_fullscreen;
+    NSButton *use_sysbeep;
+    NSButton *enable_keyequivs;
+    NSButton *sync_keymap;
+    NSButton *enable_auth;
+    NSButton *enable_tcp;
+    NSPopUpButton *depth;
+
+    NSMenuItem *x11_about_item;
+    NSMenuItem *window_separator;
+    NSMenuItem *dock_window_separator;
+    NSMenuItem *apps_separator;
+    NSMenuItem *toggle_fullscreen_item;
+    NSMenu *dock_apps_menu;
+    NSTableView *apps_table;
+
+    NSArray *apps;
+    NSMutableArray *table_apps;
+
+    NSMenu *dock_menu;
+
+    int checked_window_item;
+    x_list *pending_apps;
+
+    BOOL finished_launching;
+    BOOL can_quit;
+}
+
+- (void) set_window_menu:(NSArray *)list;
+- (void) set_window_menu_check:(NSNumber *)n;
+- (void) set_apps_menu:(NSArray *)list;
+- (void) set_can_quit:(BOOL)state;
+- (void) server_ready;
+
+ at end
+
+#endif /* __OBJC__ */
+
+extern void X11ControllerMain (int argc, const char *argv[],
+			       void (*server_thread) (void *),
+			       void *server_arg);
+
+#endif /* X11CONTROLLER_H */
diff --git a/hw/darwin/quartz/X11Controller.m b/hw/darwin/quartz/X11Controller.m
new file mode 100644
index 0000000..fbc9c74
--- /dev/null
+++ b/hw/darwin/quartz/X11Controller.m
@@ -0,0 +1,747 @@
+/* X11Controller.m -- connect the IB ui, also the NSApp delegate
+ 
+   Copyright (c) 2002-2007 Apple Inc. All rights reserved.
+ 
+   Permission is hereby granted, free of charge, to any person
+   obtaining a copy of this software and associated documentation files
+   (the "Software"), to deal in the Software without restriction,
+   including without limitation the rights to use, copy, modify, merge,
+   publish, distribute, sublicense, and/or sell copies of the Software,
+   and to permit persons to whom the Software is furnished to do so,
+   subject to the following conditions:
+ 
+   The above copyright notice and this permission notice shall be
+   included in all copies or substantial portions of the Software.
+ 
+   THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+   EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+   MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+   NONINFRINGEMENT.  IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT
+   HOLDER(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+   WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+   OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+   DEALINGS IN THE SOFTWARE.
+ 
+   Except as contained in this notice, the name(s) of the above
+   copyright holders shall not be used in advertising or otherwise to
+   promote the sale, use or other dealings in this Software without
+   prior written authorization. */
+
+#define DEFAULT_PATH "/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/X11/bin"
+
+#include "../quartz/quartzCommon.h"
+
+#import "X11Controller.h"
+#import "X11Application.h"
+#import <Carbon/Carbon.h>
+
+/* ouch! */
+#define BOOL X_BOOL
+#include "opaque.h"
+# include "darwin.h"
+# include "../quartz/quartz.h"
+# define _APPLEWM_SERVER_
+# include "X11/extensions/applewm.h"
+# include "../quartz/applewmExt.h"
+#undef BOOL
+
+#include <stdio.h>
+#include <unistd.h>
+#include <fcntl.h>
+#include <sys/types.h>
+#include <sys/wait.h>
+
+#define TRACE() fprintf (stderr, "%s\n", __FUNCTION__)
+
+ at implementation X11Controller
+
+- (void) awakeFromNib
+{
+  X11Application *xapp = NSApp;
+  NSArray *array;
+	
+  /* Point X11Application at ourself. */
+  [xapp set_controller:self];
+	
+  array = [xapp prefs_get_array:@PREFS_APPSMENU];
+  if (array != nil)
+    {
+      int count;
+		
+      /* convert from [TITLE1 COMMAND1 TITLE2 COMMAND2 ...]
+	 to [[TITLE1 COMMAND1] [TITLE2 COMMAND2] ...] format. */
+		
+      count = [array count];
+      if (count > 0
+	  && ![[array objectAtIndex:0] isKindOfClass:[NSArray class]])
+	{
+	  int i;
+	  NSMutableArray *copy, *sub;
+			
+	  copy = [NSMutableArray arrayWithCapacity:(count / 2)];
+			
+	  for (i = 0; i < count / 2; i++)
+	    {
+	      sub = [[NSMutableArray alloc] initWithCapacity:3];
+	      [sub addObject:[array objectAtIndex:i*2]];
+	      [sub addObject:[array objectAtIndex:i*2+1]];
+	      [sub addObject:@""];
+	      [copy addObject:sub];
+	      [sub release];
+	    }
+			
+	  array = copy;
+	}
+		
+      [self set_apps_menu:array];
+    }
+}
+
+- (void) item_selected:sender
+{
+  [NSApp activateIgnoringOtherApps:YES];
+	
+  QuartzMessageServerThread (kXDarwinControllerNotify, 2,
+			     AppleWMWindowMenuItem, [sender tag]);
+}
+
+- (void) remove_window_menu
+{
+  NSMenu *menu;
+  int first, count, i;
+	
+  /* Work backwards so we don't mess up the indices */
+  menu = [window_separator menu];
+  first = [menu indexOfItem:window_separator] + 1;
+  count = [menu numberOfItems];
+  for (i = count - 1; i >= first; i--)
+    [menu removeItemAtIndex:i];
+	
+  menu = [dock_window_separator menu];
+  count = [menu indexOfItem:dock_window_separator];
+  for (i = 0; i < count; i++)
+    [dock_menu removeItemAtIndex:0];
+}
+
+- (void) install_window_menu:(NSArray *)list
+{
+  NSMenu *menu;
+  NSMenuItem *item;
+  int first, count, i;
+	
+  menu = [window_separator menu];
+  first = [menu indexOfItem:window_separator] + 1;
+  count = [list count];
+  for (i = 0; i < count; i++)
+    {
+      NSString *name, *shortcut;
+		
+      name = [[list objectAtIndex:i] objectAtIndex:0];
+      shortcut = [[list objectAtIndex:i] objectAtIndex:1];
+		
+      item = (NSMenuItem *) [menu addItemWithTitle:name action:@selector
+				  (item_selected:) keyEquivalent:shortcut];
+      [item setTarget:self];
+      [item setTag:i];
+      [item setEnabled:YES];
+		
+      item = (NSMenuItem *) [dock_menu insertItemWithTitle:name
+				       action:@selector
+				       (item_selected:) keyEquivalent:shortcut
+				       atIndex:i];
+      [item setTarget:self];
+      [item setTag:i];
+      [item setEnabled:YES];
+    }
+	
+  if (checked_window_item >= 0 && checked_window_item < count)
+    {
+      item = (NSMenuItem *) [menu itemAtIndex:first + checked_window_item];
+      [item setState:NSOnState];
+      item = (NSMenuItem *) [dock_menu itemAtIndex:checked_window_item];
+      [item setState:NSOnState];
+    }
+}
+
+- (void) remove_apps_menu
+{
+  NSMenu *menu;
+  NSMenuItem *item;
+  int i;
+	
+  if (apps == nil || apps_separator == nil) return;
+	
+  menu = [apps_separator menu];
+	
+  if (menu != nil)
+    {
+      for (i = [menu numberOfItems] - 1; i >= 0; i--)
+	{
+	  item = (NSMenuItem *) [menu itemAtIndex:i];
+	  if ([item tag] != 0)
+	    [menu removeItemAtIndex:i];
+	}
+    }
+    
+  if (dock_apps_menu != nil)
+    {
+      for (i = [dock_apps_menu numberOfItems] - 1; i >= 0; i--)
+	{
+	  item = (NSMenuItem *) [dock_apps_menu itemAtIndex:i];
+	  if ([item tag] != 0)
+	    [dock_apps_menu removeItemAtIndex:i];
+	}
+    }
+    
+  [apps release];
+  apps = nil;
+}
+
+- (void) prepend_apps_item:(NSArray *)list index:(int)i menu:(NSMenu *)menu
+{
+  NSString *title, *shortcut = @"";
+  NSArray *group;
+  NSMenuItem *item;
+	
+  group = [list objectAtIndex:i];
+  title = [group objectAtIndex:0];
+  if ([group count] >= 3)
+    shortcut = [group objectAtIndex:2];
+	
+  if ([title length] != 0)
+    {
+      item = (NSMenuItem *) [menu insertItemWithTitle:title
+				  action:@selector (app_selected:)
+				  keyEquivalent:shortcut atIndex:0];
+      [item setTarget:self];
+      [item setEnabled:YES];
+    }
+  else
+    {
+      item = (NSMenuItem *) [NSMenuItem separatorItem];
+      [menu insertItem:item atIndex:0];
+    }
+	
+  [item setTag:i+1];			/* can't be zero, so add one */
+}
+
+- (void) install_apps_menu:(NSArray *)list
+{
+  NSMenu *menu;
+  int i, count;
+	
+  count = [list count];
+	
+  if (count == 0 || apps_separator == nil) return;
+	
+  menu = [apps_separator menu];
+	
+  for (i = count - 1; i >= 0; i--)
+    {
+      if (menu != nil)
+	[self prepend_apps_item:list index:i menu:menu];
+      if (dock_apps_menu != nil)
+	[self prepend_apps_item:list index:i menu:dock_apps_menu];
+    }
+	
+  apps = [list retain];
+}
+
+- (void) set_window_menu:(NSArray *)list
+{
+  [self remove_window_menu];
+  [self install_window_menu:list];
+	
+  QuartzMessageServerThread (kXDarwinControllerNotify, 1,
+			     AppleWMWindowMenuNotify);
+}
+
+- (void) set_window_menu_check:(NSNumber *)nn
+{
+  NSMenu *menu;
+  NSMenuItem *item;
+  int first, count;
+  int n = [nn intValue];
+
+  menu = [window_separator menu];
+  first = [menu indexOfItem:window_separator] + 1;
+  count = [menu numberOfItems] - first;
+	
+  if (checked_window_item >= 0 && checked_window_item < count)
+    {
+      item = (NSMenuItem *) [menu itemAtIndex:first + checked_window_item];
+      [item setState:NSOffState];
+      item = (NSMenuItem *) [dock_menu itemAtIndex:checked_window_item];
+      [item setState:NSOffState];
+    }
+  if (n >= 0 && n < count)
+    {
+      item = (NSMenuItem *) [menu itemAtIndex:first + n];
+      [item setState:NSOnState];
+      item = (NSMenuItem *) [dock_menu itemAtIndex:n];
+      [item setState:NSOnState];
+    }
+  checked_window_item = n;
+}
+
+- (void) set_apps_menu:(NSArray *)list
+{
+  [self remove_apps_menu];
+  [self install_apps_menu:list];
+}
+
+- (void) launch_client:(NSString *)filename
+{
+  const char *command = [filename UTF8String];
+  const char *argv[7];
+  int child1, child2 = 0;
+  int status;
+	
+  argv[0] = "/usr/bin/login";
+  argv[1] = "-fp";
+  argv[2] = getlogin();
+  argv[3] = "/bin/sh";
+  argv[4] = "-c";
+  argv[5] = command;
+  argv[6] = NULL;
+
+  /* Do the fork-twice trick to avoid having to reap zombies */
+    
+  child1 = fork();
+    
+  switch (child1) {
+  case -1:                                /* error */
+    break;
+      
+  case 0:                                 /* child1 */
+    child2 = fork();
+      
+    switch (child2) {
+      int max_files, i;
+      char buf[1024], *temp;
+	
+    case -1:                            /* error */
+      _exit(1);
+	
+    case 0:                             /* child2 */
+      /* close all open files except for standard streams */
+      max_files = sysconf(_SC_OPEN_MAX);
+      for (i = 3; i < max_files; i++)	close(i);
+	
+      /* ensure stdin is on /dev/null */
+      close(0);
+      open("/dev/null", O_RDONLY);
+	
+      /* Setup environment */
+      temp = getenv("DISPLAY");
+      if (temp == NULL || temp[0] == 0) {
+	snprintf(buf, sizeof(buf), ":%s", display);
+	setenv("DISPLAY", buf, TRUE);
+      }
+	
+      temp = getenv("PATH");
+      if (temp == NULL || temp[0] == 0) 
+	setenv ("PATH", DEFAULT_PATH, TRUE);
+      else if (strnstr(temp, "/usr/X11/bin", sizeof(temp)) == NULL) {
+	snprintf(buf, sizeof(buf), "%s:/usr/X11/bin", temp);            
+	setenv("PATH", buf, TRUE);      
+      }
+      /* cd $HOME */
+      temp = getenv("HOME");
+      if (temp != NULL && temp[0]!=0) chdir(temp);
+	
+      execvp(argv[0], (char **const) argv);
+	
+      _exit(2);
+	
+    default:                            /* parent (child1) */
+      _exit(0);
+    }
+    break;
+      
+  default:                                /* parent */
+    waitpid(child1, &status, 0);
+  }
+}
+
+- (void) app_selected:sender
+{
+  int tag;
+  NSString *item;
+  
+  tag = [sender tag] - 1;
+  if (apps == nil || tag < 0 || tag >= [apps count])
+    return;
+  
+  item = [[apps objectAtIndex:tag] objectAtIndex:1];
+  
+  [self launch_client:item];
+}
+
+- (IBAction) apps_table_show:sender
+{
+  NSArray *columns;
+	
+  if (table_apps == nil) {
+    table_apps = [[NSMutableArray alloc] initWithCapacity:1];
+      
+    if (apps != nil)[table_apps addObjectsFromArray:apps];
+  }
+	
+  columns = [apps_table tableColumns];
+  [[columns objectAtIndex:0] setIdentifier:@"0"];
+  [[columns objectAtIndex:1] setIdentifier:@"1"];
+  [[columns objectAtIndex:2] setIdentifier:@"2"];
+	
+  [apps_table setDataSource:self];
+  [apps_table selectRow:0 byExtendingSelection:NO];
+	
+  [[apps_table window] makeKeyAndOrderFront:sender];
+}
+
+- (IBAction) apps_table_cancel:sender
+{
+  [[apps_table window] orderOut:sender];
+  [apps_table reloadData];
+	
+  [table_apps release];
+  table_apps = nil;
+}
+
+- (IBAction) apps_table_done:sender
+{
+  [apps_table deselectAll:sender];	/* flush edits? */
+	
+  [self remove_apps_menu];
+  [self install_apps_menu:table_apps];
+	
+  [NSApp prefs_set_array:@PREFS_APPSMENU value:table_apps];
+  [NSApp prefs_synchronize];
+	
+  [[apps_table window] orderOut:sender];
+	
+  [table_apps release];
+  table_apps = nil;
+}
+
+- (IBAction) apps_table_new:sender
+{
+  NSMutableArray *item;
+	
+  int row = [apps_table selectedRow], i;
+	
+  if (row < 0) row = 0;
+  else row = row + 1;
+	
+  i = row;
+  if (i > [table_apps count])
+    return;				/* avoid exceptions */
+	
+  [apps_table deselectAll:sender];
+	
+  item = [[NSMutableArray alloc] initWithCapacity:3];
+  [item addObject:@""];
+  [item addObject:@""];
+  [item addObject:@""];
+	
+  [table_apps insertObject:item atIndex:i];
+  [item release];
+	
+  [apps_table reloadData];
+  [apps_table selectRow:row byExtendingSelection:NO];
+}
+
+- (IBAction) apps_table_duplicate:sender
+{
+  int row = [apps_table selectedRow], i;
+  NSObject *item;
+	
+  if (row < 0) {
+    [self apps_table_new:sender];
+    return;
+  }
+	
+  i = row;
+  if (i > [table_apps count] - 1) return;				/* avoid exceptions */
+    
+  [apps_table deselectAll:sender];
+	
+  item = [[table_apps objectAtIndex:i] mutableCopy];
+  [table_apps insertObject:item atIndex:i];
+  [item release];
+	
+  [apps_table reloadData];
+  [apps_table selectRow:row+1 byExtendingSelection:NO];
+}
+
+- (IBAction) apps_table_delete:sender
+{
+  int row = [apps_table selectedRow];
+	
+  if (row >= 0)
+    {
+      int i = row;
+      
+      if (i > [table_apps count] - 1) return;			/* avoid exceptions */
+      
+      [apps_table deselectAll:sender];
+      
+      [table_apps removeObjectAtIndex:i];
+    }
+	
+  [apps_table reloadData];
+	
+  row = MIN (row, [table_apps count] - 1);
+  if (row >= 0)
+    [apps_table selectRow:row byExtendingSelection:NO];
+}
+
+- (int) numberOfRowsInTableView:(NSTableView *)tableView
+{
+  if (table_apps == nil) return 0;
+  
+  return [table_apps count];
+}
+
+- (id) tableView:(NSTableView *)tableView
+objectValueForTableColumn:(NSTableColumn *)tableColumn row:(int)row
+{
+  NSArray *item;
+  int col;
+	
+  if (table_apps == nil) return nil;
+	
+  col = [[tableColumn identifier] intValue];
+	
+  item = [table_apps objectAtIndex:row];
+  if ([item count] > col)
+    return [item objectAtIndex:col];
+  else
+    return @"";
+}
+
+- (void) tableView:(NSTableView *)tableView setObjectValue:(id)object
+    forTableColumn:(NSTableColumn *)tableColumn row:(int)row
+{
+  NSMutableArray *item;
+  int col;
+	
+  if (table_apps == nil) return;
+	
+  col = [[tableColumn identifier] intValue];
+	
+  item = [table_apps objectAtIndex:row];
+  [item replaceObjectAtIndex:col withObject:object];
+}
+
+- (void) hide_window:sender
+{
+  if ([X11App x_active])
+    QuartzMessageServerThread (kXDarwinControllerNotify, 1, AppleWMHideWindow);
+  else
+    NSBeep ();			/* FIXME: something here */
+}
+
+- (IBAction)bring_to_front:sender
+{
+  QuartzMessageServerThread(kXDarwinControllerNotify, 1, AppleWMBringAllToFront);
+}
+
+- (IBAction)close_window:sender
+{
+  if ([X11App x_active])
+    QuartzMessageServerThread (kXDarwinControllerNotify, 1, AppleWMCloseWindow);
+  else
+    [[NSApp keyWindow] performClose:sender];
+}
+
+- (IBAction)minimize_window:sender
+{
+  if ([X11App x_active])
+    QuartzMessageServerThread (kXDarwinControllerNotify, 1, AppleWMMinimizeWindow);
+  else
+    [[NSApp keyWindow] performMiniaturize:sender];
+}
+
+- (IBAction)zoom_window:sender
+{
+  if ([X11App x_active])
+    QuartzMessageServerThread (kXDarwinControllerNotify, 1, AppleWMZoomWindow);
+  else
+    [[NSApp keyWindow] performZoom:sender];
+}
+
+- (IBAction) next_window:sender
+{
+  QuartzMessageServerThread (kXDarwinControllerNotify, 1, AppleWMNextWindow);
+}
+
+- (IBAction) previous_window:sender
+{
+  QuartzMessageServerThread (kXDarwinControllerNotify, 1, AppleWMPreviousWindow);
+}
+
+- (IBAction) enable_fullscreen_changed:sender
+{
+  int value = ![enable_fullscreen intValue];
+	
+#ifdef DARWIN_DDX_MISSING
+  QuartzMessageServerThread (kXDarwinSetRootless, 1, value);
+#endif
+	
+  [NSApp prefs_set_boolean:@PREFS_ROOTLESS value:value];
+  [NSApp prefs_synchronize];
+}
+
+- (IBAction) toggle_fullscreen:sender
+{
+#ifdef DARWIN_DDX_MISSING
+  QuartzMessageServerThread (kXDarwinToggleFullscreen, 0);
+#endif
+}
+
+- (void) set_can_quit:(BOOL)state
+{
+  can_quit = state;
+}
+
+- (IBAction)prefs_changed:sender
+{
+  darwinFakeButtons = [fake_buttons intValue];
+  quartzUseSysBeep = [use_sysbeep intValue];
+  X11EnableKeyEquivalents = [enable_keyequivs intValue];
+  darwinSyncKeymap = [sync_keymap intValue];
+	
+  /* after adding prefs here, also add to [X11Application read_defaults]
+     and below */
+	
+  [NSApp prefs_set_boolean:@PREFS_FAKEBUTTONS value:darwinFakeButtons];
+  [NSApp prefs_set_boolean:@PREFS_SYSBEEP value:quartzUseSysBeep];
+  [NSApp prefs_set_boolean:@PREFS_KEYEQUIVS value:X11EnableKeyEquivalents];
+  [NSApp prefs_set_boolean:@PREFS_SYNC_KEYMAP value:darwinSyncKeymap];
+  [NSApp prefs_set_boolean:@PREFS_NO_AUTH value:![enable_auth intValue]];
+  [NSApp prefs_set_boolean:@PREFS_NO_TCP value:![enable_tcp intValue]];
+  [NSApp prefs_set_integer:@PREFS_DEPTH value:[depth selectedTag]];
+	
+  [NSApp prefs_synchronize];
+}
+
+- (IBAction) prefs_show:sender
+{
+  [fake_buttons setIntValue:darwinFakeButtons];
+  [use_sysbeep setIntValue:quartzUseSysBeep];
+  [enable_keyequivs setIntValue:X11EnableKeyEquivalents];
+  [sync_keymap setIntValue:darwinSyncKeymap];
+  [sync_keymap setEnabled:darwinKeymapFile == NULL];
+	
+  [enable_auth setIntValue:![NSApp prefs_get_boolean:@PREFS_NO_AUTH default:NO]];
+  [enable_tcp setIntValue:![NSApp prefs_get_boolean:@PREFS_NO_TCP default:NO]];
+  [depth selectItemAtIndex:[depth indexOfItemWithTag:[NSApp prefs_get_integer:@PREFS_DEPTH default:-1]]];
+	
+  [enable_fullscreen setIntValue:!quartzEnableRootless];
+	
+  [prefs_panel makeKeyAndOrderFront:sender];
+}
+
+- (IBAction) quit:sender
+{
+  QuartzMessageServerThread (kXDarwinQuit, 0);
+}
+
+- (IBAction) x11_help:sender
+{
+  AHLookupAnchor ((CFStringRef)NSLocalizedString(@"Mac Help", no comment), CFSTR ("mchlp2276"));
+}
+
+- (BOOL) validateMenuItem:(NSMenuItem *)item
+{
+  NSMenu *menu = [item menu];
+	
+  if (item == toggle_fullscreen_item)
+    return !quartzEnableRootless;
+  else if (menu == [window_separator menu] || menu == dock_menu
+	   || (menu == [x11_about_item menu] && [item tag] == 42))
+    return (AppleWMSelectedEvents () & AppleWMControllerNotifyMask) != 0;
+  else
+    return TRUE;
+}
+
+- (void) applicationDidHide:(NSNotification *)notify
+{
+  QuartzMessageServerThread (kXDarwinControllerNotify, 1, AppleWMHideAll);
+}
+
+- (void) applicationDidUnhide:(NSNotification *)notify
+{
+  QuartzMessageServerThread (kXDarwinControllerNotify, 1, AppleWMShowAll);
+}
+
+- (NSApplicationTerminateReply) applicationShouldTerminate:sender
+{
+  NSString *msg;
+	
+  if (can_quit || [X11App prefs_get_boolean:@PREFS_NO_QUIT_ALERT default:NO])
+    return NSTerminateNow;
+	
+  /* Make sure we're frontmost. */
+  [NSApp activateIgnoringOtherApps:YES];
+	
+  msg = NSLocalizedString (@"Are you sure you want to quit X11?\n\nIf you quit X11, any X11 applications you are running will stop immediately and you will lose any changes you have not saved.", @"Dialog when quitting");
+	
+  /* FIXME: safe to run the alert in here? Or should we return Later
+     and then run the alert on a timer? It seems to work here, so.. */
+	
+  return (NSRunAlertPanel (nil, msg, NSLocalizedString (@"Quit", @""),
+			   NSLocalizedString (@"Cancel", @""), nil)
+	  == NSAlertDefaultReturn) ? NSTerminateNow : NSTerminateCancel;
+}
+
+- (void) applicationWillTerminate:(NSNotification *)aNotification
+{
+  [X11App prefs_synchronize];
+	
+  /* shutdown the X server, it will exit () for us. */
+  QuartzMessageServerThread (kXDarwinQuit, 0);
+	
+  /* In case it doesn't, exit anyway after a while. */
+  while (sleep (10) != 0) ;
+  exit (1);
+}
+
+- (void) server_ready
+{
+  x_list *node;
+	
+  finished_launching = YES;
+	
+  for (node = pending_apps; node != NULL; node = node->next)
+    {
+      NSString *filename = node->data;
+      [self launch_client:filename];
+      [filename release];
+    }
+	
+  x_list_free (pending_apps);
+  pending_apps = NULL;
+}
+
+- (BOOL) application:(NSApplication *)app openFile:(NSString *)filename
+{
+  const char *name = [filename UTF8String];
+	
+  if (finished_launching)
+    [self launch_client:filename];
+  else if (name[0] != ':')		/* ignore display names */
+    pending_apps = x_list_prepend (pending_apps, [filename retain]);
+	
+  /* FIXME: report failures. */
+  return YES;
+}
+
+ at end
+
+void X11ControllerMain (int argc, const char *argv[],
+			void (*server_thread) (void *), void *server_arg)
+{
+  X11ApplicationMain (argc, argv, server_thread, server_arg);
+}
diff --git a/hw/darwin/quartz/XApplication.h b/hw/darwin/quartz/XApplication.h
deleted file mode 100644
index 2f2b223..0000000
--- a/hw/darwin/quartz/XApplication.h
+++ /dev/null
@@ -1,46 +0,0 @@
-//
-//  XApplication.h
-//
-//  Created by Andreas Monitzer on January 6, 2001.
-//
-/*
- * Copyright (c) 2001 Andreas Monitzer. All Rights Reserved.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sublicense, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice shall be included
- * in all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
- * IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT HOLDER(S) BE LIABLE FOR ANY
- * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * Except as contained in this notice, the name(s) of the above copyright
- * holders shall not be used in advertising or otherwise to promote the
- * sale, use or other dealings in this Software without prior written
- * authorization.
- */
-
-#import <Cocoa/Cocoa.h>
-
-#import "XServer.h"
-#import "Preferences.h"
-
- at interface XApplication : NSApplication {
-    IBOutlet XServer *xserver;
-    IBOutlet Preferences *preferences;
-}
-
-- (void)sendEvent:(NSEvent *)anEvent;
-
- at end
diff --git a/hw/darwin/quartz/XApplication.m b/hw/darwin/quartz/XApplication.m
deleted file mode 100644
index c18d9a5..0000000
--- a/hw/darwin/quartz/XApplication.m
+++ /dev/null
@@ -1,46 +0,0 @@
-//
-//  XApplication.m
-//
-//  Created by Andreas Monitzer on January 6, 2001.
-
-/*
- * Copyright (c) 2001 Andreas Monitzer. All Rights Reserved.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sublicense, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice shall be included
- * in all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
- * IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT HOLDER(S) BE LIABLE FOR ANY
- * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * Except as contained in this notice, the name(s) of the above copyright
- * holders shall not be used in advertising or otherwise to promote the
- * sale, use or other dealings in this Software without prior written
- * authorization.
- */
-
-#import "XApplication.h"
-
-
- at implementation XApplication
-
-- (void)sendEvent:(NSEvent *)anEvent {
-    if (![xserver translateEvent:anEvent]) {
-        if (![preferences sendEvent:anEvent])
-            [super sendEvent:anEvent];
-    }
-}
-
- at end
diff --git a/hw/darwin/quartz/XDarwin.pbproj/project.pbxproj b/hw/darwin/quartz/XDarwin.pbproj/project.pbxproj
deleted file mode 100644
index 0ad8314..0000000
--- a/hw/darwin/quartz/XDarwin.pbproj/project.pbxproj
+++ /dev/null
@@ -1,2519 +0,0 @@
-// !$*UTF8*$!
-{
-	archiveVersion = 1;
-	classes = {
-	};
-	objectVersion = 39;
-	objects = {
-		01279092000747AA0A000002 = {
-			fileEncoding = 30;
-			isa = PBXFileReference;
-			lastKnownFileType = sourcecode.c.objc;
-			path = XServer.m;
-			refType = 4;
-			sourceTree = "<group>";
-		};
-		0127909600074AF60A000002 = {
-			fileEncoding = 30;
-			isa = PBXFileReference;
-			lastKnownFileType = sourcecode.c.objc;
-			path = XApplication.m;
-			refType = 4;
-			sourceTree = "<group>";
-		};
-		0127909800074B1A0A000002 = {
-			fileEncoding = 30;
-			isa = PBXFileReference;
-			lastKnownFileType = sourcecode.c.h;
-			path = XApplication.h;
-			refType = 4;
-			sourceTree = "<group>";
-		};
-		015698ED003DF345CE6F79C2 = {
-			isa = PBXFileReference;
-			lastKnownFileType = image.icns;
-			path = XDarwin.icns;
-			refType = 4;
-			sourceTree = "<group>";
-		};
-		0157A37D002CF6D7CE6F79C2 = {
-			children = (
-				F533214601A4B45401000001,
-				0157A37E002CF6D7CE6F79C2,
-				F58D65DF018F79B101000001,
-				F533213D0193CBE001000001,
-				43B962E200617B93416877C2,
-				F5ACD263C5BE031F01000001,
-				F51BF62E02026E3501000001,
-				F5ACD25CC5B5E96601000001,
-				F587E16401924C6901000001,
-			);
-			isa = PBXVariantGroup;
-			name = Credits.rtf;
-			path = "";
-			refType = 4;
-			sourceTree = "<group>";
-		};
-		0157A37E002CF6D7CE6F79C2 = {
-			isa = PBXFileReference;
-			lastKnownFileType = text.rtf;
-			name = English;
-			path = English.lproj/Credits.rtf;
-			refType = 4;
-			sourceTree = "<group>";
-		};
-		015EDCEA004203A8CE6F79C2 = {
-			isa = PBXFileReference;
-			lastKnownFileType = wrapper.framework;
-			name = IOKit.framework;
-			path = /System/Library/Frameworks/IOKit.framework;
-			refType = 0;
-			sourceTree = "<absolute>";
-		};
-		018F40F2003E1902CE6F79C2 = {
-			children = (
-				018F40F3003E1916CE6F79C2,
-				021D6BA9003E1BACCE6F79C2,
-				3E74E03600863F047F000001,
-				F5A94EF10314BAC70100011B,
-				018F40F6003E1974CE6F79C2,
-				6E5F5F0005537A1A008FEAD7,
-			);
-			isa = PBXGroup;
-			name = "X Server";
-			path = ..;
-			refType = 4;
-			sourceTree = "<group>";
-		};
-		018F40F3003E1916CE6F79C2 = {
-			fileEncoding = 30;
-			isa = PBXFileReference;
-			lastKnownFileType = sourcecode.c.c;
-			path = darwin.c;
-			refType = 4;
-			sourceTree = "<group>";
-		};
-		018F40F6003E1974CE6F79C2 = {
-			fileEncoding = 30;
-			isa = PBXFileReference;
-			lastKnownFileType = sourcecode.c.c;
-			path = darwinKeyboard.c;
-			refType = 4;
-			sourceTree = "<group>";
-		};
-		018F40F8003E1979CE6F79C2 = {
-			fileEncoding = 30;
-			isa = PBXFileReference;
-			lastKnownFileType = sourcecode.c.c;
-			path = quartz.c;
-			refType = 4;
-			sourceTree = "<group>";
-		};
-		018F40FA003E197ECE6F79C2 = {
-			fileEncoding = 30;
-			isa = PBXFileReference;
-			lastKnownFileType = sourcecode.c.h;
-			path = quartz.h;
-			refType = 4;
-			sourceTree = "<group>";
-		};
-		018F40FC003E1983CE6F79C2 = {
-			fileEncoding = 30;
-			isa = PBXFileReference;
-			lastKnownFileType = sourcecode.c.c;
-			path = xfIOKit.c;
-			refType = 4;
-			sourceTree = "<group>";
-		};
-		018F40FE003E1988CE6F79C2 = {
-			fileEncoding = 30;
-			isa = PBXFileReference;
-			lastKnownFileType = sourcecode.c.h;
-			path = xfIOKit.h;
-			refType = 4;
-			sourceTree = "<group>";
-		};
-		018F4100003E19E4CE6F79C2 = {
-			fileEncoding = 30;
-			isa = PBXFileReference;
-			lastKnownFileType = sourcecode.c.c;
-			path = xfIOKitCursor.c;
-			refType = 4;
-			sourceTree = "<group>";
-		};
-//010
-//011
-//012
-//013
-//014
-//020
-//021
-//022
-//023
-//024
-		021D6BA9003E1BACCE6F79C2 = {
-			fileEncoding = 30;
-			isa = PBXFileReference;
-			lastKnownFileType = sourcecode.c.h;
-			path = darwin.h;
-			refType = 4;
-			sourceTree = "<group>";
-		};
-		02A1FEA6006D34BE416877C2 = {
-			fileEncoding = 30;
-			isa = PBXFileReference;
-			lastKnownFileType = sourcecode.c.c;
-			path = xfIOKitStartup.c;
-			refType = 4;
-			sourceTree = "<group>";
-		};
-		02A1FEA8006D38F0416877C2 = {
-			fileEncoding = 30;
-			isa = PBXFileReference;
-			lastKnownFileType = sourcecode.c.c;
-			path = quartzStartup.c;
-			refType = 4;
-			sourceTree = "<group>";
-		};
-		02E03CA000348209CE6F79C2 = {
-			children = (
-				F533214701A4B48301000001,
-				02E03CA100348209CE6F79C2,
-				F58D65E0018F79C001000001,
-				F533213E0193CBF401000001,
-				43B962E300617B93416877C2,
-				F5ACD268C5BE046401000001,
-				F51BF62F02026E5C01000001,
-				F5ACD261C5B5EA2001000001,
-				F587E16501924C7401000001,
-			);
-			isa = PBXVariantGroup;
-			name = XDarwinHelp.html;
-			path = "";
-			refType = 4;
-			sourceTree = "<group>";
-		};
-		02E03CA100348209CE6F79C2 = {
-			fileEncoding = 30;
-			isa = PBXFileReference;
-			lastKnownFileType = text.html;
-			name = English;
-			path = English.lproj/XDarwinHelp.html;
-			refType = 4;
-			sourceTree = "<group>";
-		};
-//020
-//021
-//022
-//023
-//024
-//030
-//031
-//032
-//033
-//034
-		0338412F0083BFE57F000001 = {
-			fileEncoding = 30;
-			isa = PBXFileReference;
-			lastKnownFileType = sourcecode.c.h;
-			path = quartzCursor.h;
-			refType = 4;
-			sourceTree = "<group>";
-		};
-//030
-//031
-//032
-//033
-//034
-//040
-//041
-//042
-//043
-//044
-		04329610000763920A000002 = {
-			fileEncoding = 30;
-			isa = PBXFileReference;
-			lastKnownFileType = sourcecode.c.objc;
-			path = Preferences.m;
-			refType = 4;
-			sourceTree = "<group>";
-		};
-		04329611000763920A000002 = {
-			fileEncoding = 30;
-			isa = PBXFileReference;
-			lastKnownFileType = sourcecode.c.h;
-			path = Preferences.h;
-			refType = 4;
-			sourceTree = "<group>";
-		};
-//040
-//041
-//042
-//043
-//044
-//080
-//081
-//082
-//083
-//084
-		080E96DDFE201D6D7F000001 = {
-			children = (
-				04329610000763920A000002,
-				04329611000763920A000002,
-				0127909600074AF60A000002,
-				0127909800074B1A0A000002,
-				01279092000747AA0A000002,
-				1C4A3109004D8F24CE6F79C2,
-			);
-			isa = PBXGroup;
-			name = Classes;
-			refType = 4;
-			sourceTree = "<group>";
-		};
-		089C165CFE840E0CC02AAC07 = {
-			children = (
-				F533214301A4B3F001000001,
-				089C165DFE840E0CC02AAC07,
-				F58D65DD018F798F01000001,
-				F533213A0193CBA201000001,
-				43B962E100617B49416877C2,
-				F5ACD269C5BE049301000001,
-				F51BF62B02026DDA01000001,
-				F5ACD262C5B5EA4D01000001,
-				F587E16101924C2F01000001,
-			);
-			isa = PBXVariantGroup;
-			name = InfoPlist.strings;
-			refType = 4;
-			sourceTree = "<group>";
-		};
-		089C165DFE840E0CC02AAC07 = {
-			fileEncoding = 30;
-			isa = PBXFileReference;
-			lastKnownFileType = text.plist.strings;
-			name = English;
-			path = English.lproj/InfoPlist.strings;
-			refType = 4;
-			sourceTree = "<group>";
-		};
-//080
-//081
-//082
-//083
-//084
-//0A0
-//0A1
-//0A2
-//0A3
-//0A4
-		0A79E19E004499A1CE6F79C2 = {
-			explicitFileType = wrapper.application;
-			isa = PBXFileReference;
-			path = XDarwin.app;
-			refType = 3;
-			sourceTree = BUILT_PRODUCTS_DIR;
-		};
-		0A79E19F004499A1CE6F79C2 = {
-			buildPhases = (
-				0A79E1A0004499A1CE6F79C2,
-				0A79E1A1004499A1CE6F79C2,
-				0A79E1A2004499A1CE6F79C2,
-				0A79E1A3004499A1CE6F79C2,
-				0A79E1A4004499A1CE6F79C2,
-			);
-			buildSettings = {
-				INSTALL_PATH = /;
-				OTHER_CFLAGS = "";
-				OTHER_LDFLAGS = "";
-				OTHER_REZFLAGS = "";
-				PRODUCT_NAME = XDarwin;
-				SECTORDER_FLAGS = "";
-				WARNING_CFLAGS = "-Wmost -Wno-four-char-constants -Wno-unknown-pragmas";
-				WRAPPER_EXTENSION = app;
-			};
-			dependencies = (
-				6EF065C903D4F0CA006877C2,
-				6EF065C703D4EE19006877C2,
-				6E11A986048BDFFB006877C2,
-				6E7904110500F33B00EEC080,
-			);
-			isa = PBXApplicationTarget;
-			name = XDarwin;
-			productInstallPath = /;
-			productName = XDarwin;
-			productReference = 0A79E19E004499A1CE6F79C2;
-			productSettingsXML = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>
-<!DOCTYPE plist PUBLIC \"-//Apple Computer//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">
-<plist version=\"1.0\">
-<dict>
-	<key>CFBundleDevelopmentRegion</key>
-	<string>English</string>
-	<key>CFBundleDocumentTypes</key>
-	<array>
-		<dict>
-			<key>CFBundleTypeExtensions</key>
-			<array>
-				<string>x11app</string>
-			</array>
-			<key>CFBundleTypeName</key>
-			<string>X11 Application</string>
-			<key>CFBundleTypeOSTypes</key>
-			<array>
-				<string>****</string>
-			</array>
-			<key>CFBundleTypeRole</key>
-			<string>Viewer</string>
-		</dict>
-		<dict>
-			<key>CFBundleTypeExtensions</key>
-			<array>
-				<string>tool</string>
-				<string>*</string>
-			</array>
-			<key>CFBundleTypeName</key>
-			<string>UNIX Application</string>
-			<key>CFBundleTypeOSTypes</key>
-			<array>
-				<string>****</string>
-			</array>
-			<key>CFBundleTypeRole</key>
-			<string>Viewer</string>
-		</dict>
-	</array>
-	<key>CFBundleExecutable</key>
-	<string>XDarwin</string>
-	<key>CFBundleGetInfoString</key>
-	<string>XDarwin 1.4.0, X.Org Foundation</string>
-	<key>CFBundleIconFile</key>
-	<string>XDarwin.icns</string>
-	<key>CFBundleIdentifier</key>
-	<string>org.x.x11</string>
-	<key>CFBundleInfoDictionaryVersion</key>
-	<string>6.0</string>
-	<key>CFBundleName</key>
-	<string>XDarwin</string>
-	<key>CFBundlePackageType</key>
-	<string>APPL</string>
-	<key>CFBundleShortVersionString</key>
-	<string>XDarwin 1.4.0</string>
-	<key>CFBundleSignature</key>
-	<string>????</string>
-	<key>CFBundleVersion</key>
-	<string></string>
-	<key>NSHelpFile</key>
-	<string>XDarwinHelp.html</string>
-	<key>NSMainNibFile</key>
-	<string>MainMenu</string>
-	<key>NSPrincipalClass</key>
-	<string>XApplication</string>
-</dict>
-</plist>
-";
-		};
-		0A79E1A0004499A1CE6F79C2 = {
-			buildActionMask = 2147483647;
-			files = (
-			);
-			isa = PBXHeadersBuildPhase;
-			runOnlyForDeploymentPostprocessing = 0;
-		};
-		0A79E1A1004499A1CE6F79C2 = {
-			buildActionMask = 2147483647;
-			files = (
-				0A79E1A600449EB2CE6F79C2,
-				0A79E1A700449EB2CE6F79C2,
-				0A79E1A800449EB2CE6F79C2,
-				0A79E1A900449EB2CE6F79C2,
-				0A79E1AA00449EB2CE6F79C2,
-				1220774500712D2D416877C2,
-				F54BF6ED017D506E01000001,
-			);
-			isa = PBXResourcesBuildPhase;
-			runOnlyForDeploymentPostprocessing = 0;
-		};
-		0A79E1A2004499A1CE6F79C2 = {
-			buildActionMask = 2147483647;
-			files = (
-			);
-			isa = PBXSourcesBuildPhase;
-			runOnlyForDeploymentPostprocessing = 0;
-		};
-		0A79E1A3004499A1CE6F79C2 = {
-			buildActionMask = 2147483647;
-			files = (
-			);
-			isa = PBXFrameworksBuildPhase;
-			runOnlyForDeploymentPostprocessing = 0;
-		};
-		0A79E1A4004499A1CE6F79C2 = {
-			buildActionMask = 2147483647;
-			files = (
-			);
-			isa = PBXRezBuildPhase;
-			runOnlyForDeploymentPostprocessing = 0;
-		};
-		0A79E1A600449EB2CE6F79C2 = {
-			fileRef = 29B97318FDCFA39411CA2CEA;
-			isa = PBXBuildFile;
-			settings = {
-			};
-		};
-		0A79E1A700449EB2CE6F79C2 = {
-			fileRef = 089C165CFE840E0CC02AAC07;
-			isa = PBXBuildFile;
-			settings = {
-			};
-		};
-		0A79E1A800449EB2CE6F79C2 = {
-			fileRef = 0157A37D002CF6D7CE6F79C2;
-			isa = PBXBuildFile;
-			settings = {
-			};
-		};
-		0A79E1A900449EB2CE6F79C2 = {
-			fileRef = 02E03CA000348209CE6F79C2;
-			isa = PBXBuildFile;
-			settings = {
-			};
-		};
-		0A79E1AA00449EB2CE6F79C2 = {
-			fileRef = 015698ED003DF345CE6F79C2;
-			isa = PBXBuildFile;
-			settings = {
-			};
-		};
-//0A0
-//0A1
-//0A2
-//0A3
-//0A4
-//100
-//101
-//102
-//103
-//104
-		1058C7A0FEA54F0111CA2CBB = {
-			children = (
-				F53321400193CCF001000001,
-				1BE4F84D0006C9890A000002,
-				1058C7A1FEA54F0111CA2CBB,
-				F53321410193CCF001000001,
-				015EDCEA004203A8CE6F79C2,
-			);
-			isa = PBXGroup;
-			name = "Linked Frameworks";
-			refType = 4;
-			sourceTree = "<group>";
-		};
-		1058C7A1FEA54F0111CA2CBB = {
-			isa = PBXFileReference;
-			lastKnownFileType = wrapper.framework;
-			name = Cocoa.framework;
-			path = /System/Library/Frameworks/Cocoa.framework;
-			refType = 0;
-			sourceTree = "<absolute>";
-		};
-		1058C7A2FEA54F0111CA2CBB = {
-			children = (
-				29B97325FDCFA39411CA2CEA,
-				29B97324FDCFA39411CA2CEA,
-			);
-			isa = PBXGroup;
-			name = "Other Frameworks";
-			refType = 4;
-			sourceTree = "<group>";
-		};
-//100
-//101
-//102
-//103
-//104
-//120
-//121
-//122
-//123
-//124
-		1220774300712D2D416877C2 = {
-			children = (
-				F533214501A4B42501000001,
-				1220774400712D2D416877C2,
-				F58D65DE018F79A001000001,
-				F533213C0193CBC901000001,
-				1220774600712D75416877C2,
-				F5ACD266C5BE03C501000001,
-				F51BF62D02026E1C01000001,
-				F5ACD25FC5B5E9AA01000001,
-				F587E16301924C5E01000001,
-			);
-			isa = PBXVariantGroup;
-			name = Localizable.strings;
-			path = "";
-			refType = 4;
-			sourceTree = "<group>";
-		};
-		1220774400712D2D416877C2 = {
-			fileEncoding = 30;
-			isa = PBXFileReference;
-			lastKnownFileType = text.plist.strings;
-			name = English;
-			path = English.lproj/Localizable.strings;
-			refType = 4;
-			sourceTree = "<group>";
-		};
-		1220774500712D2D416877C2 = {
-			fileRef = 1220774300712D2D416877C2;
-			isa = PBXBuildFile;
-			settings = {
-			};
-		};
-		1220774600712D75416877C2 = {
-			fileEncoding = 10;
-			isa = PBXFileReference;
-			lastKnownFileType = text.plist.strings;
-			name = Japanese;
-			path = Japanese.lproj/Localizable.strings;
-			refType = 4;
-			sourceTree = "<group>";
-		};
-//120
-//121
-//122
-//123
-//124
-//170
-//171
-//172
-//173
-//174
-		170DFAFF00729A35416877C2 = {
-			fileEncoding = 30;
-			isa = PBXFileReference;
-			lastKnownFileType = sourcecode.c.c;
-			path = XDarwinStartup.c;
-			refType = 4;
-			sourceTree = "<group>";
-		};
-		170DFB0000729C86416877C2 = {
-			children = (
-				018F40FC003E1983CE6F79C2,
-				018F40FE003E1988CE6F79C2,
-				018F4100003E19E4CE6F79C2,
-				02A1FEA6006D34BE416877C2,
-			);
-			isa = PBXGroup;
-			name = IOKit;
-			path = ../iokit;
-			refType = 4;
-			sourceTree = "<group>";
-		};
-//170
-//171
-//172
-//173
-//174
-//190
-//191
-//192
-//193
-//194
-		19C28FACFE9D520D11CA2CBB = {
-			children = (
-				0A79E19E004499A1CE6F79C2,
-				6EF7C58703D3BC6D00000104,
-				6EF065C603D4EE19006877C2,
-				6E11A985048BDFEE006877C2,
-				6E7904100500F05600EEC080,
-			);
-			isa = PBXGroup;
-			name = Products;
-			refType = 4;
-			sourceTree = "<group>";
-		};
-//190
-//191
-//192
-//193
-//194
-//1B0
-//1B1
-//1B2
-//1B3
-//1B4
-		1BD8DE4200B8A3567F000001 = {
-			children = (
-				F533214401A4B40F01000001,
-				1BD8DE4300B8A3567F000001,
-				F58D65DC018F794D01000001,
-				F533213B0193CBB401000001,
-				1BD8DE4700B8A3C77F000001,
-				F5ACD264C5BE035B01000001,
-				F51BF62C02026E0601000001,
-				F5ACD25DC5B5E97701000001,
-				F587E16201924C5301000001,
-			);
-			isa = PBXVariantGroup;
-			name = InfoPlist.strings.cpp;
-			path = "";
-			refType = 4;
-			sourceTree = "<group>";
-		};
-		1BD8DE4300B8A3567F000001 = {
-			fileEncoding = 30;
-			isa = PBXFileReference;
-			lastKnownFileType = sourcecode.cpp.cpp;
-			name = English;
-			path = English.lproj/InfoPlist.strings.cpp;
-			refType = 4;
-			sourceTree = "<group>";
-		};
-		1BD8DE4400B8A38E7F000001 = {
-			children = (
-				F533214801A4B4D701000001,
-				1BD8DE4500B8A38E7F000001,
-				F58D65E1018F79E001000001,
-				F533213F0193CC2501000001,
-				1BD8DE4800B8A4167F000001,
-				F5ACD267C5BE03FC01000001,
-				F51BF63002026E8D01000001,
-				F5ACD260C5B5E9DF01000001,
-				F587E16601924C9D01000001,
-			);
-			isa = PBXVariantGroup;
-			name = XDarwinHelp.html.cpp;
-			path = "";
-			refType = 4;
-			sourceTree = "<group>";
-		};
-		1BD8DE4500B8A38E7F000001 = {
-			fileEncoding = 30;
-			isa = PBXFileReference;
-			lastKnownFileType = sourcecode.cpp.cpp;
-			name = English;
-			path = English.lproj/XDarwinHelp.html.cpp;
-			refType = 4;
-			sourceTree = "<group>";
-		};
-		1BD8DE4700B8A3C77F000001 = {
-			fileEncoding = 30;
-			isa = PBXFileReference;
-			lastKnownFileType = sourcecode.cpp.cpp;
-			name = Japanese;
-			path = Japanese.lproj/InfoPlist.strings.cpp;
-			refType = 4;
-			sourceTree = "<group>";
-		};
-		1BD8DE4800B8A4167F000001 = {
-			fileEncoding = 30;
-			isa = PBXFileReference;
-			lastKnownFileType = sourcecode.cpp.cpp;
-			name = Japanese;
-			path = Japanese.lproj/XDarwinHelp.html.cpp;
-			refType = 4;
-			sourceTree = "<group>";
-		};
-		1BE4F84D0006C9890A000002 = {
-			isa = PBXFileReference;
-			lastKnownFileType = wrapper.framework;
-			name = Carbon.framework;
-			path = /System/Library/Frameworks/Carbon.framework;
-			refType = 0;
-			sourceTree = "<absolute>";
-		};
-//1B0
-//1B1
-//1B2
-//1B3
-//1B4
-//1C0
-//1C1
-//1C2
-//1C3
-//1C4
-		1C4A3109004D8F24CE6F79C2 = {
-			fileEncoding = 30;
-			isa = PBXFileReference;
-			lastKnownFileType = sourcecode.c.h;
-			path = XServer.h;
-			refType = 4;
-			sourceTree = "<group>";
-		};
-//1C0
-//1C1
-//1C2
-//1C3
-//1C4
-//230
-//231
-//232
-//233
-//234
-		237A34C10076E37E7F000001 = {
-			fileEncoding = 30;
-			isa = PBXFileReference;
-			lastKnownFileType = sourcecode.c.c;
-			path = quartzAudio.c;
-			refType = 4;
-			sourceTree = "<group>";
-		};
-		237A34C20076E37E7F000001 = {
-			buildSettings = {
-				COPY_PHASE_STRIP = NO;
-				GCC_DYNAMIC_NO_PIC = NO;
-				GCC_ENABLE_FIX_AND_CONTINUE = YES;
-				GCC_GENERATE_DEBUGGING_SYMBOLS = YES;
-				GCC_OPTIMIZATION_LEVEL = 0;
-				OPTIMIZATION_CFLAGS = "-O0";
-				ZERO_LINK = YES;
-			};
-			isa = PBXBuildStyle;
-			name = Development;
-		};
-		237A34C30076E37E7F000001 = {
-			buildSettings = {
-				COPY_PHASE_STRIP = YES;
-				GCC_ENABLE_FIX_AND_CONTINUE = NO;
-				ZERO_LINK = NO;
-			};
-			isa = PBXBuildStyle;
-			name = Deployment;
-		};
-		237A34C40076F4F07F000001 = {
-			fileEncoding = 30;
-			isa = PBXFileReference;
-			lastKnownFileType = sourcecode.c.h;
-			path = quartzAudio.h;
-			refType = 4;
-			sourceTree = "<group>";
-		};
-//230
-//231
-//232
-//233
-//234
-//290
-//291
-//292
-//293
-//294
-		29B97313FDCFA39411CA2CEA = {
-			buildSettings = {
-			};
-			buildStyles = (
-				237A34C20076E37E7F000001,
-				237A34C30076E37E7F000001,
-			);
-			hasScannedForEncodings = 1;
-			isa = PBXProject;
-			knownRegions = (
-				English,
-				Japanese,
-				French,
-				German,
-				Swedish,
-				Dutch,
-				Spanish,
-				ko,
-				Portuguese,
-			);
-			mainGroup = 29B97314FDCFA39411CA2CEA;
-			projectDirPath = "";
-			targets = (
-				0A79E19F004499A1CE6F79C2,
-				6EF7C58603D3BC6D00000104,
-				6E11A984048BDFEE006877C2,
-				6EF065C503D4EE19006877C2,
-				6E79040F0500F05600EEC080,
-			);
-		};
-		29B97314FDCFA39411CA2CEA = {
-			children = (
-				080E96DDFE201D6D7F000001,
-				018F40F2003E1902CE6F79C2,
-				170DFB0000729C86416877C2,
-				43B962CE00617089416877C2,
-				F5614B3D025112D901000114,
-				6EC4A64C042A9597006877C2,
-				32FEE13C00E07C3E7F000001,
-				6EE1214104968658006877C2,
-				6EC4A66D042A97FC006877C2,
-				29B97315FDCFA39411CA2CEA,
-				29B97317FDCFA39411CA2CEA,
-				29B97323FDCFA39411CA2CEA,
-				19C28FACFE9D520D11CA2CBB,
-			);
-			isa = PBXGroup;
-			name = "Xmaster-Cocoa";
-			path = "";
-			refType = 4;
-			sourceTree = "<group>";
-		};
-		29B97315FDCFA39411CA2CEA = {
-			children = (
-				170DFAFF00729A35416877C2,
-			);
-			isa = PBXGroup;
-			name = "Other Sources";
-			path = "";
-			refType = 2;
-			sourceTree = SOURCE_ROOT;
-		};
-		29B97317FDCFA39411CA2CEA = {
-			children = (
-				29B97318FDCFA39411CA2CEA,
-				089C165CFE840E0CC02AAC07,
-				1BD8DE4200B8A3567F000001,
-				1220774300712D2D416877C2,
-				0157A37D002CF6D7CE6F79C2,
-				02E03CA000348209CE6F79C2,
-				1BD8DE4400B8A38E7F000001,
-				015698ED003DF345CE6F79C2,
-				F54BF6EA017D500901000001,
-				F54BF6EC017D506E01000001,
-			);
-			isa = PBXGroup;
-			name = Resources;
-			path = ../bundle;
-			refType = 4;
-			sourceTree = "<group>";
-		};
-		29B97318FDCFA39411CA2CEA = {
-			children = (
-				F533214201A4B3CE01000001,
-				29B97319FDCFA39411CA2CEA,
-				F58D65DB018F793801000001,
-				F53321390193CB6A01000001,
-				43B962E000617B49416877C2,
-				F5ACD265C5BE038601000001,
-				F51BF62A02026DAF01000001,
-				F5ACD25EC5B5E98D01000001,
-				F587E16001924C1D01000001,
-			);
-			isa = PBXVariantGroup;
-			name = MainMenu.nib;
-			path = "";
-			refType = 4;
-			sourceTree = "<group>";
-		};
-		29B97319FDCFA39411CA2CEA = {
-			isa = PBXFileReference;
-			lastKnownFileType = wrapper.nib;
-			name = English;
-			path = English.lproj/MainMenu.nib;
-			refType = 4;
-			sourceTree = "<group>";
-		};
-		29B97323FDCFA39411CA2CEA = {
-			children = (
-				1058C7A0FEA54F0111CA2CBB,
-				1058C7A2FEA54F0111CA2CBB,
-			);
-			isa = PBXGroup;
-			name = Frameworks;
-			path = "";
-			refType = 4;
-			sourceTree = "<group>";
-		};
-		29B97324FDCFA39411CA2CEA = {
-			isa = PBXFileReference;
-			lastKnownFileType = wrapper.framework;
-			name = AppKit.framework;
-			path = /System/Library/Frameworks/AppKit.framework;
-			refType = 0;
-			sourceTree = "<absolute>";
-		};
-		29B97325FDCFA39411CA2CEA = {
-			isa = PBXFileReference;
-			lastKnownFileType = wrapper.framework;
-			name = Foundation.framework;
-			path = /System/Library/Frameworks/Foundation.framework;
-			refType = 0;
-			sourceTree = "<absolute>";
-		};
-//290
-//291
-//292
-//293
-//294
-//320
-//321
-//322
-//323
-//324
-		32FEE13C00E07C3E7F000001 = {
-			children = (
-				F5269C2D01D5BC3501000001,
-				F5269C2E01D5BC3501000001,
-			);
-			isa = PBXGroup;
-			name = "Old Cocoa Imp";
-			path = "";
-			refType = 4;
-			sourceTree = "<group>";
-		};
-//320
-//321
-//322
-//323
-//324
-//350
-//351
-//352
-//353
-//354
-		3576829A0077B8F17F000001 = {
-			fileEncoding = 30;
-			isa = PBXFileReference;
-			lastKnownFileType = sourcecode.c.c;
-			path = quartzCursor.c;
-			refType = 4;
-			sourceTree = "<group>";
-		};
-//350
-//351
-//352
-//353
-//354
-//3E0
-//3E1
-//3E2
-//3E3
-//3E4
-		3E74E03600863F047F000001 = {
-			fileEncoding = 30;
-			isa = PBXFileReference;
-			lastKnownFileType = sourcecode.c.h;
-			path = darwinClut8.h;
-			refType = 4;
-			sourceTree = "<group>";
-		};
-//3E0
-//3E1
-//3E2
-//3E3
-//3E4
-//430
-//431
-//432
-//433
-//434
-		43B962CE00617089416877C2 = {
-			children = (
-				6EE9B21604E859C200CA7FEA,
-				6E97A0F505079F9100B8294C,
-				6E5F5F030553815A008FEAD7,
-				6E5F5F040553815A008FEAD7,
-				018F40F8003E1979CE6F79C2,
-				018F40FA003E197ECE6F79C2,
-				237A34C10076E37E7F000001,
-				237A34C40076F4F07F000001,
-				43B962CF00617089416877C2,
-				F5582948015DAD3B01000001,
-				6E5F5F0105537A5F008FEAD7,
-				43B962D000617089416877C2,
-				43B962D100617089416877C2,
-				02A1FEA8006D38F0416877C2,
-			);
-			isa = PBXGroup;
-			name = Quartz;
-			path = "";
-			refType = 4;
-			sourceTree = "<group>";
-		};
-		43B962CF00617089416877C2 = {
-			fileEncoding = 30;
-			isa = PBXFileReference;
-			lastKnownFileType = sourcecode.c.objc;
-			path = quartzCocoa.m;
-			refType = 4;
-			sourceTree = "<group>";
-		};
-		43B962D000617089416877C2 = {
-			fileEncoding = 30;
-			isa = PBXFileReference;
-			lastKnownFileType = sourcecode.c.c;
-			path = quartzPasteboard.c;
-			refType = 4;
-			sourceTree = "<group>";
-		};
-		43B962D100617089416877C2 = {
-			fileEncoding = 30;
-			isa = PBXFileReference;
-			lastKnownFileType = sourcecode.c.h;
-			path = quartzPasteboard.h;
-			refType = 4;
-			sourceTree = "<group>";
-		};
-		43B962E000617B49416877C2 = {
-			isa = PBXFileReference;
-			lastKnownFileType = wrapper.nib;
-			name = Japanese;
-			path = Japanese.lproj/MainMenu.nib;
-			refType = 4;
-			sourceTree = "<group>";
-		};
-		43B962E100617B49416877C2 = {
-			fileEncoding = 30;
-			isa = PBXFileReference;
-			lastKnownFileType = text.plist.strings;
-			name = Japanese;
-			path = Japanese.lproj/InfoPlist.strings;
-			refType = 4;
-			sourceTree = "<group>";
-		};
-		43B962E200617B93416877C2 = {
-			isa = PBXFileReference;
-			lastKnownFileType = text.rtf;
-			name = Japanese;
-			path = Japanese.lproj/Credits.rtf;
-			refType = 4;
-			sourceTree = "<group>";
-		};
-		43B962E300617B93416877C2 = {
-			fileEncoding = 30;
-			isa = PBXFileReference;
-			lastKnownFileType = text.html;
-			name = Japanese;
-			path = Japanese.lproj/XDarwinHelp.html;
-			refType = 4;
-			sourceTree = "<group>";
-		};
-//430
-//431
-//432
-//433
-//434
-//6E0
-//6E1
-//6E2
-//6E3
-//6E4
-		6E11A97F048BDFEE006877C2 = {
-			buildActionMask = 2147483647;
-			files = (
-			);
-			isa = PBXHeadersBuildPhase;
-			runOnlyForDeploymentPostprocessing = 0;
-		};
-		6E11A980048BDFEE006877C2 = {
-			buildActionMask = 2147483647;
-			files = (
-			);
-			isa = PBXResourcesBuildPhase;
-			runOnlyForDeploymentPostprocessing = 0;
-		};
-		6E11A981048BDFEE006877C2 = {
-			buildActionMask = 2147483647;
-			files = (
-			);
-			isa = PBXSourcesBuildPhase;
-			runOnlyForDeploymentPostprocessing = 0;
-		};
-		6E11A982048BDFEE006877C2 = {
-			buildActionMask = 2147483647;
-			files = (
-			);
-			isa = PBXFrameworksBuildPhase;
-			runOnlyForDeploymentPostprocessing = 0;
-		};
-		6E11A983048BDFEE006877C2 = {
-			buildActionMask = 2147483647;
-			files = (
-			);
-			isa = PBXRezBuildPhase;
-			runOnlyForDeploymentPostprocessing = 0;
-		};
-		6E11A984048BDFEE006877C2 = {
-			buildPhases = (
-				6E11A97F048BDFEE006877C2,
-				6E11A980048BDFEE006877C2,
-				6E11A981048BDFEE006877C2,
-				6E11A982048BDFEE006877C2,
-				6E11A983048BDFEE006877C2,
-			);
-			buildSettings = {
-				OTHER_CFLAGS = "";
-				OTHER_LDFLAGS = "";
-				OTHER_REZFLAGS = "";
-				PRODUCT_NAME = glxCGL;
-				SECTORDER_FLAGS = "";
-				WARNING_CFLAGS = "-Wmost -Wno-four-char-constants -Wno-unknown-pragmas";
-				WRAPPER_EXTENSION = bundle;
-			};
-			dependencies = (
-			);
-			isa = PBXBundleTarget;
-			name = glxCGL;
-			productInstallPath = "$(USER_LIBRARY_DIR)/Bundles";
-			productName = glxCGL;
-			productReference = 6E11A985048BDFEE006877C2;
-			productSettingsXML = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>
-<!DOCTYPE plist PUBLIC \"-//Apple Computer//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">
-<plist version=\"1.0\">
-<dict>
-	<key>CFBundleDevelopmentRegion</key>
-	<string>English</string>
-	<key>CFBundleExecutable</key>
-	<string>glxCGL</string>
-	<key>CFBundleGetInfoString</key>
-	<string></string>
-	<key>CFBundleIconFile</key>
-	<string></string>
-	<key>CFBundleIdentifier</key>
-	<string></string>
-	<key>CFBundleInfoDictionaryVersion</key>
-	<string>6.0</string>
-	<key>CFBundleName</key>
-	<string>GLX bundle using Apple's OpenGL</string>
-	<key>CFBundlePackageType</key>
-	<string>BNDL</string>
-	<key>CFBundleShortVersionString</key>
-	<string>0.1</string>
-	<key>CFBundleSignature</key>
-	<string>????</string>
-	<key>CFBundleVersion</key>
-	<string>0.1</string>
-</dict>
-</plist>
-";
-		};
-		6E11A985048BDFEE006877C2 = {
-			explicitFileType = wrapper.cfbundle;
-			isa = PBXFileReference;
-			path = glxCGL.bundle;
-			refType = 3;
-			sourceTree = BUILT_PRODUCTS_DIR;
-		};
-		6E11A986048BDFFB006877C2 = {
-			isa = PBXTargetDependency;
-			target = 6E11A984048BDFEE006877C2;
-			targetProxy = 6E4CAF650702464F001A7398;
-		};
-		6E4CAF630702464F001A7398 = {
-			containerPortal = 29B97313FDCFA39411CA2CEA;
-			isa = PBXContainerItemProxy;
-			proxyType = 1;
-			remoteGlobalIDString = 6EF7C58603D3BC6D00000104;
-			remoteInfo = glxAGL;
-		};
-		6E4CAF640702464F001A7398 = {
-			containerPortal = 29B97313FDCFA39411CA2CEA;
-			isa = PBXContainerItemProxy;
-			proxyType = 1;
-			remoteGlobalIDString = 6E79040F0500F05600EEC080;
-			remoteInfo = xpr;
-		};
-		6E4CAF650702464F001A7398 = {
-			containerPortal = 29B97313FDCFA39411CA2CEA;
-			isa = PBXContainerItemProxy;
-			proxyType = 1;
-			remoteGlobalIDString = 6E11A984048BDFEE006877C2;
-			remoteInfo = glxCGL;
-		};
-		6E4CAF660702464F001A7398 = {
-			containerPortal = 29B97313FDCFA39411CA2CEA;
-			isa = PBXContainerItemProxy;
-			proxyType = 1;
-			remoteGlobalIDString = 6EF065C503D4EE19006877C2;
-			remoteInfo = glxMesa;
-		};
-		6E5F5F0005537A1A008FEAD7 = {
-			fileEncoding = 30;
-			isa = PBXFileReference;
-			lastKnownFileType = sourcecode.c.h;
-			path = darwinKeyboard.h;
-			refType = 4;
-			sourceTree = "<group>";
-		};
-		6E5F5F0105537A5F008FEAD7 = {
-			fileEncoding = 30;
-			isa = PBXFileReference;
-			lastKnownFileType = sourcecode.c.c;
-			path = quartzKeyboard.c;
-			refType = 4;
-			sourceTree = "<group>";
-		};
-		6E5F5F030553815A008FEAD7 = {
-			fileEncoding = 30;
-			isa = PBXFileReference;
-			lastKnownFileType = sourcecode.c.c;
-			path = keysym2ucs.c;
-			refType = 4;
-			sourceTree = "<group>";
-		};
-		6E5F5F040553815A008FEAD7 = {
-			fileEncoding = 30;
-			isa = PBXFileReference;
-			lastKnownFileType = sourcecode.c.h;
-			path = keysym2ucs.h;
-			refType = 4;
-			sourceTree = "<group>";
-		};
-		6E6656EC048832CF006877C2 = {
-			fileEncoding = 30;
-			isa = PBXFileReference;
-			lastKnownFileType = sourcecode.c.c;
-			path = "x-hook.c";
-			refType = 4;
-			sourceTree = "<group>";
-		};
-		6E6656ED048832CF006877C2 = {
-			fileEncoding = 30;
-			isa = PBXFileReference;
-			lastKnownFileType = sourcecode.c.h;
-			path = "x-hook.h";
-			refType = 4;
-			sourceTree = "<group>";
-		};
-		6E6656F0048832EC006877C2 = {
-			fileEncoding = 30;
-			isa = PBXFileReference;
-			lastKnownFileType = sourcecode.c.c;
-			path = dri.c;
-			refType = 4;
-			sourceTree = "<group>";
-		};
-		6E6656F1048832EC006877C2 = {
-			fileEncoding = 30;
-			isa = PBXFileReference;
-			lastKnownFileType = sourcecode.c.h;
-			path = dri.h;
-			refType = 4;
-			sourceTree = "<group>";
-		};
-		6E6656F2048832EC006877C2 = {
-			fileEncoding = 30;
-			isa = PBXFileReference;
-			lastKnownFileType = sourcecode.c.h;
-			path = dristruct.h;
-			refType = 4;
-			sourceTree = "<group>";
-		};
-		6E6656F3048832F9006877C2 = {
-			fileEncoding = 30;
-			isa = PBXFileReference;
-			lastKnownFileType = sourcecode.c.c;
-			path = appledri.c;
-			refType = 4;
-			sourceTree = "<group>";
-		};
-		6E79040104FD5ED900EEC080 = {
-			children = (
-				6E79040204FD5EDA00EEC080,
-				6E79040304FD5EDA00EEC080,
-				6E79040404FD5EDA00EEC080,
-			);
-			isa = PBXGroup;
-			name = "Safe Alpha";
-			path = safeAlpha;
-			refType = 4;
-			sourceTree = "<group>";
-		};
-		6E79040204FD5EDA00EEC080 = {
-			fileEncoding = 30;
-			isa = PBXFileReference;
-			lastKnownFileType = sourcecode.c.h;
-			path = safeAlpha.h;
-			refType = 4;
-			sourceTree = "<group>";
-		};
-		6E79040304FD5EDA00EEC080 = {
-			fileEncoding = 30;
-			isa = PBXFileReference;
-			lastKnownFileType = sourcecode.c.c;
-			path = safeAlphaPicture.c;
-			refType = 4;
-			sourceTree = "<group>";
-		};
-		6E79040404FD5EDA00EEC080 = {
-			fileEncoding = 30;
-			isa = PBXFileReference;
-			lastKnownFileType = sourcecode.c.c;
-			path = safeAlphaWindow.c;
-			refType = 4;
-			sourceTree = "<group>";
-		};
-		6E79040A0500F05600EEC080 = {
-			buildActionMask = 2147483647;
-			files = (
-			);
-			isa = PBXHeadersBuildPhase;
-			runOnlyForDeploymentPostprocessing = 0;
-		};
-		6E79040B0500F05600EEC080 = {
-			buildActionMask = 2147483647;
-			files = (
-			);
-			isa = PBXResourcesBuildPhase;
-			runOnlyForDeploymentPostprocessing = 0;
-		};
-		6E79040C0500F05600EEC080 = {
-			buildActionMask = 2147483647;
-			files = (
-			);
-			isa = PBXSourcesBuildPhase;
-			runOnlyForDeploymentPostprocessing = 0;
-		};
-		6E79040D0500F05600EEC080 = {
-			buildActionMask = 2147483647;
-			files = (
-			);
-			isa = PBXFrameworksBuildPhase;
-			runOnlyForDeploymentPostprocessing = 0;
-		};
-		6E79040E0500F05600EEC080 = {
-			buildActionMask = 2147483647;
-			files = (
-			);
-			isa = PBXRezBuildPhase;
-			runOnlyForDeploymentPostprocessing = 0;
-		};
-		6E79040F0500F05600EEC080 = {
-			buildPhases = (
-				6E79040A0500F05600EEC080,
-				6E79040B0500F05600EEC080,
-				6E79040C0500F05600EEC080,
-				6E79040D0500F05600EEC080,
-				6E79040E0500F05600EEC080,
-			);
-			buildSettings = {
-				OTHER_CFLAGS = "";
-				OTHER_LDFLAGS = "";
-				OTHER_REZFLAGS = "";
-				PRODUCT_NAME = xpr;
-				SECTORDER_FLAGS = "";
-				WARNING_CFLAGS = "-Wmost -Wno-four-char-constants -Wno-unknown-pragmas";
-				WRAPPER_EXTENSION = bundle;
-			};
-			dependencies = (
-			);
-			isa = PBXBundleTarget;
-			name = xpr;
-			productInstallPath = "$(USER_LIBRARY_DIR)/Bundles";
-			productName = xpr;
-			productReference = 6E7904100500F05600EEC080;
-			productSettingsXML = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>
-<!DOCTYPE plist PUBLIC \"-//Apple Computer//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">
-<plist version=\"1.0\">
-<dict>
-	<key>CFBundleDevelopmentRegion</key>
-	<string>English</string>
-	<key>CFBundleExecutable</key>
-	<string>xpr</string>
-	<key>CFBundleGetInfoString</key>
-	<string></string>
-	<key>CFBundleIconFile</key>
-	<string></string>
-	<key>CFBundleIdentifier</key>
-	<string></string>
-	<key>CFBundleInfoDictionaryVersion</key>
-	<string>6.0</string>
-	<key>CFBundleName</key>
-	<string>Xplugin rootless implementation</string>
-	<key>CFBundlePackageType</key>
-	<string>BNDL</string>
-	<key>CFBundleShortVersionString</key>
-	<string>0.1</string>
-	<key>CFBundleSignature</key>
-	<string>????</string>
-	<key>CFBundleVersion</key>
-	<string>0.1</string>
-</dict>
-</plist>
-";
-		};
-		6E7904100500F05600EEC080 = {
-			explicitFileType = wrapper.cfbundle;
-			isa = PBXFileReference;
-			path = xpr.bundle;
-			refType = 3;
-			sourceTree = BUILT_PRODUCTS_DIR;
-		};
-		6E7904110500F33B00EEC080 = {
-			isa = PBXTargetDependency;
-			target = 6E79040F0500F05600EEC080;
-			targetProxy = 6E4CAF640702464F001A7398;
-		};
-		6E97A0F2050798B100B8294C = {
-			fileEncoding = 4;
-			isa = PBXFileReference;
-			lastKnownFileType = sourcecode.c.c;
-			path = xprAppleWM.c;
-			refType = 4;
-			sourceTree = "<group>";
-		};
-		6E97A0F305079B6500B8294C = {
-			fileEncoding = 4;
-			isa = PBXFileReference;
-			lastKnownFileType = sourcecode.c.objc;
-			path = crAppleWM.m;
-			refType = 4;
-			sourceTree = "<group>";
-		};
-		6E97A0F505079F9100B8294C = {
-			fileEncoding = 4;
-			isa = PBXFileReference;
-			lastKnownFileType = sourcecode.c.h;
-			path = applewmExt.h;
-			refType = 4;
-			sourceTree = "<group>";
-		};
-		6EA0B3AF0544A9CC006877C2 = {
-			children = (
-				6EA0B3B00544A9CC006877C2,
-				6EA0B3B10544A9CC006877C2,
-				6EA0B3B20544A9CC006877C2,
-				6EA0B3B30544A9CC006877C2,
-				6EA0B3B40544A9CC006877C2,
-				6EA0B3B50544A9CC006877C2,
-				6EA0B3B60544A9CC006877C2,
-				6EA0B3B70544A9CC006877C2,
-			);
-			isa = PBXGroup;
-			name = Acceleration;
-			path = accel;
-			refType = 4;
-			sourceTree = "<group>";
-		};
-		6EA0B3B00544A9CC006877C2 = {
-			fileEncoding = 30;
-			isa = PBXFileReference;
-			lastKnownFileType = sourcecode.c.h;
-			path = rlAccel.h;
-			refType = 4;
-			sourceTree = "<group>";
-		};
-		6EA0B3B10544A9CC006877C2 = {
-			fileEncoding = 30;
-			isa = PBXFileReference;
-			lastKnownFileType = sourcecode.c.c;
-			path = rlBlt.c;
-			refType = 4;
-			sourceTree = "<group>";
-		};
-		6EA0B3B20544A9CC006877C2 = {
-			fileEncoding = 30;
-			isa = PBXFileReference;
-			lastKnownFileType = sourcecode.c.c;
-			path = rlCopy.c;
-			refType = 4;
-			sourceTree = "<group>";
-		};
-		6EA0B3B30544A9CC006877C2 = {
-			fileEncoding = 30;
-			isa = PBXFileReference;
-			lastKnownFileType = sourcecode.c.c;
-			path = rlFill.c;
-			refType = 4;
-			sourceTree = "<group>";
-		};
-		6EA0B3B40544A9CC006877C2 = {
-			fileEncoding = 30;
-			isa = PBXFileReference;
-			lastKnownFileType = sourcecode.c.c;
-			path = rlFillRect.c;
-			refType = 4;
-			sourceTree = "<group>";
-		};
-		6EA0B3B50544A9CC006877C2 = {
-			fileEncoding = 30;
-			isa = PBXFileReference;
-			lastKnownFileType = sourcecode.c.c;
-			path = rlFillSpans.c;
-			refType = 4;
-			sourceTree = "<group>";
-		};
-		6EA0B3B60544A9CC006877C2 = {
-			fileEncoding = 30;
-			isa = PBXFileReference;
-			lastKnownFileType = sourcecode.c.c;
-			path = rlGlyph.c;
-			refType = 4;
-			sourceTree = "<group>";
-		};
-		6EA0B3B70544A9CC006877C2 = {
-			fileEncoding = 30;
-			isa = PBXFileReference;
-			lastKnownFileType = sourcecode.c.c;
-			path = rlSolid.c;
-			refType = 4;
-			sourceTree = "<group>";
-		};
-		6EA8EEC80445E25C006877C2 = {
-			fileEncoding = 30;
-			isa = PBXFileReference;
-			lastKnownFileType = sourcecode.c.h;
-			path = rootlessConfig.h;
-			refType = 4;
-			sourceTree = "<group>";
-		};
-		6EC4A64C042A9597006877C2 = {
-			children = (
-				6EC4A65D042A9654006877C2,
-				6EC4A65E042A9654006877C2,
-				6EC4A65F042A9654006877C2,
-				6EA8EEC80445E25C006877C2,
-				6EC4A661042A9654006877C2,
-				6EC4A662042A9654006877C2,
-				6EC4A660042A9654006877C2,
-				6EC4A663042A9654006877C2,
-				6EC4A664042A9654006877C2,
-				6EA0B3AF0544A9CC006877C2,
-				6E79040104FD5ED900EEC080,
-			);
-			isa = PBXGroup;
-			name = Rootless;
-			path = ../../../miext/rootless;
-			refType = 2;
-			sourceTree = SOURCE_ROOT;
-		};
-		6EC4A65D042A9654006877C2 = {
-			fileEncoding = 30;
-			isa = PBXFileReference;
-			lastKnownFileType = sourcecode.c.h;
-			path = rootless.h;
-			refType = 4;
-			sourceTree = "<group>";
-		};
-		6EC4A65E042A9654006877C2 = {
-			fileEncoding = 30;
-			isa = PBXFileReference;
-			lastKnownFileType = sourcecode.c.c;
-			path = rootlessCommon.c;
-			refType = 4;
-			sourceTree = "<group>";
-		};
-		6EC4A65F042A9654006877C2 = {
-			fileEncoding = 30;
-			isa = PBXFileReference;
-			lastKnownFileType = sourcecode.c.h;
-			path = rootlessCommon.h;
-			refType = 4;
-			sourceTree = "<group>";
-		};
-		6EC4A660042A9654006877C2 = {
-			fileEncoding = 30;
-			isa = PBXFileReference;
-			lastKnownFileType = sourcecode.c.h;
-			path = rootlessWindow.h;
-			refType = 4;
-			sourceTree = "<group>";
-		};
-		6EC4A661042A9654006877C2 = {
-			fileEncoding = 30;
-			isa = PBXFileReference;
-			lastKnownFileType = sourcecode.c.c;
-			path = rootlessScreen.c;
-			refType = 4;
-			sourceTree = "<group>";
-		};
-		6EC4A662042A9654006877C2 = {
-			fileEncoding = 30;
-			isa = PBXFileReference;
-			lastKnownFileType = sourcecode.c.c;
-			path = rootlessWindow.c;
-			refType = 4;
-			sourceTree = "<group>";
-		};
-		6EC4A663042A9654006877C2 = {
-			fileEncoding = 30;
-			isa = PBXFileReference;
-			lastKnownFileType = sourcecode.c.c;
-			path = rootlessGC.c;
-			refType = 4;
-			sourceTree = "<group>";
-		};
-		6EC4A664042A9654006877C2 = {
-			fileEncoding = 30;
-			isa = PBXFileReference;
-			lastKnownFileType = sourcecode.c.c;
-			path = rootlessValTree.c;
-			refType = 4;
-			sourceTree = "<group>";
-		};
-		6EC4A66D042A97FC006877C2 = {
-			children = (
-				6EF471A004478DE0006877C2,
-				6E6656F3048832F9006877C2,
-				6E6656F0048832EC006877C2,
-				6E6656F1048832EC006877C2,
-				6E6656F2048832EC006877C2,
-				6ECF218404589E4D006877C2,
-				6E97A0F2050798B100B8294C,
-				6ECF218604589F40006877C2,
-				6EF4719E04478B08006877C2,
-				6EDDB2DF04508B2C006877C2,
-				6EF471A204479263006877C2,
-				6EF471A404479263006877C2,
-				6E6656EC048832CF006877C2,
-				6E6656ED048832CF006877C2,
-				6EF471A504479263006877C2,
-				6EF471A304479263006877C2,
-			);
-			isa = PBXGroup;
-			path = xpr;
-			refType = 4;
-			sourceTree = "<group>";
-		};
-		6ECF218404589E4D006877C2 = {
-			fileEncoding = 4;
-			isa = PBXFileReference;
-			lastKnownFileType = sourcecode.c.h;
-			path = xpr.h;
-			refType = 4;
-			sourceTree = "<group>";
-		};
-		6ECF218604589F40006877C2 = {
-			fileEncoding = 30;
-			isa = PBXFileReference;
-			lastKnownFileType = sourcecode.c.c;
-			path = xprCursor.c;
-			refType = 4;
-			sourceTree = "<group>";
-		};
-		6EDDB2DF04508B2C006877C2 = {
-			fileEncoding = 4;
-			isa = PBXFileReference;
-			lastKnownFileType = sourcecode.c.c;
-			path = xprScreen.c;
-			refType = 4;
-			sourceTree = "<group>";
-		};
-		6EE1214104968658006877C2 = {
-			children = (
-				6EE1214304968692006877C2,
-				6EE1214404968692006877C2,
-				6EE1214204968692006877C2,
-				6E97A0F305079B6500B8294C,
-				6EE1214504968692006877C2,
-				6EE1214604968692006877C2,
-			);
-			isa = PBXGroup;
-			path = cr;
-			refType = 4;
-			sourceTree = "<group>";
-		};
-		6EE1214204968692006877C2 = {
-			fileEncoding = 30;
-			isa = PBXFileReference;
-			lastKnownFileType = sourcecode.c.h;
-			path = cr.h;
-			refType = 4;
-			sourceTree = "<group>";
-		};
-		6EE1214304968692006877C2 = {
-			fileEncoding = 30;
-			isa = PBXFileReference;
-			lastKnownFileType = sourcecode.c.objc;
-			path = XView.m;
-			refType = 4;
-			sourceTree = "<group>";
-		};
-		6EE1214404968692006877C2 = {
-			fileEncoding = 30;
-			isa = PBXFileReference;
-			lastKnownFileType = sourcecode.c.h;
-			path = XView.h;
-			refType = 4;
-			sourceTree = "<group>";
-		};
-		6EE1214504968692006877C2 = {
-			fileEncoding = 30;
-			isa = PBXFileReference;
-			lastKnownFileType = sourcecode.c.objc;
-			path = crFrame.m;
-			refType = 4;
-			sourceTree = "<group>";
-		};
-		6EE1214604968692006877C2 = {
-			fileEncoding = 30;
-			isa = PBXFileReference;
-			lastKnownFileType = sourcecode.c.objc;
-			path = crScreen.m;
-			refType = 4;
-			sourceTree = "<group>";
-		};
-		6EE9B21604E859C200CA7FEA = {
-			fileEncoding = 30;
-			isa = PBXFileReference;
-			lastKnownFileType = sourcecode.c.c;
-			path = applewm.c;
-			refType = 4;
-			sourceTree = "<group>";
-		};
-		6EF065C003D4EE19006877C2 = {
-			buildActionMask = 2147483647;
-			files = (
-			);
-			isa = PBXHeadersBuildPhase;
-			runOnlyForDeploymentPostprocessing = 0;
-		};
-		6EF065C103D4EE19006877C2 = {
-			buildActionMask = 2147483647;
-			files = (
-			);
-			isa = PBXResourcesBuildPhase;
-			runOnlyForDeploymentPostprocessing = 0;
-		};
-		6EF065C203D4EE19006877C2 = {
-			buildActionMask = 2147483647;
-			files = (
-			);
-			isa = PBXSourcesBuildPhase;
-			runOnlyForDeploymentPostprocessing = 0;
-		};
-		6EF065C303D4EE19006877C2 = {
-			buildActionMask = 2147483647;
-			files = (
-			);
-			isa = PBXFrameworksBuildPhase;
-			runOnlyForDeploymentPostprocessing = 0;
-		};
-		6EF065C403D4EE19006877C2 = {
-			buildActionMask = 2147483647;
-			files = (
-			);
-			isa = PBXRezBuildPhase;
-			runOnlyForDeploymentPostprocessing = 0;
-		};
-		6EF065C503D4EE19006877C2 = {
-			buildPhases = (
-				6EF065C003D4EE19006877C2,
-				6EF065C103D4EE19006877C2,
-				6EF065C203D4EE19006877C2,
-				6EF065C303D4EE19006877C2,
-				6EF065C403D4EE19006877C2,
-			);
-			buildSettings = {
-				OTHER_CFLAGS = "";
-				OTHER_LDFLAGS = "";
-				OTHER_REZFLAGS = "";
-				PRODUCT_NAME = glxMesa;
-				SECTORDER_FLAGS = "";
-				WARNING_CFLAGS = "-Wmost -Wno-four-char-constants -Wno-unknown-pragmas";
-				WRAPPER_EXTENSION = bundle;
-			};
-			dependencies = (
-			);
-			isa = PBXBundleTarget;
-			name = glxMesa;
-			productInstallPath = "$(USER_LIBRARY_DIR)/Bundles";
-			productName = glxMesa;
-			productReference = 6EF065C603D4EE19006877C2;
-			productSettingsXML = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>
-<!DOCTYPE plist PUBLIC \"-//Apple Computer//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">
-<plist version=\"1.0\">
-<dict>
-	<key>CFBundleDevelopmentRegion</key>
-	<string>English</string>
-	<key>CFBundleExecutable</key>
-	<string>glxMesa</string>
-	<key>CFBundleGetInfoString</key>
-	<string></string>
-	<key>CFBundleIconFile</key>
-	<string></string>
-	<key>CFBundleIdentifier</key>
-	<string></string>
-	<key>CFBundleInfoDictionaryVersion</key>
-	<string>6.0</string>
-	<key>CFBundleName</key>
-	<string>GLX bundle with Mesa</string>
-	<key>CFBundlePackageType</key>
-	<string>BNDL</string>
-	<key>CFBundleShortVersionString</key>
-	<string>0.1</string>
-	<key>CFBundleSignature</key>
-	<string>????</string>
-	<key>CFBundleVersion</key>
-	<string>0.1</string>
-</dict>
-</plist>
-";
-		};
-		6EF065C603D4EE19006877C2 = {
-			explicitFileType = wrapper.cfbundle;
-			isa = PBXFileReference;
-			path = glxMesa.bundle;
-			refType = 3;
-			sourceTree = BUILT_PRODUCTS_DIR;
-		};
-		6EF065C703D4EE19006877C2 = {
-			isa = PBXTargetDependency;
-			target = 6EF065C503D4EE19006877C2;
-			targetProxy = 6E4CAF660702464F001A7398;
-		};
-		6EF065C903D4F0CA006877C2 = {
-			isa = PBXTargetDependency;
-			target = 6EF7C58603D3BC6D00000104;
-			targetProxy = 6E4CAF630702464F001A7398;
-		};
-		6EF4719E04478B08006877C2 = {
-			fileEncoding = 4;
-			isa = PBXFileReference;
-			lastKnownFileType = sourcecode.c.c;
-			path = xprFrame.c;
-			refType = 4;
-			sourceTree = "<group>";
-		};
-		6EF471A004478DE0006877C2 = {
-			fileEncoding = 30;
-			isa = PBXFileReference;
-			lastKnownFileType = sourcecode.c.h;
-			path = Xplugin.h;
-			refType = 4;
-			sourceTree = "<group>";
-		};
-		6EF471A204479263006877C2 = {
-			fileEncoding = 30;
-			isa = PBXFileReference;
-			lastKnownFileType = sourcecode.c.c;
-			path = "x-hash.c";
-			refType = 4;
-			sourceTree = "<group>";
-		};
-		6EF471A304479263006877C2 = {
-			fileEncoding = 30;
-			isa = PBXFileReference;
-			lastKnownFileType = sourcecode.c.h;
-			path = "x-list.h";
-			refType = 4;
-			sourceTree = "<group>";
-		};
-		6EF471A404479263006877C2 = {
-			fileEncoding = 30;
-			isa = PBXFileReference;
-			lastKnownFileType = sourcecode.c.h;
-			path = "x-hash.h";
-			refType = 4;
-			sourceTree = "<group>";
-		};
-		6EF471A504479263006877C2 = {
-			fileEncoding = 30;
-			isa = PBXFileReference;
-			lastKnownFileType = sourcecode.c.c;
-			path = "x-list.c";
-			refType = 4;
-			sourceTree = "<group>";
-		};
-		6EF7C58103D3BC6D00000104 = {
-			buildActionMask = 2147483647;
-			files = (
-			);
-			isa = PBXHeadersBuildPhase;
-			runOnlyForDeploymentPostprocessing = 0;
-		};
-		6EF7C58203D3BC6D00000104 = {
-			buildActionMask = 2147483647;
-			files = (
-			);
-			isa = PBXResourcesBuildPhase;
-			runOnlyForDeploymentPostprocessing = 0;
-		};
-		6EF7C58303D3BC6D00000104 = {
-			buildActionMask = 2147483647;
-			files = (
-			);
-			isa = PBXSourcesBuildPhase;
-			runOnlyForDeploymentPostprocessing = 0;
-		};
-		6EF7C58403D3BC6D00000104 = {
-			buildActionMask = 2147483647;
-			files = (
-			);
-			isa = PBXFrameworksBuildPhase;
-			runOnlyForDeploymentPostprocessing = 0;
-		};
-		6EF7C58503D3BC6D00000104 = {
-			buildActionMask = 2147483647;
-			files = (
-			);
-			isa = PBXRezBuildPhase;
-			runOnlyForDeploymentPostprocessing = 0;
-		};
-		6EF7C58603D3BC6D00000104 = {
-			buildPhases = (
-				6EF7C58103D3BC6D00000104,
-				6EF7C58203D3BC6D00000104,
-				6EF7C58303D3BC6D00000104,
-				6EF7C58403D3BC6D00000104,
-				6EF7C58503D3BC6D00000104,
-			);
-			buildSettings = {
-				OTHER_CFLAGS = "";
-				OTHER_LDFLAGS = "";
-				OTHER_REZFLAGS = "";
-				PRODUCT_NAME = glxAGL;
-				SECTORDER_FLAGS = "";
-				WARNING_CFLAGS = "-Wmost -Wno-four-char-constants -Wno-unknown-pragmas";
-				WRAPPER_EXTENSION = bundle;
-			};
-			dependencies = (
-			);
-			isa = PBXBundleTarget;
-			name = glxAGL;
-			productName = glxAGL;
-			productReference = 6EF7C58703D3BC6D00000104;
-			productSettingsXML = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>
-<!DOCTYPE plist PUBLIC \"-//Apple Computer//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">
-<plist version=\"1.0\">
-<dict>
-	<key>CFBundleDevelopmentRegion</key>
-	<string>English</string>
-	<key>CFBundleExecutable</key>
-	<string>glxAGL</string>
-	<key>CFBundleGetInfoString</key>
-	<string></string>
-	<key>CFBundleIconFile</key>
-	<string></string>
-	<key>CFBundleIdentifier</key>
-	<string></string>
-	<key>CFBundleInfoDictionaryVersion</key>
-	<string>6.0</string>
-	<key>CFBundleName</key>
-	<string>GLX bundle using AGL framework</string>
-	<key>CFBundlePackageType</key>
-	<string>BNDL</string>
-	<key>CFBundleShortVersionString</key>
-	<string>0.1</string>
-	<key>CFBundleSignature</key>
-	<string>????</string>
-	<key>CFBundleVersion</key>
-	<string>0.1</string>
-</dict>
-</plist>
-";
-		};
-		6EF7C58703D3BC6D00000104 = {
-			explicitFileType = wrapper.cfbundle;
-			isa = PBXFileReference;
-			path = glxAGL.bundle;
-			refType = 3;
-			sourceTree = BUILT_PRODUCTS_DIR;
-		};
-//6E0
-//6E1
-//6E2
-//6E3
-//6E4
-//F50
-//F51
-//F52
-//F53
-//F54
-		F51BF62A02026DAF01000001 = {
-			isa = PBXFileReference;
-			lastKnownFileType = wrapper.nib;
-			name = Portuguese;
-			path = Portuguese.lproj/MainMenu.nib;
-			refType = 4;
-			sourceTree = "<group>";
-		};
-		F51BF62B02026DDA01000001 = {
-			fileEncoding = 30;
-			isa = PBXFileReference;
-			lastKnownFileType = text.plist.strings;
-			name = Portuguese;
-			path = Portuguese.lproj/InfoPlist.strings;
-			refType = 4;
-			sourceTree = "<group>";
-		};
-		F51BF62C02026E0601000001 = {
-			fileEncoding = 30;
-			isa = PBXFileReference;
-			lastKnownFileType = sourcecode.cpp.cpp;
-			name = Portuguese;
-			path = Portuguese.lproj/InfoPlist.strings.cpp;
-			refType = 4;
-			sourceTree = "<group>";
-		};
-		F51BF62D02026E1C01000001 = {
-			fileEncoding = 10;
-			isa = PBXFileReference;
-			lastKnownFileType = text.plist.strings;
-			name = Portuguese;
-			path = Portuguese.lproj/Localizable.strings;
-			refType = 4;
-			sourceTree = "<group>";
-		};
-		F51BF62E02026E3501000001 = {
-			isa = PBXFileReference;
-			lastKnownFileType = text.rtf;
-			name = Portuguese;
-			path = Portuguese.lproj/Credits.rtf;
-			refType = 4;
-			sourceTree = "<group>";
-		};
-		F51BF62F02026E5C01000001 = {
-			fileEncoding = 30;
-			isa = PBXFileReference;
-			lastKnownFileType = text.html;
-			name = Portuguese;
-			path = Portuguese.lproj/XDarwinHelp.html;
-			refType = 4;
-			sourceTree = "<group>";
-		};
-		F51BF63002026E8D01000001 = {
-			fileEncoding = 30;
-			isa = PBXFileReference;
-			lastKnownFileType = sourcecode.cpp.cpp;
-			name = Portuguese;
-			path = Portuguese.lproj/XDarwinHelp.html.cpp;
-			refType = 4;
-			sourceTree = "<group>";
-		};
-		F5269C2D01D5BC3501000001 = {
-			fileEncoding = 30;
-			isa = PBXFileReference;
-			lastKnownFileType = sourcecode.c.c;
-			path = pseudoramiX.c;
-			refType = 4;
-			sourceTree = "<group>";
-		};
-		F5269C2E01D5BC3501000001 = {
-			fileEncoding = 30;
-			isa = PBXFileReference;
-			lastKnownFileType = sourcecode.c.h;
-			path = pseudoramiX.h;
-			refType = 4;
-			sourceTree = "<group>";
-		};
-		F53321390193CB6A01000001 = {
-			isa = PBXFileReference;
-			lastKnownFileType = wrapper.nib;
-			name = German;
-			path = German.lproj/MainMenu.nib;
-			refType = 4;
-			sourceTree = "<group>";
-		};
-		F533213A0193CBA201000001 = {
-			fileEncoding = 30;
-			isa = PBXFileReference;
-			lastKnownFileType = text.plist.strings;
-			name = German;
-			path = German.lproj/InfoPlist.strings;
-			refType = 4;
-			sourceTree = "<group>";
-		};
-		F533213B0193CBB401000001 = {
-			fileEncoding = 30;
-			isa = PBXFileReference;
-			lastKnownFileType = sourcecode.cpp.cpp;
-			name = German;
-			path = German.lproj/InfoPlist.strings.cpp;
-			refType = 4;
-			sourceTree = "<group>";
-		};
-		F533213C0193CBC901000001 = {
-			fileEncoding = 10;
-			isa = PBXFileReference;
-			lastKnownFileType = text.plist.strings;
-			name = German;
-			path = German.lproj/Localizable.strings;
-			refType = 4;
-			sourceTree = "<group>";
-		};
-		F533213D0193CBE001000001 = {
-			isa = PBXFileReference;
-			lastKnownFileType = text.rtf;
-			name = German;
-			path = German.lproj/Credits.rtf;
-			refType = 4;
-			sourceTree = "<group>";
-		};
-		F533213E0193CBF401000001 = {
-			fileEncoding = 30;
-			isa = PBXFileReference;
-			lastKnownFileType = text.html;
-			name = German;
-			path = German.lproj/XDarwinHelp.html;
-			refType = 4;
-			sourceTree = "<group>";
-		};
-		F533213F0193CC2501000001 = {
-			fileEncoding = 30;
-			isa = PBXFileReference;
-			lastKnownFileType = sourcecode.cpp.cpp;
-			name = German;
-			path = German.lproj/XDarwinHelp.html.cpp;
-			refType = 4;
-			sourceTree = "<group>";
-		};
-		F53321400193CCF001000001 = {
-			isa = PBXFileReference;
-			lastKnownFileType = wrapper.framework;
-			name = ApplicationServices.framework;
-			path = /System/Library/Frameworks/ApplicationServices.framework;
-			refType = 0;
-			sourceTree = "<absolute>";
-		};
-		F53321410193CCF001000001 = {
-			isa = PBXFileReference;
-			lastKnownFileType = wrapper.framework;
-			name = CoreAudio.framework;
-			path = /System/Library/Frameworks/CoreAudio.framework;
-			refType = 0;
-			sourceTree = "<absolute>";
-		};
-		F533214201A4B3CE01000001 = {
-			isa = PBXFileReference;
-			lastKnownFileType = wrapper.nib;
-			name = Dutch;
-			path = Dutch.lproj/MainMenu.nib;
-			refType = 4;
-			sourceTree = "<group>";
-		};
-		F533214301A4B3F001000001 = {
-			fileEncoding = 30;
-			isa = PBXFileReference;
-			lastKnownFileType = text.plist.strings;
-			name = Dutch;
-			path = Dutch.lproj/InfoPlist.strings;
-			refType = 4;
-			sourceTree = "<group>";
-		};
-		F533214401A4B40F01000001 = {
-			fileEncoding = 30;
-			isa = PBXFileReference;
-			lastKnownFileType = sourcecode.cpp.cpp;
-			name = Dutch;
-			path = Dutch.lproj/InfoPlist.strings.cpp;
-			refType = 4;
-			sourceTree = "<group>";
-		};
-		F533214501A4B42501000001 = {
-			fileEncoding = 10;
-			isa = PBXFileReference;
-			lastKnownFileType = text.plist.strings;
-			name = Dutch;
-			path = Dutch.lproj/Localizable.strings;
-			refType = 4;
-			sourceTree = "<group>";
-		};
-		F533214601A4B45401000001 = {
-			isa = PBXFileReference;
-			lastKnownFileType = text.rtf;
-			name = Dutch;
-			path = Dutch.lproj/Credits.rtf;
-			refType = 4;
-			sourceTree = "<group>";
-		};
-		F533214701A4B48301000001 = {
-			fileEncoding = 30;
-			isa = PBXFileReference;
-			lastKnownFileType = text.html;
-			name = Dutch;
-			path = Dutch.lproj/XDarwinHelp.html;
-			refType = 4;
-			sourceTree = "<group>";
-		};
-		F533214801A4B4D701000001 = {
-			fileEncoding = 30;
-			isa = PBXFileReference;
-			lastKnownFileType = sourcecode.cpp.cpp;
-			name = Dutch;
-			path = Dutch.lproj/XDarwinHelp.html.cpp;
-			refType = 4;
-			sourceTree = "<group>";
-		};
-		F54BF6EA017D500901000001 = {
-			fileEncoding = 30;
-			isa = PBXFileReference;
-			lastKnownFileType = sourcecode.cpp.cpp;
-			path = startXClients.cpp;
-			refType = 4;
-			sourceTree = "<group>";
-		};
-		F54BF6EC017D506E01000001 = {
-			isa = PBXFileReference;
-			lastKnownFileType = text.script.sh;
-			path = startXClients;
-			refType = 4;
-			sourceTree = "<group>";
-		};
-		F54BF6ED017D506E01000001 = {
-			fileRef = F54BF6EC017D506E01000001;
-			isa = PBXBuildFile;
-			settings = {
-			};
-		};
-		F5582948015DAD3B01000001 = {
-			fileEncoding = 30;
-			isa = PBXFileReference;
-			lastKnownFileType = sourcecode.c.h;
-			path = quartzCommon.h;
-			refType = 4;
-			sourceTree = "<group>";
-		};
-		F5614B3B0251124C01000114 = {
-			fileEncoding = 30;
-			isa = PBXFileReference;
-			lastKnownFileType = sourcecode.c.c;
-			path = fullscreen.c;
-			refType = 4;
-			sourceTree = "<group>";
-		};
-		F5614B3D025112D901000114 = {
-			children = (
-				F5614B3B0251124C01000114,
-				3576829A0077B8F17F000001,
-				0338412F0083BFE57F000001,
-			);
-			isa = PBXGroup;
-			path = fullscreen;
-			refType = 4;
-			sourceTree = "<group>";
-		};
-		F587E16001924C1D01000001 = {
-			isa = PBXFileReference;
-			lastKnownFileType = wrapper.nib;
-			name = Swedish;
-			path = Swedish.lproj/MainMenu.nib;
-			refType = 4;
-			sourceTree = "<group>";
-		};
-		F587E16101924C2F01000001 = {
-			fileEncoding = 30;
-			isa = PBXFileReference;
-			lastKnownFileType = text.plist.strings;
-			name = Swedish;
-			path = Swedish.lproj/InfoPlist.strings;
-			refType = 4;
-			sourceTree = "<group>";
-		};
-		F587E16201924C5301000001 = {
-			fileEncoding = 30;
-			isa = PBXFileReference;
-			lastKnownFileType = sourcecode.cpp.cpp;
-			name = Swedish;
-			path = Swedish.lproj/InfoPlist.strings.cpp;
-			refType = 4;
-			sourceTree = "<group>";
-		};
-		F587E16301924C5E01000001 = {
-			fileEncoding = 10;
-			isa = PBXFileReference;
-			lastKnownFileType = text.plist.strings;
-			name = Swedish;
-			path = Swedish.lproj/Localizable.strings;
-			refType = 4;
-			sourceTree = "<group>";
-		};
-		F587E16401924C6901000001 = {
-			isa = PBXFileReference;
-			lastKnownFileType = text.rtf;
-			name = Swedish;
-			path = Swedish.lproj/Credits.rtf;
-			refType = 4;
-			sourceTree = "<group>";
-		};
-		F587E16501924C7401000001 = {
-			fileEncoding = 30;
-			isa = PBXFileReference;
-			lastKnownFileType = text.html;
-			name = Swedish;
-			path = Swedish.lproj/XDarwinHelp.html;
-			refType = 4;
-			sourceTree = "<group>";
-		};
-		F587E16601924C9D01000001 = {
-			fileEncoding = 30;
-			isa = PBXFileReference;
-			lastKnownFileType = sourcecode.cpp.cpp;
-			name = Swedish;
-			path = Swedish.lproj/XDarwinHelp.html.cpp;
-			refType = 4;
-			sourceTree = "<group>";
-		};
-		F58D65DB018F793801000001 = {
-			isa = PBXFileReference;
-			lastKnownFileType = wrapper.nib;
-			name = French;
-			path = French.lproj/MainMenu.nib;
-			refType = 4;
-			sourceTree = "<group>";
-		};
-		F58D65DC018F794D01000001 = {
-			fileEncoding = 30;
-			isa = PBXFileReference;
-			lastKnownFileType = sourcecode.cpp.cpp;
-			name = French;
-			path = French.lproj/InfoPlist.strings.cpp;
-			refType = 4;
-			sourceTree = "<group>";
-		};
-		F58D65DD018F798F01000001 = {
-			fileEncoding = 30;
-			isa = PBXFileReference;
-			lastKnownFileType = text.plist.strings;
-			name = French;
-			path = French.lproj/InfoPlist.strings;
-			refType = 4;
-			sourceTree = "<group>";
-		};
-		F58D65DE018F79A001000001 = {
-			fileEncoding = 10;
-			isa = PBXFileReference;
-			lastKnownFileType = text.plist.strings;
-			name = French;
-			path = French.lproj/Localizable.strings;
-			refType = 4;
-			sourceTree = "<group>";
-		};
-		F58D65DF018F79B101000001 = {
-			isa = PBXFileReference;
-			lastKnownFileType = text.rtf;
-			name = French;
-			path = French.lproj/Credits.rtf;
-			refType = 4;
-			sourceTree = "<group>";
-		};
-		F58D65E0018F79C001000001 = {
-			fileEncoding = 30;
-			isa = PBXFileReference;
-			lastKnownFileType = text.html;
-			name = French;
-			path = French.lproj/XDarwinHelp.html;
-			refType = 4;
-			sourceTree = "<group>";
-		};
-		F58D65E1018F79E001000001 = {
-			fileEncoding = 30;
-			isa = PBXFileReference;
-			lastKnownFileType = sourcecode.cpp.cpp;
-			name = French;
-			path = French.lproj/XDarwinHelp.html.cpp;
-			refType = 4;
-			sourceTree = "<group>";
-		};
-		F5A94EF10314BAC70100011B = {
-			fileEncoding = 30;
-			isa = PBXFileReference;
-			lastKnownFileType = sourcecode.c.c;
-			path = darwinEvents.c;
-			refType = 4;
-			sourceTree = "<group>";
-		};
-		F5ACD25CC5B5E96601000001 = {
-			isa = PBXFileReference;
-			lastKnownFileType = text.rtf;
-			name = Spanish;
-			path = Spanish.lproj/Credits.rtf;
-			refType = 4;
-			sourceTree = "<group>";
-		};
-		F5ACD25DC5B5E97701000001 = {
-			fileEncoding = 30;
-			isa = PBXFileReference;
-			lastKnownFileType = sourcecode.cpp.cpp;
-			name = Spanish;
-			path = Spanish.lproj/InfoPlist.strings.cpp;
-			refType = 4;
-			sourceTree = "<group>";
-		};
-		F5ACD25EC5B5E98D01000001 = {
-			isa = PBXFileReference;
-			lastKnownFileType = wrapper.nib;
-			name = Spanish;
-			path = Spanish.lproj/MainMenu.nib;
-			refType = 4;
-			sourceTree = "<group>";
-		};
-		F5ACD25FC5B5E9AA01000001 = {
-			fileEncoding = 10;
-			isa = PBXFileReference;
-			lastKnownFileType = text.plist.strings;
-			name = Spanish;
-			path = Spanish.lproj/Localizable.strings;
-			refType = 4;
-			sourceTree = "<group>";
-		};
-		F5ACD260C5B5E9DF01000001 = {
-			fileEncoding = 30;
-			isa = PBXFileReference;
-			lastKnownFileType = sourcecode.cpp.cpp;
-			name = Spanish;
-			path = Spanish.lproj/XDarwinHelp.html.cpp;
-			refType = 4;
-			sourceTree = "<group>";
-		};
-		F5ACD261C5B5EA2001000001 = {
-			fileEncoding = 30;
-			isa = PBXFileReference;
-			lastKnownFileType = text.html;
-			name = Spanish;
-			path = Spanish.lproj/XDarwinHelp.html;
-			refType = 4;
-			sourceTree = "<group>";
-		};
-		F5ACD262C5B5EA4D01000001 = {
-			fileEncoding = 30;
-			isa = PBXFileReference;
-			lastKnownFileType = text.plist.strings;
-			name = Spanish;
-			path = Spanish.lproj/InfoPlist.strings;
-			refType = 4;
-			sourceTree = "<group>";
-		};
-		F5ACD263C5BE031F01000001 = {
-			isa = PBXFileReference;
-			lastKnownFileType = text.rtf;
-			name = ko;
-			path = ko.lproj/Credits.rtf;
-			refType = 4;
-			sourceTree = "<group>";
-		};
-		F5ACD264C5BE035B01000001 = {
-			fileEncoding = 30;
-			isa = PBXFileReference;
-			lastKnownFileType = sourcecode.cpp.cpp;
-			name = ko;
-			path = ko.lproj/InfoPlist.strings.cpp;
-			refType = 4;
-			sourceTree = "<group>";
-		};
-		F5ACD265C5BE038601000001 = {
-			isa = PBXFileReference;
-			lastKnownFileType = wrapper.nib;
-			name = ko;
-			path = ko.lproj/MainMenu.nib;
-			refType = 4;
-			sourceTree = "<group>";
-		};
-		F5ACD266C5BE03C501000001 = {
-			fileEncoding = 10;
-			isa = PBXFileReference;
-			lastKnownFileType = text.plist.strings;
-			name = ko;
-			path = ko.lproj/Localizable.strings;
-			refType = 4;
-			sourceTree = "<group>";
-		};
-		F5ACD267C5BE03FC01000001 = {
-			fileEncoding = 30;
-			isa = PBXFileReference;
-			lastKnownFileType = sourcecode.cpp.cpp;
-			name = ko;
-			path = ko.lproj/XDarwinHelp.html.cpp;
-			refType = 4;
-			sourceTree = "<group>";
-		};
-		F5ACD268C5BE046401000001 = {
-			fileEncoding = 30;
-			isa = PBXFileReference;
-			lastKnownFileType = text.html;
-			name = ko;
-			path = ko.lproj/XDarwinHelp.html;
-			refType = 4;
-			sourceTree = "<group>";
-		};
-		F5ACD269C5BE049301000001 = {
-			fileEncoding = 30;
-			isa = PBXFileReference;
-			lastKnownFileType = text.plist.strings;
-			name = ko;
-			path = ko.lproj/InfoPlist.strings;
-			refType = 4;
-			sourceTree = "<group>";
-		};
-	};
-	rootObject = 29B97313FDCFA39411CA2CEA;
-}
diff --git a/hw/darwin/quartz/XDarwinStartup.c b/hw/darwin/quartz/XDarwinStartup.c
deleted file mode 100644
index 8041e32..0000000
--- a/hw/darwin/quartz/XDarwinStartup.c
+++ /dev/null
@@ -1,163 +0,0 @@
-/**************************************************************
- *
- * Startup program for Darwin X servers
- *
- * This program selects the appropriate X server to launch:
- *  XDarwin         IOKit X server (default)
- *  XDarwinQuartz   A soft link to the Quartz X server
- *                  executable (-quartz etc. option)
- *
- * If told to idle, the program will simply pause and not
- * launch any X server. This is to support startx being
- * run by XDarwin.app.
- *
- **************************************************************/
-/*
- * Copyright (c) 2001-2002 Torrey T. Lyons. All Rights Reserved.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * TORREY T. LYONS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
- * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
- * OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- *
- * Except as contained in this notice, the name of Torrey T. Lyons shall not
- * be used in advertising or otherwise to promote the sale, use or other
- * dealings in this Software without prior written authorization from
- * Torrey T. Lyons.
- */
-
-#include <unistd.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <errno.h>
-#include <sys/syslimits.h>
-#include <ApplicationServices/ApplicationServices.h>
-
-// Macros to build the path name
-#ifndef XBINDIR
-#define XBINDIR /usr/X11/bin
-#endif
-#define STR(s) #s
-#define XSTRPATH(s) STR(s) "/"
-#define XPATH(file) XSTRPATH(XBINDIR) STR(file)
-
-int main(
-    int         argc,
-    char        *argv[] )
-{
-    int         i, j, quartzMode = -1;
-    char        **newargv;
-
-    // Check if we are going to run in Quartz mode or idle
-    // to support startx from the Quartz server. The last
-    // parameter in the list is the one used.
-    for (i = argc-1; i; i--) {
-        if (!strcmp(argv[i], "-idle")) {
-            pause();
-            return 0;
-
-        } else if (!strcmp(argv[i], "-quartz") ||
-                   !strcmp(argv[i], "-rootless") ||
-                   !strcmp(argv[i], "-fullscreen"))
-        {
-            quartzMode = 1;
-            break;
-
-        } else if (!strcmp(argv[i], "-iokit")) {
-            quartzMode = 0;
-            break;
-        }
-    }
-
-    if (quartzMode == -1) {
-#ifdef HAS_CG_MACH_PORT
-        // Check if the CoreGraphics window server is running.
-        // Mike Paquette says this is the fastest way to determine if it is running.
-        CFMachPortRef cgMachPortRef = CGWindowServerCFMachPort();
-        if (cgMachPortRef == NULL)
-            quartzMode = 0;
-        else
-            quartzMode = 1;
-#else
-        // On older systems we assume IOKit mode.
-        quartzMode = 0;
-#endif
-    }
-
-    if (quartzMode) {
-        // Launch the X server for the quartz modes
-
-        char quartzPath[PATH_MAX+1];
-        int pathLength;
-        OSStatus theStatus;
-        CFURLRef appURL;
-        CFStringRef appPath;
-        Boolean success;
-
-        // Build the new argument list
-        newargv = (char **) malloc((argc+2) * sizeof(char *));
-        for (j = argc; j; j--)
-            newargv[j] = argv[j];
-        newargv[argc] = "-nostartx";
-        newargv[argc+1] = NULL;
-
-        // Use the XDarwinQuartz soft link if it is valid
-        pathLength = readlink(XPATH(XDarwinQuartz), quartzPath, PATH_MAX);
-        if (pathLength != -1) {
-            quartzPath[pathLength] = '\0';
-            newargv[0] = quartzPath;
-            execv(newargv[0], newargv);
-        }
-
-        // Otherwise query LaunchServices for the location of the XDarwin application
-        theStatus = LSFindApplicationForInfo(kLSUnknownCreator,
-                                             CFSTR("org.x.x11"),
-                                             NULL, NULL, &appURL);
-        if (theStatus) {
-            fprintf(stderr, "Could not find the XDarwin application. (Error = 0x%lx)\n", theStatus);
-            fprintf(stderr, "Launch XDarwin once from the Finder.\n");
-            return theStatus;
-        }
-
-        appPath = CFURLCopyFileSystemPath (appURL, kCFURLPOSIXPathStyle);
-        success = CFStringGetCString(appPath, quartzPath, PATH_MAX, CFStringGetSystemEncoding());
-        if (! success) {
-            fprintf(stderr, "Could not find path to XDarwin application.\n");
-            return success;
-        }
-
-        // Launch the XDarwin application
-        strncat(quartzPath, "/Contents/MacOS/XDarwin", PATH_MAX);
-        newargv[0] = quartzPath;
-        execv(newargv[0], newargv);
-        fprintf(stderr, "Could not start XDarwin application at %s.\n", newargv[0]);
-        return errno;
-
-    } else {
-
-        // Build the new argument list
-        newargv = (char **) malloc((argc+1) * sizeof(char *));
-        for (j = argc; j; j--)
-            newargv[j] = argv[j];
-        newargv[0] = "XDarwin";
-        newargv[argc] = NULL;
-    
-        // Launch the IOKit X server
-        execvp(newargv[0], newargv);
-        fprintf(stderr, "Could not start XDarwin IOKit X server.\n");
-        return errno;
-    }
-}
diff --git a/hw/darwin/quartz/XDarwinStartup.man b/hw/darwin/quartz/XDarwinStartup.man
deleted file mode 100644
index 1ad3bbc..0000000
--- a/hw/darwin/quartz/XDarwinStartup.man
+++ /dev/null
@@ -1,74 +0,0 @@
-.TH XDarwinStartup 1
-.SH NAME
-XDarwinStartup - Startup program for the XDarwin X window server
-.SH SYNOPSIS
-.B XDarwinStartup
-[\fI-iokit\fP]
-[\fI-fullscreen\fP]
-[\fI-rootless\fP]
-[\fI-quartz\fP]
-[\fI-idle\fP]
-[\fIoptions\fP]
-.SH DESCRIPTION
-The \fIXDarwin(1)\fP X window server can be run in a variety of different
-modes and is actually two different executables. The IOKit X server,
-XDarwin, is used when running from the console. It is most commonly
-located in __XBinDir__. The Quartz X server, for running in parallel with
-Aqua, is a full-fledged Mac OS X application that can be started from
-the Finder. Its application bundle is XDarwin.app, which is typically
-located in /Applications.
-.I XDarwinStartup
-allows easy switching between these X servers and auto-detection of the
-appropriate one to use when launching from the command line.
-When run without any arguments,
-.I XDarwinStartup
-will start the Quartz X server if the Core Graphics window server
-is currently running. Otherwise it will start the IOKit X server.
-.PP
-To locate the Quartz X server,
-.I XDarwinStartup
-will try to read the soft link at __XBinDir__/XDarwinQuartz.
-This is typically a soft link to the executable of the XDarwin.app
-application. If this fails,
-.I XDarwinStartup
-will call Launch Services to locate XDarwin.app.
-.PP
-To start the IOKit X server,
-.I XDarwinStartup
-will run the XDarwin executable, which should be present in the
-user's path.
-.SH OPTIONS
-.I XDarwinStartup
-accepts and passes on all options to the X server it
-launches. In addition the following options have specific effects:
-.TP 8
-.B \-iokit
-Launch the IOKit X server.
-.TP 8
-.B \-fullscreen
-Launch the Quartz X server to run in full screen mode.
-.TP 8
-.B \-rootless
-Launch the Quartz X server to run in rootless mode.
-.TP 8
-.B \-quartz
-Launch the Quartz X server.
-.TP 8
-.B \-idle
-Pause and do nothing. This option is used by XDarwin.app when it is
-started from the Finder.
-.SH FILES
-.TP 30
-__XBinDir__/XDarwin
-IOKit mode X server
-.TP 30
-/Applications/XDarwin.app
-Quartz mode X server
-.TP 30
-__XBinDir__/XDarwinQuartz
-Soft link to Quartz mode X server executable
-.SH SEE ALSO 
-XDarwin(1)
-.SH BUGS
-The path to XDarwinQuartz should not be hard coded. 
-
diff --git a/hw/darwin/quartz/XServer.h b/hw/darwin/quartz/XServer.h
deleted file mode 100644
index 030ccb5..0000000
--- a/hw/darwin/quartz/XServer.h
+++ /dev/null
@@ -1,136 +0,0 @@
-//
-//  XServer.h
-//
-/*
- * Copyright (c) 2001 Andreas Monitzer. All Rights Reserved.
- * Copyright (c) 2002-2003 Torrey T. Lyons. All Rights Reserved.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sublicense, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice shall be included
- * in all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
- * IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT HOLDER(S) BE LIABLE FOR ANY
- * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * Except as contained in this notice, the name(s) of the above copyright
- * holders shall not be used in advertising or otherwise to promote the
- * sale, use or other dealings in this Software without prior written
- * authorization.
- */
-
-#define BOOL xBOOL
-#include <X11/Xproto.h>
-#undef BOOL
-
-#import <Cocoa/Cocoa.h>
-
- at interface XServer : NSObject {
-    // Server state
-    int serverState;
-    NSRecursiveLock *serverLock;
-    NSMutableArray *pendingClients;
-    BOOL serverVisible;
-    BOOL rootlessMenuBarVisible;
-    BOOL queueShowServer;
-    BOOL quitWithoutQuery;
-    BOOL pendingAppQuitReply;
-    UInt32 mouseState;
-    unsigned short swallowedKey;
-    BOOL sendServerEvents;
-    BOOL x11Active;
-
-    // Aqua interface
-    IBOutlet NSWindow *modeWindow;
-    IBOutlet NSButton *startupModeButton;
-    IBOutlet NSButton *startFullScreenButton;
-    IBOutlet NSButton *startRootlessButton;
-    IBOutlet NSWindow *helpWindow;
-    IBOutlet NSButton *startupHelpButton;
-    IBOutlet NSPanel *switchWindow;
-
-    // Menu elements setable by Apple-WM extension
-    IBOutlet NSMenu *windowMenu;
-    IBOutlet NSMenuItem *windowSeparator;
-    IBOutlet NSMenu *dockMenu;
-    int checkedWindowItem;
-}
-
-- (id)init;
-
-- (BOOL)translateEvent:(NSEvent *)anEvent;
-- (BOOL)getMousePosition:(xEvent *)xe fromEvent:(NSEvent *)anEvent;
-
-- (NSString *)makeSafePath:(NSString *)path;
-
-- (BOOL)loadDisplayBundle;
-- (void)startX;
-- (void)finishStartX;
-- (BOOL)startXClients;
-- (void)runClient:(NSString *)filename;
-- (void)run;
-- (void)toggle;
-- (void)showServer:(BOOL)show;
-- (void)forceShowServer:(BOOL)show;
-- (void)setRootClip:(BOOL)enable;
-- (void)readPasteboard;
-- (void)writePasteboard;
-- (void)quitServer;
-- (void)sendXEvent:(xEvent *)xe;
-- (void)sendShowHide:(BOOL)show;
-- (void)clientProcessDone:(int)clientStatus;
-- (void)activateX11:(BOOL)state;
-- (void)windowBecameKey:(NSNotification *)notification;
-- (void)setX11WindowList:(NSArray *)list;
-- (void)setX11WindowCheck:(NSNumber *)nn;
-
-// Aqua interface actions
-- (IBAction)startFullScreen:(id)sender;
-- (IBAction)startRootless:(id)sender;
-- (IBAction)closeHelpAndShow:(id)sender;
-- (IBAction)showSwitchPanel:(id)sender;
-- (IBAction)showAction:(id)sender;
-- (IBAction)itemSelected:(id)sender;
-- (IBAction)nextWindow:(id)sender;
-- (IBAction)previousWindow:(id)sender;
-- (IBAction)performClose:(id)sender;
-- (IBAction)performMiniaturize:(id)sender;
-- (IBAction)performZoom:(id)sender;
-- (IBAction)bringAllToFront:(id)sender;
-- (IBAction)copy:(id)sender;
-
-// NSApplication delegate
-- (NSApplicationTerminateReply)applicationShouldTerminate:(NSApplication *)sender;
-- (void)applicationWillTerminate:(NSNotification *)aNotification;
-- (void)applicationDidFinishLaunching:(NSNotification *)aNotification;
-- (void)applicationDidHide:(NSNotification *)aNotification;
-- (void)applicationDidUnhide:(NSNotification *)aNotification;
-- (BOOL)applicationShouldHandleReopen:(NSApplication *)theApplication hasVisibleWindows:(BOOL)flag;
-- (void)applicationWillResignActive:(NSNotification *)aNotification;
-- (void)applicationWillBecomeActive:(NSNotification *)aNotification;
-- (BOOL)application:(NSApplication *)theApplication openFile:(NSString *)filename;
-
-// NSPort delegate
-- (void)handlePortMessage:(NSPortMessage *)portMessage;
-
- at end
-
-// X server states
-enum {
-    server_NotStarted,
-    server_Starting,
-    server_Running,
-    server_Quitting,
-    server_Done
-};
diff --git a/hw/darwin/quartz/XServer.m b/hw/darwin/quartz/XServer.m
deleted file mode 100644
index f8173cb..0000000
--- a/hw/darwin/quartz/XServer.m
+++ /dev/null
@@ -1,1538 +0,0 @@
-//
-//  XServer.m
-//
-//  This class handles the interaction between the Cocoa front-end
-//  and the Darwin X server thread.
-//
-//  Created by Andreas Monitzer on January 6, 2001.
-//
-/*
- * Copyright (c) 2001 Andreas Monitzer. All Rights Reserved.
- * Copyright (c) 2002-2005 Torrey T. Lyons. All Rights Reserved.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sublicense, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice shall be included
- * in all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
- * IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT HOLDER(S) BE LIABLE FOR ANY
- * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * Except as contained in this notice, the name(s) of the above copyright
- * holders shall not be used in advertising or otherwise to promote the
- * sale, use or other dealings in this Software without prior written
- * authorization.
- */
-
-#include <dix-config.h>
-#include "quartzCommon.h"
-
-#define BOOL xBOOL
-#include "X11/X.h"
-#include "X11/Xproto.h"
-#include "os.h"
-#include "opaque.h"
-#include "darwin.h"
-#include "quartz.h"
-#define _APPLEWM_SERVER_
-#include "X11/extensions/applewm.h"
-#include "applewmExt.h"
-#undef BOOL
-
-#import "XServer.h"
-#import "Preferences.h"
-
-#include <unistd.h>
-#include <stdio.h>
-#include <sys/syslimits.h>
-#include <sys/types.h>
-#include <sys/wait.h>
-#include <pwd.h>
-#include <signal.h>
-#include <fcntl.h>
-
-// For power management notifications
-#import <mach/mach_port.h>
-#import <mach/mach_interface.h>
-#import <mach/mach_init.h>
-#import <IOKit/pwr_mgt/IOPMLib.h>
-#import <IOKit/IOMessage.h>
-
-// Types of shells
-enum {
-    shell_Unknown,
-    shell_Bourne,
-    shell_C
-};
-
-typedef struct {
-    char *name;
-    int type;
-} shellList_t;
-
-static shellList_t const shellList[] = {
-    { "csh",    shell_C },          // standard C shell
-    { "tcsh",   shell_C },          // ... needs no introduction
-    { "sh",     shell_Bourne },     // standard Bourne shell
-    { "zsh",    shell_Bourne },     // Z shell
-    { "bash",   shell_Bourne },     // GNU Bourne again shell
-    { NULL,     shell_Unknown }
-};
-
-extern int argcGlobal;
-extern char **argvGlobal;
-extern char **envpGlobal;
-extern int main(int argc, char *argv[], char *envp[]);
-extern void HideMenuBar(void);
-extern void ShowMenuBar(void);
-static void childDone(int sig);
-static void powerDidChange(void *x, io_service_t y, natural_t messageType,
-                           void *messageArgument);
-
-static NSPort *signalPort;
-static NSPort *returnPort;
-static NSPortMessage *signalMessage;
-static pid_t clientPID;
-static XServer *oneXServer;
-static NSRect aquaMenuBarBox;
-static io_connect_t root_port;
-
-
- at implementation XServer
-
-- (id)init
-{
-    self = [super init];
-    oneXServer = self;
-
-    serverState = server_NotStarted;
-    serverLock = [[NSRecursiveLock alloc] init];
-    pendingClients = nil;
-    clientPID = 0;
-    sendServerEvents = NO;
-    x11Active = YES;
-    serverVisible = NO;
-    rootlessMenuBarVisible = YES;
-    queueShowServer = YES;
-    quartzServerQuitting = NO;
-    pendingAppQuitReply = NO;
-    mouseState = 0;
-
-    // set up a port to safely send messages to main thread from server thread
-    signalPort = [[NSPort port] retain];
-    returnPort = [[NSPort port] retain];
-    signalMessage = [[NSPortMessage alloc] initWithSendPort:signalPort
-                    receivePort:returnPort components:nil];
-
-    // set up receiving end
-    [signalPort setDelegate:self];
-    [[NSRunLoop currentRunLoop] addPort:signalPort
-                                forMode:NSDefaultRunLoopMode];
-    [[NSRunLoop currentRunLoop] addPort:signalPort
-                                forMode:NSModalPanelRunLoopMode];
-
-    return self;
-}
-
-- (NSApplicationTerminateReply)
-        applicationShouldTerminate:(NSApplication *)sender
-{
-    // Quit if the X server is not running
-    if ([serverLock tryLock]) {
-        quartzServerQuitting = YES;
-        serverState = server_Done;
-        if (clientPID != 0)
-            kill(clientPID, SIGINT);
-        return NSTerminateNow;
-    }
-
-    // Hide the X server and stop sending it events
-    [self showServer:NO];
-    sendServerEvents = NO;
-
-    if (!quitWithoutQuery && (clientPID != 0 || !quartzStartClients)) {
-        int but;
-
-        but = NSRunAlertPanel(NSLocalizedString(@"Quit X server?",@""),
-                              NSLocalizedString(@"Quitting the X server will terminate any running X Window System programs.",@""),
-                              NSLocalizedString(@"Quit",@""),
-                              NSLocalizedString(@"Cancel",@""),
-                              nil);
-
-        switch (but) {
-            case NSAlertDefaultReturn:		// quit
-                break;
-            case NSAlertAlternateReturn:	// cancel
-                if (serverState == server_Running)
-                    sendServerEvents = YES;
-                return NSTerminateCancel;
-        }
-    }
-
-    quartzServerQuitting = YES;
-    if (clientPID != 0)
-        kill(clientPID, SIGINT);
-
-    // At this point the X server is either running or starting.
-    if (serverState == server_Starting) {
-        // Quit will be queued later when server is running
-        pendingAppQuitReply = YES;
-        return NSTerminateLater;
-    } else if (serverState == server_Running) {
-        [self quitServer];
-    }
-
-    return NSTerminateNow;
-}
-
-// Ensure that everything has quit cleanly
-- (void)applicationWillTerminate:(NSNotification *)aNotification
-{
-    // Make sure the client process has finished
-    if (clientPID != 0) {
-        NSLog(@"Waiting on client process...");
-        sleep(2);
-
-        // If the client process hasn't finished yet, kill it off
-        if (clientPID != 0) {
-            int clientStatus;
-            NSLog(@"Killing client process...");
-            killpg(clientPID, SIGKILL);
-            waitpid(clientPID, &clientStatus, 0);
-        }
-    }
-
-    // Wait until the X server thread quits
-    [serverLock lock];
-}
-
-// returns YES when event was handled
-- (BOOL)translateEvent:(NSEvent *)anEvent
-{
-    xEvent xe;
-    static BOOL mouse1Pressed = NO;
-    NSEventType type;
-    unsigned int flags;
-
-    if (!sendServerEvents) {
-        return NO;
-    }
-
-    type  = [anEvent type];
-    flags = [anEvent modifierFlags];
-
-    if (!quartzRootless) {
-        // Check for switch keypress
-        if ((type == NSKeyDown) && (![anEvent isARepeat]) &&
-            ([anEvent keyCode] == [Preferences keyCode]))
-        {
-            unsigned int switchFlags = [Preferences modifiers];
-
-            // Switch if all the switch modifiers are pressed, while none are
-            // pressed that should not be, except for caps lock.
-            if (((flags & switchFlags) == switchFlags) &&
-                ((flags & ~(switchFlags | NSAlphaShiftKeyMask)) == 0))
-            {
-                [self toggle];
-                return YES;
-            }
-        }
-
-        if (!serverVisible)
-            return NO;
-    }
-
-    memset(&xe, 0, sizeof(xe));
-
-    switch (type) {
-        case NSLeftMouseUp:
-            if (quartzRootless && !mouse1Pressed) {
-                // MouseUp after MouseDown in menu - ignore
-                return NO;
-            }
-            mouse1Pressed = NO;
-            [self getMousePosition:&xe fromEvent:anEvent];
-            xe.u.u.type = ButtonRelease;
-            xe.u.u.detail = 1;
-            break;
-
-        case NSLeftMouseDown:
-            if (quartzRootless) {
-                // Check that event is in X11 window
-                if (!quartzProcs->IsX11Window([anEvent window],
-                                              [anEvent windowNumber]))
-                {
-                    if (x11Active)
-                        [self activateX11:NO];
-                    return NO;
-                } else {
-                    if (!x11Active)
-                        [self activateX11:YES];
-                }
-            }
-            mouse1Pressed = YES;
-            [self getMousePosition:&xe fromEvent:anEvent];
-            xe.u.u.type = ButtonPress;
-            xe.u.u.detail = 1;
-            break;
-
-        case NSRightMouseUp:
-            [self getMousePosition:&xe fromEvent:anEvent];
-            xe.u.u.type = ButtonRelease;
-            xe.u.u.detail = 3;
-            break;
-
-        case NSRightMouseDown:
-            [self getMousePosition:&xe fromEvent:anEvent];
-            xe.u.u.type = ButtonPress;
-            xe.u.u.detail = 3;
-            break;
-
-        case NSOtherMouseUp:
-        {
-            int hwButton = [anEvent buttonNumber];
-
-            [self getMousePosition:&xe fromEvent:anEvent];
-            xe.u.u.type = ButtonRelease;
-            xe.u.u.detail = (hwButton == 2) ? hwButton : hwButton + 1;
-            break;
-        }
-
-        case NSOtherMouseDown:
-        {
-            int hwButton = [anEvent buttonNumber];
-
-            [self getMousePosition:&xe fromEvent:anEvent];
-            xe.u.u.type = ButtonPress;
-            xe.u.u.detail = (hwButton == 2) ? hwButton : hwButton + 1;
-            break;
-        }
-
-        case NSMouseMoved:
-        case NSLeftMouseDragged:
-        case NSRightMouseDragged:
-        case NSOtherMouseDragged:
-            [self getMousePosition:&xe fromEvent:anEvent];
-            xe.u.u.type = MotionNotify;
-            break;
-
-        case NSScrollWheel:
-            [self getMousePosition:&xe fromEvent:anEvent];
-            xe.u.u.type = kXDarwinScrollWheel;
-            xe.u.clientMessage.u.s.shorts0 = [anEvent deltaX] +
-                                             [anEvent deltaY];
-            break;
-
-        case NSKeyDown:
-        case NSKeyUp:
-            if (!x11Active) {
-                swallowedKey = 0;
-                return NO;
-            }
-
-            if (type == NSKeyDown) {
-                // If the mouse is not on the valid X display area,
-                // don't send the X server key events.
-                if (![self getMousePosition:&xe fromEvent:nil]) {
-                    swallowedKey = [anEvent keyCode];
-                    return NO;
-                }
-
-                // See if there are any global shortcuts for this key combo.
-                if (quartzEnableKeyEquivalents
-                    && [[NSApp mainMenu] performKeyEquivalent:anEvent])
-                {
-                    swallowedKey = [anEvent keyCode];
-                    return YES;
-                }
-            } else {
-                // If the down key event was a valid key combo,
-                // don't pass the up event to X11.
-                if (swallowedKey != 0 && [anEvent keyCode] == swallowedKey) {
-                    swallowedKey = 0;
-                    return NO;
-                }
-            }
-
-            xe.u.u.type = (type == NSKeyDown) ? KeyPress : KeyRelease;
-            xe.u.u.detail = [anEvent keyCode];
-            break;
-
-        case NSFlagsChanged:
-            if (!x11Active)
-                return NO;
-            xe.u.u.type = kXDarwinUpdateModifiers;
-            xe.u.clientMessage.u.l.longs0 = flags;
-            break;
-
-        default:
-            return NO;
-    }
-
-    [self sendXEvent:&xe];
-
-    // Rootless: Send first NSLeftMouseDown to Cocoa windows and views so
-    // window ordering can be suppressed.
-    // Don't pass further events - they (incorrectly?) bring the window
-    // forward no matter what.
-    if (quartzRootless  &&
-        (type == NSLeftMouseDown || type == NSLeftMouseUp) &&
-        [anEvent clickCount] == 1 && [anEvent window])
-    {
-        return NO;
-    }
-
-    return YES;
-}
-
-// Return mouse coordinates, inverting y coordinate.
-// The coordinates are extracted from an event or the current mouse position.
-// For rootless mode, the menu bar is treated as not part of the usable
-// X display area and the cursor position is adjusted accordingly.
-// Returns YES if the cursor is not in the menu bar.
-- (BOOL)getMousePosition:(xEvent *)xe fromEvent:(NSEvent *)anEvent
-{
-    NSPoint pt;
-
-    if (anEvent) {
-        NSWindow *eventWindow = [anEvent window];
-
-        if (eventWindow) {
-            pt = [anEvent locationInWindow];
-            pt.x += [eventWindow frame].origin.x;
-            pt.y += [eventWindow frame].origin.y;
-        } else {
-            pt = [NSEvent mouseLocation];
-        }
-    } else {
-        pt = [NSEvent mouseLocation];
-    }
-
-    xe->u.keyButtonPointer.rootX = (int)(pt.x);
-
-    if (quartzRootless && NSMouseInRect(pt, aquaMenuBarBox, NO)) {
-        // mouse in menu bar - tell X11 that it's just below instead
-        xe->u.keyButtonPointer.rootY = aquaMenuBarHeight;
-        return NO;
-    } else {
-        xe->u.keyButtonPointer.rootY =
-            NSHeight([[NSScreen mainScreen] frame]) - (int)(pt.y);
-        return YES;
-    }
-}
-
-
-// Make a safe path
-//
-// Return the path in single quotes in case there are problematic characters in it.
-// We still have to worry about there being single quotes in the path. So, replace
-// all instances of the ' character in the path with '\''.
-- (NSString *)makeSafePath:(NSString *)path
-{
-    NSMutableString *safePath = [NSMutableString stringWithString:path];
-    NSRange aRange = NSMakeRange(0, [safePath length]);
-
-    while (aRange.length) {
-        aRange = [safePath rangeOfString:@"'" options:0 range:aRange];
-        if (!aRange.length)
-            break;
-        [safePath replaceCharactersInRange:aRange
-                        withString:@"\'\\'\'"];
-        aRange.location += 4;
-        aRange.length = [safePath length] - aRange.location;
-    }
-
-    safePath = [NSMutableString stringWithFormat:@"'%@'", safePath];
-
-    return safePath;
-}
-
-
-- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
-{
-    // Block SIGPIPE
-    // SIGPIPE repeatably killed the (rootless) server when closing a
-    // dozen xterms in rapid succession. Those SIGPIPEs should have been
-    // sent to the X server thread, which ignores them, but somehow they
-    // ended up in this thread instead.
-    {
-        sigset_t set;
-        sigemptyset(&set);
-        sigaddset(&set, SIGPIPE);
-        // pthread_sigmask not implemented yet
-        // pthread_sigmask(SIG_BLOCK, &set, NULL);
-        sigprocmask(SIG_BLOCK, &set, NULL);
-    }
-
-    if (quartzRootless == -1) {
-        // The display mode was not set from the command line.
-        // Show mode pick panel?
-        if ([Preferences modeWindow]) {
-            if ([Preferences rootless])
-                [startRootlessButton setKeyEquivalent:@"\r"];
-            else
-                [startFullScreenButton setKeyEquivalent:@"\r"];
-            [modeWindow makeKeyAndOrderFront:nil];
-        } else {
-            // Otherwise use default mode
-            quartzRootless = [Preferences rootless];
-            [self startX];
-        }
-    } else {
-        [self startX];
-    }
-}
-
-
-// Load the appropriate display mode bundle
-- (BOOL)loadDisplayBundle
-{
-    if (quartzRootless) {
-        NSEnumerator *enumerator = [[Preferences displayModeBundles]
-                                            objectEnumerator];
-        NSString *bundleName;
-
-        while ((bundleName = [enumerator nextObject])) {
-            if (QuartzLoadDisplayBundle([bundleName cString]))
-                return YES;
-        }
-
-        return NO;
-    } else {
-        return QuartzLoadDisplayBundle("fullscreen.bundle");
-    }
-}
-
-
-// Start the X server thread and the client process
-- (void)startX
-{
-    NSDictionary *appDictionary;
-    NSString *appVersion;
-
-    [modeWindow close];
-
-    // Calculate the height of the menu bar so rootless mode can avoid it
-    if (quartzRootless) {
-        aquaMenuBarHeight = NSHeight([[NSScreen mainScreen] frame]) -
-                            NSMaxY([[NSScreen mainScreen] visibleFrame]) - 1;
-        aquaMenuBarBox =
-            NSMakeRect(0, NSMaxY([[NSScreen mainScreen] visibleFrame]) + 1,
-                       NSWidth([[NSScreen mainScreen] frame]),
-                       aquaMenuBarHeight);
-    }
-
-    // Write the XDarwin version to the console log
-    appDictionary = [[NSBundle mainBundle] infoDictionary];
-    appVersion = [appDictionary objectForKey:@"CFBundleShortVersionString"];
-    if (appVersion)
-        NSLog(@"\n%@", appVersion);
-    else
-        NSLog(@"No version");
-
-    if (![self loadDisplayBundle])
-        [NSApp terminate:nil];
-
-    if (quartzRootless) {
-        // We need to track whether the key window is an X11 window
-        [[NSNotificationCenter defaultCenter]
-                addObserver:self
-                selector:@selector(windowBecameKey:)
-                name:NSWindowDidBecomeKeyNotification
-                object:nil];
-
-        // Request notification of screen layout changes even when this
-        // is not the active application
-        [[NSDistributedNotificationCenter defaultCenter]
-                addObserver:self
-                selector:@selector(applicationDidChangeScreenParameters:)
-                name:NSApplicationDidChangeScreenParametersNotification
-                object:nil];
-    }
-
-    // Start the X server thread
-    serverState = server_Starting;
-    [NSThread detachNewThreadSelector:@selector(run) toTarget:self
-              withObject:nil];
-
-    // Start the X clients if started from GUI
-    if (quartzStartClients) {
-        [self startXClients];
-    }
-
-    if (quartzRootless) {
-        // There is no help window for rootless; just start
-        [helpWindow close];
-        helpWindow = nil;
-    } else {
-        IONotificationPortRef notify;
-        io_object_t anIterator;
-
-        // Register for system power notifications
-        root_port = IORegisterForSystemPower(0, &notify, powerDidChange,
-                                             &anIterator);
-        if (root_port) {
-            CFRunLoopAddSource([[NSRunLoop currentRunLoop] getCFRunLoop],
-                               IONotificationPortGetRunLoopSource(notify),
-                               kCFRunLoopDefaultMode);
-        } else {
-            NSLog(@"Failed to register for system power notifications.");
-        }
-        
-        // Show the X switch window if not using dock icon switching
-        if (![Preferences dockSwitch])
-            [switchWindow orderFront:nil];
-
-        if ([Preferences startupHelp]) {
-            // display the full screen mode help
-            [helpWindow makeKeyAndOrderFront:nil];
-            queueShowServer = NO;
-        } else {
-            // start running full screen and make sure X is visible
-            ShowMenuBar();
-            [self closeHelpAndShow:nil];
-        }
-    }
-}
-
-// Finish starting the X server thread
-// This includes anything that must be done after the X server is
-// ready to process events after the first or subsequent generations.
-- (void)finishStartX
-{
-    sendServerEvents = YES;
-    serverState = server_Running;
-
-    if (quartzRootless) {
-        [self forceShowServer:[NSApp isActive]];
-    } else {
-        [self forceShowServer:queueShowServer];
-    }
-
-    if (quartzServerQuitting) {
-        [self quitServer];
-        if (pendingAppQuitReply)
-            [NSApp replyToApplicationShouldTerminate:YES];
-        return;
-    }
-
-    if (pendingClients) {
-        NSEnumerator *enumerator = [pendingClients objectEnumerator];
-        NSString *filename;
-
-        while ((filename = [enumerator nextObject])) {
-            [self runClient:filename];
-        }
-
-        [pendingClients release];
-        pendingClients = nil;
-    }
-}
-
-// Start the first X clients in a separate process
-- (BOOL)startXClients
-{
-    struct passwd *passwdUser;
-    NSString *shellPath, *dashShellName, *commandStr, *startXPath;
-    NSString *safeStartXPath;
-    NSBundle *thisBundle;
-    const char *shellPathStr, *newargv[3], *shellNameStr;
-    int fd[2], outFD, length, shellType, i;
-
-    // Register to catch the signal when the client processs finishes
-    signal(SIGCHLD, childDone);
-
-    // Get user's password database entry
-    passwdUser = getpwuid(getuid());
-
-    // Find the shell to use
-    if ([Preferences useDefaultShell])
-        shellPath = [NSString stringWithCString:passwdUser->pw_shell];
-    else
-        shellPath = [Preferences shellString];
-
-    dashShellName = [NSString stringWithFormat:@"-%@",
-                            [shellPath lastPathComponent]];
-    shellPathStr = [shellPath cString];
-    shellNameStr = [[shellPath lastPathComponent] cString];
-
-    if (access(shellPathStr, X_OK)) {
-        NSLog(@"Shell %s is not valid!", shellPathStr);
-        return NO;
-    }
-
-    // Find the type of shell
-    for (i = 0; shellList[i].name; i++) {
-        if (!strcmp(shellNameStr, shellList[i].name))
-            break;
-    }
-    shellType = shellList[i].type;
-
-    newargv[0] = [dashShellName cString];
-    if (shellType == shell_Bourne) {
-        // Bourne shells need to be told they are interactive to make
-        // sure they read all their initialization files.
-        newargv[1] = "-i";
-        newargv[2] = NULL;
-    } else {
-        newargv[1] = NULL;
-    }
-
-    // Create a pipe to communicate with the X client process
-    NSAssert(pipe(fd) == 0, @"Could not create new pipe.");
-
-    // Open a file descriptor for writing to stdout and stderr
-    outFD = open("/dev/console", O_WRONLY, 0);
-    if (outFD == -1) {
-        outFD = open("/dev/null", O_WRONLY, 0);
-        NSAssert(outFD != -1, @"Could not open shell output.");
-    }
-
-    // Fork process to start X clients in user's default shell
-    // Sadly we can't use NSTask because we need to start a login shell.
-    // Login shells are started by passing "-" as the first character of
-    // argument 0. NSTask forces argument 0 to be the shell's name.
-    clientPID = vfork();
-    if (clientPID == 0) {
-
-        // Inside the new process:
-        if (fd[0] != STDIN_FILENO) {
-            dup2(fd[0], STDIN_FILENO);      // Take stdin from pipe
-            close(fd[0]);
-        }
-        close(fd[1]);                       // Close write end of pipe
-        if (outFD == STDOUT_FILENO) {       // Setup stdout and stderr
-            dup2(outFD, STDERR_FILENO);
-        } else if (outFD == STDERR_FILENO) {
-            dup2(outFD, STDOUT_FILENO);
-        } else {
-            dup2(outFD, STDERR_FILENO);
-            dup2(outFD, STDOUT_FILENO);
-            close(outFD);
-        }
-
-        // Setup environment
-        setenv("HOME", passwdUser->pw_dir, 1);
-        setenv("SHELL", shellPathStr, 1);
-        setenv("LOGNAME", passwdUser->pw_name, 1);
-        setenv("USER", passwdUser->pw_name, 1);
-        setenv("TERM", "unknown", 1);
-        if (chdir(passwdUser->pw_dir))	// Change to user's home dir
-            NSLog(@"Could not change to user's home directory.");
-
-        execv(shellPathStr, (char * const *)newargv);	// Start user's shell
-
-        NSLog(@"Could not start X client process with errno = %i.", errno);
-        _exit(127);
-    }
-
-    // In parent process:
-    close(fd[0]);	// Close read end of pipe
-    close(outFD);	// Close output file descriptor
-
-    thisBundle = [NSBundle bundleForClass:[self class]];
-    startXPath = [thisBundle pathForResource:@"startXClients" ofType:nil];
-    if (!startXPath) {
-        NSLog(@"Could not find startXClients in application bundle!");
-        return NO;
-    }
-
-    safeStartXPath = [self makeSafePath:startXPath];
-
-    if ([Preferences addToPath]) {
-        commandStr = [NSString stringWithFormat:@"%@ :%d %@\n",
-                        safeStartXPath, [Preferences display],
-                        [Preferences addToPathString]];
-    } else {
-        commandStr = [NSString stringWithFormat:@"%@ :%d\n",
-                        safeStartXPath, [Preferences display]];
-    }
-
-    length = [commandStr cStringLength];
-    if (write(fd[1], [commandStr cString], length) != length) {
-        NSLog(@"Write to X client process failed.");
-        return NO;
-    }
-
-    // Close the pipe so that shell will terminate when xinit quits
-    close(fd[1]);
-
-    return YES;
-}
-
-// Start the specified client in its own task
-// FIXME: This should be unified with startXClients
-- (void)runClient:(NSString *)filename
-{
-    const char *command = [[self makeSafePath:filename] UTF8String];
-    const char *shell;
-    const char *argv[5];
-    int child1, child2 = 0;
-    int status;
-
-    shell = getenv("SHELL");
-    if (shell == NULL)
-        shell = "/bin/bash";
-
-    /* At least [ba]sh, [t]csh and zsh all work with this syntax. We
-       need to use an interactive shell to force it to load the user's
-       environment. */
-
-    argv[0] = shell;
-    argv[1] = "-i";
-    argv[2] = "-c";
-    argv[3] = command;
-    argv[4] = NULL;
-
-    /* Do the fork-twice trick to avoid having to reap zombies */
-
-    child1 = fork();
-
-    switch (child1) {
-        case -1:                                /* error */
-            break;
-
-        case 0:                                 /* child1 */
-            child2 = fork();
-
-            switch (child2) {
-                int max_files, i;
-                char buf[1024], *tem;
-
-            case -1:                            /* error */
-                _exit(1);
-
-            case 0:                             /* child2 */
-                /* close all open files except for standard streams */
-                max_files = sysconf(_SC_OPEN_MAX);
-                for (i = 3; i < max_files; i++)
-                    close(i);
-
-                /* ensure stdin is on /dev/null */
-                close(0);
-                open("/dev/null", O_RDONLY);
-
-                /* cd $HOME */
-                tem = getenv("HOME");
-                if (tem != NULL)
-                    chdir(tem);
-
-                /* Setup environment */
-//              snprintf(buf, sizeof(buf), ":%s", display);
-//              setenv("DISPLAY", buf, TRUE);
-                tem = getenv("PATH");
-                if (tem != NULL && tem[0] != NULL)
-                    snprintf(buf, sizeof(buf), "%s:/usr/X11/bin", tem);
-                else
-                    snprintf(buf, sizeof(buf), "/bin:/usr/bin:/usr/X11/bin");
-                setenv("PATH", buf, TRUE);
-
-                execvp(argv[0], (char **const) argv);
-
-                _exit(2);
-
-            default:                            /* parent (child1) */
-                _exit(0);
-            }
-            break;
-
-        default:                                /* parent */
-            waitpid(child1, &status, 0);
-    }
-}
-
-// Run the X server thread
-- (void)run
-{
-    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
-
-    [serverLock lock];
-    main(argcGlobal, argvGlobal, envpGlobal);
-    serverVisible = NO;
-    [pool release];
-    [serverLock unlock];
-    QuartzMessageMainThread(kQuartzServerDied, nil, 0);
-}
-
-// Full screen mode was picked in the mode pick panel
-- (IBAction)startFullScreen:(id)sender
-{
-    [Preferences setModeWindow:[startupModeButton intValue]];
-    [Preferences saveToDisk];
-    quartzRootless = FALSE;
-    [self startX];
-}
-
-// Rootless mode was picked in the mode pick panel
-- (IBAction)startRootless:(id)sender
-{
-    [Preferences setModeWindow:[startupModeButton intValue]];
-    [Preferences saveToDisk];
-    quartzRootless = TRUE;
-    [self startX];
-}
-
-// Close the help splash screen and show the X server
-- (IBAction)closeHelpAndShow:(id)sender
-{
-    if (sender) {
-        int helpVal = [startupHelpButton intValue];
-        [Preferences setStartupHelp:helpVal];
-        [Preferences saveToDisk];
-    }
-    [helpWindow close];
-    helpWindow = nil;
-
-    [self forceShowServer:YES];
-    [NSApp activateIgnoringOtherApps:YES];
-}
-
-// Show the Aqua-X11 switch panel useful for fullscreen mode
-- (IBAction)showSwitchPanel:(id)sender
-{
-    [switchWindow orderFront:nil];
-}
-
-// Show the X server when sent message from GUI
-- (IBAction)showAction:(id)sender
-{
-    [self forceShowServer:YES];
-}
-
-// Show or hide the X server or menu bar in rootless mode
-- (void)toggle
-{
-    if (quartzRootless) {
-#if 0
-        // FIXME: Remove or add option to not dodge menubar
-        if (rootlessMenuBarVisible)
-            HideMenuBar();
-        else
-            ShowMenuBar();
-        rootlessMenuBarVisible = !rootlessMenuBarVisible;
-#endif
-    } else {
-        [self showServer:!serverVisible];
-    }
-}
-
-// Show or hide the X server on screen
-- (void)showServer:(BOOL)show
-{
-    // Do not show or hide multiple times in a row
-    if (serverVisible == show)
-        return;
-
-    if (sendServerEvents) {
-        [self sendShowHide:show];
-    } else if (serverState == server_Starting) {
-        queueShowServer = show;
-    }
-}
-
-// Show or hide the X server irregardless of the current state
-- (void)forceShowServer:(BOOL)show
-{
-    serverVisible = !show;
-    [self showServer:show];
-}
-
-// Tell the X server to show or hide itself.
-// This ignores the current X server visible state.
-//
-// In full screen mode, the order we do things is important and must be
-// preserved between the threads. X drawing operations have to be performed
-// in the X server thread. It appears that we have the additional
-// constraint that we must hide and show the menu bar in the main thread.
-//
-// To show the X server:
-//   1. Capture the displays. (Main thread)
-//   2. Hide the menu bar. (Must be in main thread)
-//   3. Send event to X server thread to redraw X screen.
-//   4. Redraw the X screen. (Must be in X server thread)
-//
-// To hide the X server:
-//   1. Send event to X server thread to stop drawing.
-//   2. Stop drawing to the X screen. (Must be in X server thread)
-//   3. Message main thread that drawing is stopped.
-//   4. If main thread still wants X server hidden:
-//     a. Release the displays. (Main thread)
-//     b. Unhide the menu bar. (Must be in main thread)
-//   Otherwise we have already queued an event to start drawing again.
-//
-- (void)sendShowHide:(BOOL)show
-{
-    xEvent xe;
-
-    [self getMousePosition:&xe fromEvent:nil];
-
-    if (show) {
-        if (!quartzRootless) {
-            quartzProcs->CaptureScreens();
-            HideMenuBar();
-        }
-        [self activateX11:YES];
-
-        // the mouse location will have moved; track it
-        xe.u.u.type = MotionNotify;
-        [self sendXEvent:&xe];
-
-        // inform the X server of the current modifier state
-        xe.u.u.type = kXDarwinUpdateModifiers;
-        xe.u.clientMessage.u.l.longs0 = [[NSApp currentEvent] modifierFlags];
-        [self sendXEvent:&xe];
-
-        // If there is no AppleWM-aware cut and paste manager, do what we can.
-        if ((AppleWMSelectedEvents() & AppleWMPasteboardNotifyMask) == 0) {
-            // put the pasteboard into the X cut buffer
-            [self readPasteboard];
-        }
-    } else {
-        // If there is no AppleWM-aware cut and paste manager, do what we can.
-        if ((AppleWMSelectedEvents() & AppleWMPasteboardNotifyMask) == 0) {
-            // put the X cut buffer on the pasteboard
-            [self writePasteboard];
-        }
-
-        [self activateX11:NO];
-    }
-
-    serverVisible = show;
-}
-
-// Enable or disable rendering to the X screen
-- (void)setRootClip:(BOOL)enable
-{
-    xEvent xe;
-
-    xe.u.u.type = kXDarwinSetRootClip;
-    xe.u.clientMessage.u.l.longs0 = enable;
-    [self sendXEvent:&xe];
-}
-
-// Tell the X server to read from the pasteboard into the X cut buffer
-- (void)readPasteboard
-{
-    xEvent xe;
-
-    xe.u.u.type = kXDarwinReadPasteboard;
-    [self sendXEvent:&xe];
-}
-
-// Tell the X server to write the X cut buffer into the pasteboard
-- (void)writePasteboard
-{
-    xEvent xe;
-
-    xe.u.u.type = kXDarwinWritePasteboard;
-    [self sendXEvent:&xe];
-}
-
-- (void)quitServer
-{
-    xEvent xe;
-
-    xe.u.u.type = kXDarwinQuit;
-    [self sendXEvent:&xe];
-
-    // Revert to the Mac OS X arrow cursor. The main thread sets the cursor
-    // and it won't be responding to future requests to change it.
-    [[NSCursor arrowCursor] set];
-
-    serverState = server_Quitting;
-}
-
-- (void)sendXEvent:(xEvent *)xe
-{
-    // This field should be filled in for every event
-    xe->u.keyButtonPointer.time = GetTimeInMillis();
-
-    DarwinEQEnqueue(xe);
-}
-
-// Handle messages from the X server thread
-- (void)handlePortMessage:(NSPortMessage *)portMessage
-{
-    unsigned msg = [portMessage msgid];
-
-    switch (msg) {
-        case kQuartzServerHidden:
-            // Make sure the X server wasn't queued to be shown again while
-            // the hide was pending.
-            if (!quartzRootless && !serverVisible) {
-                quartzProcs->ReleaseScreens();
-                ShowMenuBar();
-            }
-            break;
-
-        case kQuartzServerStarted:
-            [self finishStartX];
-            break;
-
-        case kQuartzServerDied:
-            sendServerEvents = NO;
-            serverState = server_Done;
-            if (!quartzServerQuitting) {
-                [NSApp terminate:nil];	// quit if we aren't already
-            }
-            break;
-
-        case kQuartzCursorUpdate:
-            if (quartzProcs->CursorUpdate)
-                quartzProcs->CursorUpdate();
-            break;
-
-        case kQuartzPostEvent:
-        {
-            const xEvent *xe = [[[portMessage components] lastObject] bytes];
-            DarwinEQEnqueue(xe);
-            break;
-        }
-
-        case kQuartzSetWindowMenu:
-        {
-            NSArray *list;
-            [[[portMessage components] lastObject] getBytes:&list];
-            [self setX11WindowList:list];
-            [list release];
-            break;
-        }
-
-        case kQuartzSetWindowMenuCheck:
-        {
-            int n;
-            [[[portMessage components] lastObject] getBytes:&n];
-            [self setX11WindowCheck:[NSNumber numberWithInt:n]];
-            break;
-        }
-
-        case kQuartzSetFrontProcess:
-            [NSApp activateIgnoringOtherApps:YES];
-            break;
-
-        case kQuartzSetCanQuit:
-        {
-            int n;
-            [[[portMessage components] lastObject] getBytes:&n];
-            quitWithoutQuery = (BOOL) n;
-            break;
-        }
-
-        default:
-            NSLog(@"Unknown message from server thread.");
-    }
-}
-
-// Quit the X server when the X client process finishes
-- (void)clientProcessDone:(int)clientStatus
-{
-    if (WIFEXITED(clientStatus)) {
-        int exitStatus = WEXITSTATUS(clientStatus);
-        if (exitStatus != 0)
-            NSLog(@"X client process terminated with status %i.", exitStatus);
-    } else {
-        NSLog(@"X client process terminated abnormally.");
-    }
-
-    if (!quartzServerQuitting) {
-        [NSApp terminate:nil];	// quit if we aren't already
-    }
-}
-
-// User selected an X11 window from a menu
-- (IBAction)itemSelected:(id)sender
-{
-    xEvent xe;
-
-    [NSApp activateIgnoringOtherApps:YES];
-
-    // Notify the client of the change through the X server thread
-    xe.u.u.type = kXDarwinControllerNotify;
-    xe.u.clientMessage.u.l.longs0 = AppleWMWindowMenuItem;
-    xe.u.clientMessage.u.l.longs1 = [sender tag];
-    [self sendXEvent:&xe];
-}
-
-// User selected Next from window menu
-- (IBAction)nextWindow:(id)sender
-{
-    QuartzMessageServerThread(kXDarwinControllerNotify, 1,
-                              AppleWMNextWindow);
-}
-
-// User selected Previous from window menu
-- (IBAction)previousWindow:(id)sender
-{
-    QuartzMessageServerThread(kXDarwinControllerNotify, 1,
-                              AppleWMPreviousWindow);
-}
-
-/*
- * The XPR implementation handles close, minimize, and zoom actions for X11
- * windows here, while CR handles these in the NSWindow class.
- */
-
-// Handle Close from window menu for X11 window in XPR implementation
-- (IBAction)performClose:(id)sender
-{
-    QuartzMessageServerThread(kXDarwinControllerNotify, 1,
-                              AppleWMCloseWindow);
-}
-
-// Handle Minimize from window menu for X11 window in XPR implementation
-- (IBAction)performMiniaturize:(id)sender
-{
-    QuartzMessageServerThread(kXDarwinControllerNotify, 1,
-                              AppleWMMinimizeWindow);
-}
-
-// Handle Zoom from window menu for X11 window in XPR implementation
-- (IBAction)performZoom:(id)sender
-{
-    QuartzMessageServerThread(kXDarwinControllerNotify, 1,
-                              AppleWMZoomWindow);
-}
-
-// Handle "Bring All to Front" from window menu
-- (IBAction)bringAllToFront:(id)sender
-{
-    if ((AppleWMSelectedEvents() & AppleWMControllerNotifyMask) != 0) {
-        QuartzMessageServerThread(kXDarwinControllerNotify, 1,
-                                  AppleWMBringAllToFront);
-    } else {
-        [NSApp arrangeInFront:nil];
-    }
-}
-
-// This ends up at the end of the responder chain.
-- (IBAction)copy:(id)sender
-{
-    QuartzMessageServerThread(kXDarwinPasteboardNotify, 1,
-                              AppleWMCopyToPasteboard);
-}
-
-// Set whether or not X11 is active and should receive all key events
-- (void)activateX11:(BOOL)state
-{
-    if (state) {
-        QuartzMessageServerThread(kXDarwinActivate, 0);
-    }
-    else {
-        QuartzMessageServerThread(kXDarwinDeactivate, 0);
-    }
-
-    x11Active = state;
-}
-
-// Some NSWindow became the key window
-- (void)windowBecameKey:(NSNotification *)notification
-{
-    NSWindow *window = [notification object];
-
-    if (quartzProcs->IsX11Window(window, [window windowNumber])) {
-        if (!x11Active)
-            [self activateX11:YES];
-    } else {
-        if (x11Active)
-            [self activateX11:NO];
-    }
-}
-
-// Set the Apple-WM specifiable part of the window menu
-- (void)setX11WindowList:(NSArray *)list
-{
-    NSMenuItem *item;
-    int first, count, i;
-    xEvent xe;
-
-    /* Work backwards so we don't mess up the indices */
-    first = [windowMenu indexOfItem:windowSeparator] + 1;
-    if (first > 0) {
-        count = [windowMenu numberOfItems];
-        for (i = count - 1; i >= first; i--)
-            [windowMenu removeItemAtIndex:i];
-    } else {
-        windowSeparator = (NSMenuItem *)[windowMenu addItemWithTitle:@""
-                                                    action:nil
-                                                    keyEquivalent:@""];
-    }
-
-    count = [dockMenu numberOfItems];
-    for (i = 0; i < count; i++)
-        [dockMenu removeItemAtIndex:0];
-
-    count = [list count];
-
-    for (i = 0; i < count; i++)
-    {
-        NSString *name, *shortcut;
-
-        name = [[list objectAtIndex:i] objectAtIndex:0];
-        shortcut = [[list objectAtIndex:i] objectAtIndex:1];
-
-        item = (NSMenuItem *)[windowMenu addItemWithTitle:name
-                                         action:@selector(itemSelected:)
-                                         keyEquivalent:shortcut];
-        [item setTarget:self];
-        [item setTag:i];
-        [item setEnabled:YES];
-
-        item = (NSMenuItem *)[dockMenu insertItemWithTitle:name
-                                       action:@selector(itemSelected:)
-                                       keyEquivalent:shortcut atIndex:i];
-        [item setTarget:self];
-        [item setTag:i];
-        [item setEnabled:YES];
-    }
-
-    if (checkedWindowItem >= 0 && checkedWindowItem < count)
-    {
-        item = (NSMenuItem *)[windowMenu itemAtIndex:first + checkedWindowItem];
-        [item setState:NSOnState];
-        item = (NSMenuItem *)[dockMenu itemAtIndex:checkedWindowItem];
-        [item setState:NSOnState];
-    }
-
-    // Notify the client of the change through the X server thread
-    xe.u.u.type = kXDarwinControllerNotify;
-    xe.u.clientMessage.u.l.longs0 = AppleWMWindowMenuNotify;
-    [self sendXEvent:&xe];
-}
-
-// Set the checked item on the Apple-WM specifiable window menu
-- (void)setX11WindowCheck:(NSNumber *)nn
-{
-    NSMenuItem *item;
-    int first, count;
-    int n = [nn intValue];
-
-    first = [windowMenu indexOfItem:windowSeparator] + 1;
-    count = [windowMenu numberOfItems] - first;
-
-    if (checkedWindowItem >= 0 && checkedWindowItem < count)
-    {
-        item = (NSMenuItem *)[windowMenu itemAtIndex:first + checkedWindowItem];
-        [item setState:NSOffState];
-        item = (NSMenuItem *)[dockMenu itemAtIndex:checkedWindowItem];
-        [item setState:NSOffState];
-    }
-    if (n >= 0 && n < count)
-    {
-        item = (NSMenuItem *)[windowMenu itemAtIndex:first + n];
-        [item setState:NSOnState];
-        item = (NSMenuItem *)[dockMenu itemAtIndex:n];
-        [item setState:NSOnState];
-    }
-    checkedWindowItem = n;
-}
-
-// Return whether or not a menu item should be enabled
-- (BOOL)validateMenuItem:(NSMenuItem *)item
-{
-    NSMenu *menu = [item menu];
-
-    if (menu == windowMenu && [item tag] == 30) {
-        // Mode switch panel is for fullscreen only
-        return !quartzRootless;
-    }
-    else if ((menu == windowMenu && [item tag] != 40) || menu == dockMenu) {
-        // The special window and dock menu items should not be active unless
-        // there is an AppleWM-aware window manager running.
-        return (AppleWMSelectedEvents() & AppleWMControllerNotifyMask) != 0;
-    }
-    else {
-        return TRUE;
-    }
-}
-
-/*
- * Application Delegate Methods
- */
-
-- (void)applicationDidChangeScreenParameters:(NSNotification *)aNotification
-{
-    if (quartzProcs->ScreenChanged)
-        quartzProcs->ScreenChanged();
-}
-
-- (void)applicationDidHide:(NSNotification *)aNotification
-{
-    if ((AppleWMSelectedEvents() & AppleWMControllerNotifyMask) != 0) {
-        QuartzMessageServerThread(kXDarwinControllerNotify, 1,
-                                  AppleWMHideAll);
-    } else {
-        if (quartzProcs->HideWindows)
-            quartzProcs->HideWindows(YES);
-    }
-}
-
-- (void)applicationDidUnhide:(NSNotification *)aNotification
-{
-    if ((AppleWMSelectedEvents() & AppleWMControllerNotifyMask) != 0) {
-        QuartzMessageServerThread(kXDarwinControllerNotify, 1,
-                                  AppleWMShowAll);
-    } else {
-        if (quartzProcs->HideWindows)
-            quartzProcs->HideWindows(NO);
-    }
-}
-
-// Called when the user clicks the application icon,
-// but not when Cmd-Tab is used.
-// Rootless: Don't switch until applicationWillBecomeActive.
-- (BOOL)applicationShouldHandleReopen:(NSApplication *)theApplication
-            hasVisibleWindows:(BOOL)flag
-{
-    if ([Preferences dockSwitch] && !quartzRootless) {
-        [self showServer:YES];
-    }
-    return NO;
-}
-
-- (void)applicationWillResignActive:(NSNotification *)aNotification
-{
-    [self showServer:NO];
-}
-
-- (void)applicationWillBecomeActive:(NSNotification *)aNotification
-{
-    if (quartzRootless) {
-        [self showServer:YES];
-
-        // If there is no AppleWM-aware window manager, we can't allow
-        // interleaving of Aqua and X11 windows.
-        if ((AppleWMSelectedEvents() & AppleWMControllerNotifyMask) == 0) {
-            [NSApp arrangeInFront:nil];
-        }
-    }
-}
-
-// Called when the user opens a document type that we claim (ie. an X11 executable).
-- (BOOL)application:(NSApplication *)theApplication openFile:(NSString *)filename
-{
-    if (serverState == server_Running) {
-        [self runClient:filename];
-        return YES;
-    }
-    else if (serverState == server_NotStarted || serverState == server_Starting) {
-        if ([filename UTF8String][0] != ':') {          // Ignore display names
-            if (!pendingClients) {
-                pendingClients = [[NSMutableArray alloc] initWithCapacity:1];
-            }
-            [pendingClients addObject:filename];
-            return YES;                 // Assume it will launch successfully
-        }
-        return NO;
-    }
-
-    // If the server is quitting or done,
-    // its too late to launch new clients this time.
-    return NO;
-}
-
- at end
-
-
-// Send a message to the main thread, which calls handlePortMessage in
-// response. Must only be called from the X server thread because
-// NSPort is not thread safe.
-void QuartzMessageMainThread(unsigned msg, void *data, unsigned length)
-{
-    if (length > 0) {
-        NSData *eventData = [NSData dataWithBytes:data length:length];
-        NSArray *eventArray = [NSArray arrayWithObject:eventData];
-        NSPortMessage *newMessage =
-                [[NSPortMessage alloc]
-                        initWithSendPort:signalPort
-                        receivePort:returnPort components:eventArray];
-        [newMessage setMsgid:msg];
-        [newMessage sendBeforeDate:[NSDate distantPast]];
-        [newMessage release];
-    } else {
-        [signalMessage setMsgid:msg];
-        [signalMessage sendBeforeDate:[NSDate distantPast]];
-    }
-}
-
-void
-QuartzSetWindowMenu(int nitems, const char **items,
-                    const char *shortcuts)
-{
-    NSMutableArray *array;
-    int i;
-
-    array = [[NSMutableArray alloc] initWithCapacity:nitems];
-
-    for (i = 0; i < nitems; i++) {
-        NSMutableArray *subarray = [NSMutableArray arrayWithCapacity:2];
-        NSString *string = [NSString stringWithUTF8String:items[i]];
-
-        [subarray addObject:string];
-
-        if (shortcuts[i] != 0) {
-            NSString *number = [NSString stringWithFormat:@"%d",
-                                         shortcuts[i]];
-            [subarray addObject:number];
-        } else
-            [subarray addObject:@""];
-
-        [array addObject:subarray];
-    }
-
-    /* Send the array of strings over to the main thread. */
-    /* Will be released in main thread. */
-    QuartzMessageMainThread(kQuartzSetWindowMenu, &array, sizeof(NSArray *));
-}
-
-// Handle SIGCHLD signals
-static void childDone(int sig)
-{
-    int clientStatus;
-
-    if (clientPID == 0)
-        return;
-
-    // Make sure it was the client task that finished
-    if (waitpid(clientPID, &clientStatus, WNOHANG) == clientPID) {
-        if (WIFSTOPPED(clientStatus))
-            return;
-        clientPID = 0;
-        [oneXServer clientProcessDone:clientStatus];
-    }
-}
-
-static void powerDidChange(
-    void *x,
-    io_service_t y,
-    natural_t messageType,
-    void *messageArgument)
-{
-    switch (messageType) {
-        case kIOMessageSystemWillSleep:
-            if (!quartzRootless) {
-                [oneXServer setRootClip:FALSE];
-            }
-            IOAllowPowerChange(root_port, (long)messageArgument);
-            break;
-        case kIOMessageCanSystemSleep:
-            IOAllowPowerChange(root_port, (long)messageArgument);
-            break;
-        case kIOMessageSystemHasPoweredOn:
-            if (!quartzRootless) {
-                [oneXServer setRootClip:TRUE];
-            }
-            break;
-    }
-
-}
diff --git a/hw/darwin/quartz/applewm.c b/hw/darwin/quartz/applewm.c
index 308c510..20d1b4f 100644
--- a/hw/darwin/quartz/applewm.c
+++ b/hw/darwin/quartz/applewm.c
@@ -47,6 +47,7 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 #define _APPLEWM_SERVER_
 #include "X11/extensions/applewmstr.h"
 #include "applewmExt.h"
+#include "X11Application.h"
 
 #define DEFINE_ATOM_HELPER(func,atom_name)                      \
 static Atom func (void) {                                       \
@@ -445,13 +446,7 @@ ProcAppleWMSetWindowMenu(
                 break;
         }
     }
-
-#ifdef INXQUARTZ
     X11ApplicationSetWindowMenu (nitems, items, shortcuts);
-#else
-    QuartzSetWindowMenu (nitems, items, shortcuts);
-#endif
-
     free(items);
     free(shortcuts);
 
@@ -466,12 +461,7 @@ ProcAppleWMSetWindowMenuCheck(
     REQUEST(xAppleWMSetWindowMenuCheckReq);
 
     REQUEST_SIZE_MATCH(xAppleWMSetWindowMenuCheckReq);
-#ifdef INXQUARTZ
     X11ApplicationSetWindowMenuCheck(stuff->index);
-#else
-    QuartzMessageMainThread(kQuartzSetWindowMenuCheck, &stuff->index,
-                            sizeof(stuff->index));
-#endif
     return (client->noClientException);
 }
 
@@ -481,11 +471,8 @@ ProcAppleWMSetFrontProcess(
 )
 {
     REQUEST_SIZE_MATCH(xAppleWMSetFrontProcessReq);
-#ifdef INXQUARTZ
+
     X11ApplicationSetFrontProcess();
-#else
-    QuartzMessageMainThread(kQuartzSetFrontProcess, NULL, 0);
-#endif
     return (client->noClientException);
 }
 
@@ -524,13 +511,8 @@ ProcAppleWMSetCanQuit(
     REQUEST(xAppleWMSetCanQuitReq);
 
     REQUEST_SIZE_MATCH(xAppleWMSetCanQuitReq);
-#ifdef INXQUARTZ
-    X11ApplicationSetCanQuit(stuff->state);
-#else
-    QuartzMessageMainThread(kQuartzSetCanQuit, &stuff->state,
-                            sizeof(stuff->state));
-#endif
 
+    X11ApplicationSetCanQuit(stuff->state);
     return (client->noClientException);
 }
 
diff --git a/hw/darwin/quartz/quartz.c b/hw/darwin/quartz/quartz.c
index 762a84b..3374baa 100644
--- a/hw/darwin/quartz/quartz.c
+++ b/hw/darwin/quartz/quartz.c
@@ -39,11 +39,14 @@
 #include "X11/extensions/applewm.h"
 #include "applewmExt.h"
 
+#include "X11Application.h"
+
 // X headers
 #include "scrnintstr.h"
 #include "windowstr.h"
 #include "colormapst.h"
 #include "globals.h"
+#include "rootlessWindow.h"
 
 // System headers
 #include <sys/types.h>
@@ -84,7 +87,9 @@ Bool DarwinModeAddScreen(
 {
     // allocate space for private per screen Quartz specific storage
     QuartzScreenPtr displayInfo = xcalloc(sizeof(QuartzScreenRec), 1);
-    QUARTZ_PRIV(pScreen) = displayInfo;
+
+    // QUARTZ_PRIV(pScreen) = displayInfo;
+    pScreen->devPrivates[quartzScreenIndex].ptr = displayInfo;
 
     // do Quartz mode specific initialization
     return quartzProcs->AddScreen(index, pScreen);
@@ -158,12 +163,7 @@ void DarwinModeInitInput(
     int argc,
     char **argv )
 {
-#ifdef INXQUARTZ
-  X11ApplicationServerReady();
-#else
-    QuartzMessageMainThread(kQuartzServerStarted, NULL, 0);
-#endif
-
+    X11ApplicationServerReady();
     // Do final display mode specific initialization before handling events
     if (quartzProcs->InitInput)
         quartzProcs->InitInput(argc, argv);
@@ -276,9 +276,6 @@ static void QuartzHide(void)
         }
     }
     quartzServerVisible = FALSE;
-#ifndef INXQUARTZ
-    QuartzMessageMainThread(kQuartzServerHidden, NULL, 0);
-#endif
 }
 
 
@@ -386,7 +383,7 @@ void DarwinModeProcessEvent(
 	  
         case kXDarwinWindowMoved:
   //	  ErrorF("kXDarwinWindowMoved\n");
-            RootlessNativeWindowMoved (xe->u.clientMessage.u.l.longs0);
+            RootlessNativeWindowMoved ((WindowPtr)xe->u.clientMessage.u.l.longs0);
 	    break;
 
         case kXDarwinToggleFullscreen:
diff --git a/hw/darwin/quartz/quartz.h b/hw/darwin/quartz/quartz.h
index 172f323..e74a108 100644
--- a/hw/darwin/quartz/quartz.h
+++ b/hw/darwin/quartz/quartz.h
@@ -124,6 +124,4 @@ typedef struct _QuartzModeProcs {
 extern QuartzModeProcsPtr quartzProcs;
 extern int quartzHasRoot, quartzEnableRootless;
 
-Bool QuartzLoadDisplayBundle(const char *dpyBundleName);
-
 #endif
diff --git a/hw/darwin/quartz/quartzCocoa.m b/hw/darwin/quartz/quartzCocoa.m
index 3987cd2..46a9828 100644
--- a/hw/darwin/quartz/quartzCocoa.m
+++ b/hw/darwin/quartz/quartzCocoa.m
@@ -42,63 +42,12 @@
 
 #include <Cocoa/Cocoa.h>
 
-#ifndef INXQUARTZ
-#import "Preferences.h"
-#endif
 #include "pseudoramiX.h"
 
 extern void FatalError(const char *, ...);
 extern char *display;
 extern int noPanoramiXExtension;
 
-#ifndef INXQUARTZ
-/*
- * QuartzReadPreferences
- *  Read the user preferences from the Cocoa front end.
- */
-void QuartzReadPreferences(void)
-{
-    char *fileString;
-
-    darwinFakeButtons = [Preferences fakeButtons];
-    darwinFakeMouse2Mask = [Preferences button2Mask];
-    darwinFakeMouse3Mask = [Preferences button3Mask];
-    //    darwinMouseAccelChange = [Preferences mouseAccelChange];
-    quartzUseSysBeep = [Preferences systemBeep];
-    quartzEnableKeyEquivalents = [Preferences enableKeyEquivalents];
-
-    // quartzRootless has already been set
-    if (quartzRootless) {
-        // Use PseudoramiX instead of Xinerama
-        noPanoramiXExtension = TRUE;
-        noPseudoramiXExtension = ![Preferences xinerama];
-
-        quartzUseAGL = [Preferences useAGL];
-    } else {
-        noPanoramiXExtension = ![Preferences xinerama];
-        noPseudoramiXExtension = TRUE;
-
-        // Full screen can't use AGL for GLX
-        quartzUseAGL = FALSE;
-    }
-
-    if ([Preferences useKeymapFile]) {
-        fileString = (char *) [[Preferences keymapFile] lossyCString];
-        darwinKeymapFile = (char *) malloc(strlen(fileString)+1);
-        if (! darwinKeymapFile)
-            FatalError("malloc failed in QuartzReadPreferences()!\n");
-        strcpy(darwinKeymapFile, fileString);
-    }
-
-    display = (char *) malloc(8);
-    if (! display)
-        FatalError("malloc failed in QuartzReadPreferences()!\n");
-    snprintf(display, 8, "%i", [Preferences display]);
-
-    darwinDesiredDepth = [Preferences depth] - 1;
-}
-#endif
-
 /*
  * QuartzWriteCocoaPasteboard
  *  Write text to the Mac OS X pasteboard.
@@ -162,19 +111,6 @@ char *QuartzReadCocoaPasteboard(void)
 int QuartzFSUseQDCursor(
     int depth)  // screen depth
 {
-#ifndef INXQUARTZ
-    switch ([Preferences useQDCursor]) {
-        case qdCursor_Always:
-            return TRUE;
-        case qdCursor_Never:
-            return FALSE;
-        case qdCursor_Not8Bit:
-            if (depth > 8)
-                return TRUE;
-            else
-                return FALSE;
-    }
-#endif
     return TRUE;
 }
 
@@ -184,9 +120,9 @@ int QuartzFSUseQDCursor(
  *  Clean out any autoreleased objects.
  */
 void QuartzBlockHandler(
-    void *blockData,
-    void *pTimeout,
-    void *pReadmask)
+    pointer blockData,
+    OSTimePtr pTimeout,
+    pointer pReadmask)
 {
     static NSAutoreleasePool *aPool = nil;
 
@@ -199,9 +135,9 @@ void QuartzBlockHandler(
  * QuartzWakeupHandler
  */
 void QuartzWakeupHandler(
-    void *blockData,
+    pointer blockData,
     int result,
-    void *pReadmask)
+    pointer pReadmask)
 {
     // nothing here
 }
diff --git a/hw/darwin/quartz/quartzCommon.h b/hw/darwin/quartz/quartzCommon.h
index f5dff66..f0d5a7a 100644
--- a/hw/darwin/quartz/quartzCommon.h
+++ b/hw/darwin/quartz/quartzCommon.h
@@ -46,6 +46,7 @@
 #undef Cursor
 #undef WindowPtr
 #undef Picture
+#include <X11/Xdefs.h>
 
 // Quartz specific per screen storage structure
 typedef struct {
@@ -87,8 +88,8 @@ void QuartzSetWindowMenu(int nitems, const char **items,
 void QuartzFSCapture(void);
 void QuartzFSRelease(void);
 int  QuartzFSUseQDCursor(int depth);
-void QuartzBlockHandler(void *blockData, void *pTimeout, void *pReadmask);
-void QuartzWakeupHandler(void *blockData, int result, void *pReadmask);
+void QuartzBlockHandler(pointer blockData, OSTimePtr pTimeout, pointer pReadmask);
+void QuartzWakeupHandler(pointer blockData, int result, pointer pReadmask);
 
 // Messages that can be sent to the main thread.
 enum {
diff --git a/hw/darwin/quartz/quartzStartup.c b/hw/darwin/quartz/quartzStartup.c
index 76392e4..0381a9f 100644
--- a/hw/darwin/quartz/quartzStartup.c
+++ b/hw/darwin/quartz/quartzStartup.c
@@ -42,32 +42,13 @@
 char **envpGlobal;      // argcGlobal and argvGlobal
                         // are from dix/globals.c
 
-#ifdef INXQUARTZ
+
 void X11ControllerMain(int argc, char *argv[], void (*server_thread) (void *), void *server_arg);
-# ifdef GLXEXT
-void GlxExtensionInit(void);
-void GlxWrapInitVisuals(miInitVisualsProcPtr *);
-# endif
 
 static void server_thread (void *arg) {
-  extern int main (int argc, char **argv, char **envp);
+  extern int main(int argc, char **argv, char **envp);
   exit (main (argcGlobal, argvGlobal, envpGlobal));
 }
-#else
-int NSApplicationMain(int argc, char *argv[]);
-typedef Bool (*QuartzModeBundleInitPtr)(void);
-
-# ifdef GLXEXT
-// GLX bundle function pointers
-typedef void (*GlxExtensionInitPtr)(void); 
-static GlxExtensionInitPtr GlxExtensionInit = NULL;
-typedef void (*GlxWrapInitVisualsPtr)(miInitVisualsProcPtr *);
-static GlxWrapInitVisualsPtr GlxWrapInitVisuals = NULL;
-void * __DarwinglXMesaProvider = NULL;
-typedef void (*GlxPushProviderPtr)(void *);
-GlxPushProviderPtr GlxPushProvider = NULL;
-# endif
-#endif
 
 /*
  * DarwinHandleGUI
@@ -83,13 +64,10 @@ void DarwinHandleGUI(
     char        *envp[] )
 {
     static Bool been_here = FALSE;
-    int         main_exit, i;
+    int         i;
     int         fd[2];
 
     if (been_here) {
-#ifdef INXDARWINAPP
-        QuartzReadPreferences();
-#endif
         return;
     }
     been_here = TRUE;
@@ -124,7 +102,7 @@ void DarwinHandleGUI(
         }
     }
 
-#ifdef INXQUARTZ
+
     /* Initially I ran the X server on the main thread, and received
        events on the second thread. But now we may be using Carbon,
        that needs to run on the main thread. (Otherwise, when it's
@@ -133,221 +111,10 @@ void DarwinHandleGUI(
        grr.. but doing that means that if the X thread gets scheduled
        before the main thread when we're _not_ prebound, things fail,
        so initialize by hand. */
+
     extern void _InitHLTB(void);
     
-    _InitHLTB();
-    
+    _InitHLTB();    
     X11ControllerMain(argc, argv, server_thread, NULL);
-#else
-    main_exit = NSApplicationMain(argc, argv);
-#endif
-    exit(main_exit);
-}
-
-#ifndef INXQUARTZ
-/*
- * QuartzLoadDisplayBundle
- *  Try to load the appropriate bundle containing the back end display code.
- */
-Bool QuartzLoadDisplayBundle(
-    const char *dpyBundleName)
-{
-    CFBundleRef mainBundle;
-    CFStringRef bundleName;
-    CFURLRef    bundleURL;
-    CFBundleRef dpyBundle;
-    QuartzModeBundleInitPtr bundleInit;
-
-    // Get the main bundle for the application
-    mainBundle = CFBundleGetMainBundle();
-
-    // Make CFString from bundle name
-    bundleName = CFStringCreateWithCStringNoCopy(kCFAllocatorDefault,
-                                                 dpyBundleName,
-                                                 kCFStringEncodingASCII,
-                                                 kCFAllocatorNull);
-
-    // Look for the appropriate bundle in the main bundle
-    bundleURL = CFBundleCopyResourceURL(mainBundle, bundleName,
-                                        NULL, NULL);
-    if (!bundleURL) {
-        ErrorF("Could not find display mode bundle %s.\n", dpyBundleName);
-        return FALSE;
-    }
-
-    // Make a bundle instance using the URLRef
-    dpyBundle = CFBundleCreate(kCFAllocatorDefault, bundleURL);
-
-    if (!CFBundleLoadExecutable(dpyBundle)) {
-        ErrorF("Could not load display mode bundle %s.\n", dpyBundleName);
-        return FALSE;
-    }
-
-    // Lookup the bundle initialization function
-    bundleInit = (void *)
-            CFBundleGetFunctionPointerForName(dpyBundle,
-                                              CFSTR("QuartzModeBundleInit"));
-    if (!bundleInit) {
-        ErrorF("Could not initialize display mode bundle %s.\n",
-               dpyBundleName);
-        return FALSE;
-    }
-    if (!bundleInit())
-        return FALSE;
-
-    // Release the CF objects
-    CFRelease(bundleName);
-    CFRelease(bundleURL);
-
-    return TRUE;
-}
-
-#ifdef GLXEXT
-/*
- * LoadGlxBundle
- *  The Quartz mode X server needs to dynamically load the appropriate
- *  bundle before initializing GLX.
- */
-static void LoadGlxBundle(void)
-{
-    CFBundleRef mainBundle;
-    CFStringRef bundleName;
-    CFURLRef    bundleURL;
-    CFBundleRef glxBundle;
-
-    // Get the main bundle for the application
-    mainBundle = CFBundleGetMainBundle();
-
-    // Choose the bundle to load
-    ErrorF("Loading GLX bundle ");
-    if (/*quartzUseAGL*/0) {
-        bundleName = CFStringCreateWithCStringNoCopy(kCFAllocatorDefault,
-                                                     quartzOpenGLBundle,
-                                                     kCFStringEncodingASCII,
-                                                     kCFAllocatorNull);
-        ErrorF("%s (using Apple's OpenGL)\n", quartzOpenGLBundle);
-    } else {
-        bundleName = CFSTR("glxMesa.bundle");
-        CFRetain(bundleName);			// so we can release later
-        ErrorF("glxMesa.bundle (using Mesa)\n");
-    }
-
-    // Look for the appropriate GLX bundle in the main bundle by name
-    bundleURL = CFBundleCopyResourceURL(mainBundle, bundleName,
-                                        NULL, NULL);
-    if (!bundleURL) {
-        FatalError("Could not find GLX bundle.");
-    }
-
-    // Make a bundle instance using the URLRef
-    glxBundle = CFBundleCreate(kCFAllocatorDefault, bundleURL);
-
-    if (!CFBundleLoadExecutable(glxBundle)) {
-        FatalError("Could not load GLX bundle.");
-    }
-
-    // Find the GLX init functions
-
-
-    __DarwinglXMesaProvider = (void *) CFBundleGetDataPointerForName(
-			       glxBundle, CFSTR("__glXMesaProvider"));
-
-    GlxPushProvider = (void *) CFBundleGetFunctionPointerForName(
-                                glxBundle, CFSTR("GlxPushProvider"));
-
-    GlxExtensionInit = (void *) CFBundleGetFunctionPointerForName(
-                                glxBundle, CFSTR("GlxExtensionInit"));
-
-    GlxWrapInitVisuals = (void *) CFBundleGetFunctionPointerForName(
-                                glxBundle, CFSTR("GlxWrapInitVisuals"));
-
-    if (!GlxExtensionInit || !GlxWrapInitVisuals) {
-        FatalError("Could not initialize GLX bundle.");
-    }
-
-    // Release the CF objects
-    CFRelease(bundleName);
-    CFRelease(bundleURL);
-}
-# endif
-#else
-
-Bool QuartzLoadDisplayBundle(const char *dpyBundleName)
-{
-      return TRUE;
-  }
-
-#endif
-
-#ifdef GLXEXT
-void DarwinGlxPushProvider(void *impl)
-{
-#ifndef INXQUARTZ
-    if (!GlxExtensionInit)
-        LoadGlxBundle();
-#endif
-	
-    GlxPushProvider(impl);
-}
-
-/*
- * DarwinGlxExtensionInit
- *  Initialize the GLX extension.
- */
-void DarwinGlxExtensionInit(void)
-{
-#ifndef INXQUARTZ
-    if (!GlxExtensionInit)
-        LoadGlxBundle();
-#endif
-    GlxExtensionInit();
-}
-
-
-/*
- * DarwinGlxWrapInitVisuals
- */
-void DarwinGlxWrapInitVisuals(
-    miInitVisualsProcPtr *procPtr)
-{
-#ifndef INXQUARTZ
-    if (!GlxWrapInitVisuals)
-        LoadGlxBundle();
-#endif
-    GlxWrapInitVisuals(procPtr);
-}
-#endif
-
-int DarwinModeProcessArgument( int argc, char *argv[], int i )
-{
-    // fullscreen: CoreGraphics full-screen mode
-    // rootless: Cocoa rootless mode
-    // quartz: Default, either fullscreen or rootless
-
-    if ( !strcmp( argv[i], "-fullscreen" ) ) {
-        ErrorF( "Running full screen in parallel with Mac OS X Quartz window server.\n" );
-        return 1;
-    }
-
-    if ( !strcmp( argv[i], "-rootless" ) ) {
-        ErrorF( "Running rootless inside Mac OS X window server.\n" );
-        return 1;
-    }
-
-    if ( !strcmp( argv[i], "-quartz" ) ) {
-        ErrorF( "Running in parallel with Mac OS X Quartz window server.\n" );
-        return 1;
-    }
-
-    // The Mac OS X front end uses this argument, which we just ignore here.
-    if ( !strcmp( argv[i], "-nostartx" ) ) {
-        return 1;
-    }
-
-    // This command line arg is passed when launched from the Aqua GUI.
-    if ( !strncmp( argv[i], "-psn_", 5 ) ) {
-        return 1;
-    }
-
-    return 0;
+    exit(0);
 }
diff --git a/hw/darwin/quartz/xpr/appledri.c b/hw/darwin/quartz/xpr/appledri.c
index 70b7400..45d1a7e 100644
--- a/hw/darwin/quartz/xpr/appledri.c
+++ b/hw/darwin/quartz/xpr/appledri.c
@@ -174,7 +174,7 @@ ProcAppleDRIAuthConnection(
     rep.authenticated = 1;
 
     if (!DRIAuthConnection( screenInfo.screens[stuff->screen], stuff->magic)) {
-        ErrorF("Failed to authenticate %u\n", stuff->magic);
+        ErrorF("Failed to authenticate %u\n", (unsigned int)stuff->magic);
         rep.authenticated = 0;
     }
     WriteToClient(client, sizeof(xAppleDRIAuthConnectionReply), (char *)&rep);
diff --git a/hw/darwin/quartz/xpr/x-hook.c b/hw/darwin/quartz/xpr/x-hook.c
index 92c174e..e38d0ed 100644
--- a/hw/darwin/quartz/xpr/x-hook.c
+++ b/hw/darwin/quartz/xpr/x-hook.c
@@ -65,6 +65,7 @@ X_PFX (hook_remove) (x_list *lst, x_hook_function *fun, void *data)
     }
 
     X_PFX (list_free) (to_delete);
+    return lst;
 }
 
 X_EXTERN void
diff --git a/hw/darwin/quartz/xpr/xprCursor.c b/hw/darwin/quartz/xpr/xprCursor.c
index 10d3264..9892bcd 100644
--- a/hw/darwin/quartz/xpr/xprCursor.c
+++ b/hw/darwin/quartz/xpr/xprCursor.c
@@ -380,7 +380,8 @@ QuartzInitCursor(ScreenPtr pScreen)
     if (ScreenPriv == NULL)
         return FALSE;
 
-    CURSOR_PRIV(pScreen) = ScreenPriv;
+    /* CURSOR_PRIV(pScreen) = ScreenPriv; */
+    pScreen->devPrivates[darwinCursorScreenIndex].ptr = ScreenPriv;
 
     /* override some screen procedures */
     ScreenPriv->QueryBestSize = pScreen->QueryBestSize;
diff --git a/hw/darwin/quartz/xpr/xprScreen.c b/hw/darwin/quartz/xpr/xprScreen.c
index 886ef34..a625e62 100644
--- a/hw/darwin/quartz/xpr/xprScreen.c
+++ b/hw/darwin/quartz/xpr/xprScreen.c
@@ -41,6 +41,9 @@
 #include "Xplugin.h"
 #include "quartz/applewmExt.h"
 
+// From xprFrame.c
+WindowPtr xprGetXWindow(xp_window_id wid);
+
 #ifdef DAMAGE
 # include "damage.h"
 #endif
@@ -84,13 +87,7 @@ eventHandler(unsigned int type, const void *arg,
         {
             xp_window_id id = * (xp_window_id *) arg;
 	    WindowPtr pWin = xprGetXWindow(id);
-	    BoxRec box;
-	    xp_error retval  = xp_get_window_bounds(id, &box);
-	    if (retval != Success) {
-	      ErrorF("Unable to find new bounds for window\n");
-	      break;
-	    }
-            QuartzMessageServerThread(kXDarwinWindowMoved, 3, pWin, box.x1, box.y1);
+            QuartzMessageServerThread(kXDarwinWindowMoved, 1, pWin);
         }
         break;
 
diff --git a/hw/darwin/utils/Makefile.am b/hw/darwin/utils/Makefile.am
index 11a2611..911e14d 100644
--- a/hw/darwin/utils/Makefile.am
+++ b/hw/darwin/utils/Makefile.am
@@ -7,5 +7,5 @@ dumpkeymap_LDFLAGS = -Wl,-framework,IOKit
 man1_MANS = dumpkeymap.man
 
 EXTRA_DIST = \
-            README.txt \
-            dumpkeymap.man
+	     README.txt \
+	     dumpkeymap.man
diff --git a/include/dix-config.h.in b/include/dix-config.h.in
index d033387..6a3af44 100644
--- a/include/dix-config.h.in
+++ b/include/dix-config.h.in
@@ -145,6 +145,9 @@
 /* Define to 1 if you have version 2.2 (or newer) of the drm library */
 #undef HAVE_LIBDRM_2_2
 
+/* Have Quartz */
+#undef XQUARTZ
+
 /* Define to 1 if you have the `m' library (-lm). */
 #undef HAVE_LIBM
 
diff --git a/mi/miinitext.c b/mi/miinitext.c
index 6fa180b..11e5bae 100644
--- a/mi/miinitext.c
+++ b/mi/miinitext.c
@@ -338,17 +338,10 @@ extern void XFree86DGAExtensionInit(INITARGS);
 #endif
 #ifdef GLXEXT
 typedef struct __GLXprovider __GLXprovider;
-#ifdef INXDARWINAPP
-extern __GLXprovider* __DarwinglXMesaProvider;
-extern void DarwinGlxPushProvider(__GLXprovider *impl);
-extern void DarwinGlxExtensionInit(INITARGS);
-extern void DarwinGlxWrapInitVisuals(miInitVisualsProcPtr *);
-#else
 extern __GLXprovider __glXMesaProvider;
 extern void GlxPushProvider(__GLXprovider *impl);
 extern void GlxExtensionInit(INITARGS);
-#endif // INXDARWINAPP
-#endif // GLXEXT
+#endif
 #ifdef XF86DRI
 extern void XFree86DRIExtensionInit(INITARGS);
 #endif
@@ -631,10 +624,6 @@ InitExtensions(argc, argv)
 #endif
 #endif
 #ifdef XFIXES
-    /* must be before Render to layer DisplayCursor correctly */
-    if (!noXFixesExtension) XFixesExtensionInit();
-#endif
-#ifdef RENDER
     if (!noRenderExtension) RenderExtensionInit();
 #endif
 #ifdef RANDR
@@ -657,25 +646,15 @@ InitExtensions(argc, argv)
 #endif
 
 #ifdef GLXEXT
-#ifdef INXDARWINAPP
-    DarwinGlxPushProvider(__DarwinglXMesaProvider);
-    if (!noGlxExtension) DarwinGlxExtensionInit();
-#else
     GlxPushProvider(&__glXMesaProvider);
     if (!noGlxExtension) GlxExtensionInit();
 #endif
-#endif
 }
 
 void
 InitVisualWrap()
 {
     miResetInitVisuals();
-#ifdef GLXEXT
-#ifdef INXDARWINAPP
-    DarwinGlxWrapInitVisuals(&miInitVisualsProc);
-#endif
-#endif
 }
 
 #else /* XFree86LOADER */
diff --git a/miext/rootless/rootlessCommon.h b/miext/rootless/rootlessCommon.h
index 66b930d..b7f11bd 100644
--- a/miext/rootless/rootlessCommon.h
+++ b/miext/rootless/rootlessCommon.h
@@ -38,6 +38,10 @@
 #include "rootless.h"
 #include "fb.h"
 
+#ifdef SHAPE
+#include "scrnintstr.h"
+#endif /* SHAPE */
+
 #ifdef RENDER
 #include "picturestr.h"
 #endif
diff --git a/miext/rootless/rootlessWindow.h b/miext/rootless/rootlessWindow.h
index 9573068..055589e 100644
--- a/miext/rootless/rootlessWindow.h
+++ b/miext/rootless/rootlessWindow.h
@@ -36,6 +36,7 @@
 
 #include "rootlessCommon.h"
 
+#include <Xplugin.h>
 
 Bool RootlessCreateWindow(WindowPtr pWin);
 Bool RootlessDestroyWindow(WindowPtr pWin);
@@ -55,5 +56,7 @@ void RootlessResizeWindow(WindowPtr pWin, int x, int y,
 			  unsigned int w, unsigned int h, WindowPtr pSib);
 void RootlessReparentWindow(WindowPtr pWin, WindowPtr pPriorParent);
 void RootlessChangeBorderWidth(WindowPtr pWin, unsigned int width);
+void RootlessNativeWindowMoved (WindowPtr pWin);
+void RootlessNativeWindowStateChanged (xp_window_id id, unsigned int state); 
 
 #endif
commit a55ec1a9f4b62139dc5e5462d79d47b330c27c79
Author: Alan Coopersmith <alan.coopersmith at sun.com>
Date:   Tue Nov 20 18:31:03 2007 -0800

    Restore checks for __i386 where needed for Sun compilers on Solaris

diff --git a/hw/xfree86/os-support/bus/Pci.h b/hw/xfree86/os-support/bus/Pci.h
index 6bd0eb7..0abb34f 100644
--- a/hw/xfree86/os-support/bus/Pci.h
+++ b/hw/xfree86/os-support/bus/Pci.h
@@ -210,7 +210,7 @@
 #  define ARCH_PCI_INIT ia64linuxPciInit
 # endif
 # define XF86SCANPCI_WRAPPER ia64ScanPCIWrapper
-#elif defined(__i386__)
+#elif defined(__i386__) || defined(__i386)
 # if defined(linux)
 #  define ARCH_PCI_INIT linuxPciInit
 # else
diff --git a/hw/xfree86/os-support/solaris/sun_bios.c b/hw/xfree86/os-support/solaris/sun_bios.c
index 1223dcd..1fae975 100644
--- a/hw/xfree86/os-support/solaris/sun_bios.c
+++ b/hw/xfree86/os-support/solaris/sun_bios.c
@@ -26,7 +26,7 @@
 #include <xorg-config.h>
 #endif
 
-#ifdef __i386__
+#if defined(__i386__) || defined(__i386)
 #define _NEED_SYSI86
 #endif
 #include "xf86.h"
@@ -66,7 +66,7 @@ xf86ReadBIOS(unsigned long Base, unsigned long Offset, unsigned char *Buf,
 	Offset += Base & (psize - 1);
 	Base &= ~(psize - 1);
 	mlen = (Offset + Len + psize - 1) & ~(psize - 1);
-#if defined(__i386__) && !defined(__SOL8__)
+#if (defined(__i386__) || defined(__i386)) && !defined(__SOL8__)
 	if (Base >= 0xA0000 && Base + mlen < 0xFFFFF && xf86Info.vtno >= 0)
 		sprintf(solx86_vtname, "/dev/vt%02d", xf86Info.vtno);
 	else
diff --git a/hw/xfree86/os-support/solaris/sun_init.c b/hw/xfree86/os-support/solaris/sun_init.c
index c7fac52..1f389cb 100644
--- a/hw/xfree86/os-support/solaris/sun_init.c
+++ b/hw/xfree86/os-support/solaris/sun_init.c
@@ -29,7 +29,7 @@
 #include "xf86.h"
 #include "xf86Priv.h"
 #include "xf86_OSlib.h"
-#if defined(__i386__) || defined(__x86)
+#if defined(__i386__) || defined(__i386) || defined(__x86)
 # include <sys/kd.h>
 #endif
 
@@ -40,7 +40,7 @@ static int VTnum = -1;
 static int xf86StartVT = -1;
 #endif
 
-#if defined(__SOL8__) || !defined(__i386__)
+#if defined(__SOL8__) || (!defined(__i386__) && !defined(__i386))
 static char fb_dev[PATH_MAX] = "/dev/fb";
 #else
 static char fb_dev[PATH_MAX] = "/dev/console";
@@ -209,11 +209,8 @@ xf86CloseConsole(void)
 #ifdef HAS_USL_VTS
     struct vt_mode VT;
 #endif
-#if defined(__SOL8__) || !defined(__i386__)
-    int tmp;
-#endif
 
-#if !defined(__i386__) && !defined(__x86)
+#if !defined(__i386__) && !defined(__i386) && !defined(__x86)
 
     if (!xf86DoProbe && !xf86DoConfigure) {
 	int fd;
@@ -332,7 +329,7 @@ xf86ProcessArgument(int argc, char **argv, int i)
 
 #endif /* HAS_USL_VTS */
 
-#if defined(__SOL8__) || !defined(__i386__)
+#if defined(__SOL8__) || (!defined(__i386__) && !defined(__i386))
 
     if ((i + 1) < argc) {
 	if (!strcmp(argv[i], "-dev")) {
diff --git a/hw/xfree86/os-support/solaris/sun_vid.c b/hw/xfree86/os-support/solaris/sun_vid.c
index 494b2cf..e7b529c 100644
--- a/hw/xfree86/os-support/solaris/sun_vid.c
+++ b/hw/xfree86/os-support/solaris/sun_vid.c
@@ -28,7 +28,7 @@
 
 #include <sys/types.h> /* get __x86 definition if not set by compiler */
 
-#if defined(__i386__) || defined(__x86)
+#if defined(__i386__) || defined(__i386) || defined(__x86)
 #define _NEED_SYSI86
 #endif
 #include "xf86.h"
@@ -148,14 +148,14 @@ xf86UnMapVidMem(int ScreenNum, pointer Base, unsigned long Size)
 /* I/O Permissions section						   */
 /***************************************************************************/
 
-#if defined(__i386__) || defined(__x86)
+#if defined(__i386__) || defined(__i386) || defined(__x86)
 static Bool ExtendedEnabled = FALSE;
 #endif
 
 _X_EXPORT Bool
 xf86EnableIO(void)
 {
-#if defined(__i386__) || defined(__x86)
+#if defined(__i386__) || defined(__i386) || defined(__x86)
 	if (ExtendedEnabled)
 		return TRUE;
 
@@ -171,7 +171,7 @@ xf86EnableIO(void)
 _X_EXPORT void
 xf86DisableIO(void)
 {
-#if defined(__i386__) || defined(__x86)
+#if defined(__i386__) || defined(__i386) || defined(__x86)
 	if(!ExtendedEnabled)
 		return;
 
@@ -188,7 +188,7 @@ xf86DisableIO(void)
 
 _X_EXPORT Bool xf86DisableInterrupts(void)
 {
-#if defined(__i386__) || defined(__x86)
+#if defined(__i386__) || defined(__i386) || defined(__x86)
 	if (!ExtendedEnabled && (sysi86(SI86V86, V86SC_IOPL, PS_IOPL) < 0))
 		return FALSE;
 
@@ -207,7 +207,7 @@ _X_EXPORT Bool xf86DisableInterrupts(void)
 
 _X_EXPORT void xf86EnableInterrupts(void)
 {
-#if defined(__i386__) || defined(__x86)
+#if defined(__i386__) || defined(__i386) || defined(__x86)
 	if (!ExtendedEnabled && (sysi86(SI86V86, V86SC_IOPL, PS_IOPL) < 0))
 		return;
 
diff --git a/hw/xfree86/os-support/xf86_OSlib.h b/hw/xfree86/os-support/xf86_OSlib.h
index 662dbaa..77f2253 100644
--- a/hw/xfree86/os-support/xf86_OSlib.h
+++ b/hw/xfree86/os-support/xf86_OSlib.h
@@ -140,7 +140,7 @@ typedef signed long xf86ssize_t;
 #  endif /* SVR4 && !sun */
 /* V86SC_IOPL was moved to <sys/sysi86.h> on Solaris 7 and later */
 #  if defined(sun) && defined (SVR4)		/* Solaris? */
-#   if defined(__i386__) || defined(__x86)		/* on x86 or x64? */
+#   if defined(__i386__) || defined(__i386) || defined(__x86) /* on x86 or x64? */
 #    if !defined(V86SC_IOPL)			/* Solaris 7 or later? */
 #     include <sys/v86.h>			/* Nope */
 #    endif
@@ -148,7 +148,7 @@ typedef signed long xf86ssize_t;
 #  else 
 #   include <sys/v86.h>					/* Not solaris */
 #  endif /* sun && i386 && SVR4 */
-#  if defined(sun) && (defined (__i386__) || defined(__x86))  && defined (SVR4)
+#  if defined(sun) && (defined (__i386__) || defined(__i386) || defined(__x86))  && defined (SVR4)
 #    include <sys/psw.h>
 #  endif
 # endif /* _NEED_SYSI86 */
@@ -224,7 +224,7 @@ typedef signed long xf86ssize_t;
 #  define POSIX_TTY
 # endif
 
-# if defined(sun) && defined (__i386__) && defined (SVR4) && !defined(__SOL8__)
+# if defined(sun) && (defined (__i386__) || defined(__i386)) && defined (SVR4) && !defined(__SOL8__)
 #  define USE_VT_SYSREQ
 #  define VT_SYSREQ_DEFAULT TRUE
 # endif
diff --git a/hw/xfree86/utils/xorgconfig/xorgconfig.c b/hw/xfree86/utils/xorgconfig/xorgconfig.c
index efabc9d..30eb831 100644
--- a/hw/xfree86/utils/xorgconfig/xorgconfig.c
+++ b/hw/xfree86/utils/xorgconfig/xorgconfig.c
@@ -631,7 +631,7 @@ mouse_configuration(void) {
 		config_emulate3buttons = 0;
 	printf("\n");
 
-#if (defined(sun) && (defined(__i386__) || defined(__x86)))
+#if (defined(sun) && (defined(__i386) || defined(__x86)))
 	/* SPARC & USB mice (VUID or AUTO protocols) default to /dev/mouse, 
 	   but PS/2 mice default to /dev/kdmouse */
 	if ((config_mousetype != M_AUTO) && (config_mousetype != M_VUID)) {
diff --git a/include/servermd.h b/include/servermd.h
index 2616bfe..2f511da 100644
--- a/include/servermd.h
+++ b/include/servermd.h
@@ -444,7 +444,7 @@ SOFTWARE.
 
 #endif /* luna */
 
-#if	(defined(SVR4) && defined(__i386__)) || \
+#if	(defined(SVR4) && (defined(__i386__) || (defined(__i386)))) ||	\
 	defined(__alpha__) || defined(__alpha) || \
 	defined(__i386__) || defined(__QNX__) || \
 	defined(__s390x__) || defined(__s390__)
diff --git a/mi/micoord.h b/mi/micoord.h
index 16a244b..16d0861 100644
--- a/mi/micoord.h
+++ b/mi/micoord.h
@@ -46,7 +46,7 @@
 #if defined(mips) || defined(sgi) || \
     defined(sparc) || defined(__sparc64__) || \
     defined(__alpha) || defined(__alpha__) || \
-    defined(__i386__) || defined(__ia64__) || \
+    defined(__i386__) || defined(__i386) || defined(__ia64__) || \
     defined(__s390x__) || defined(__s390__) || \
     defined(__amd64__) || defined(amd64) || defined(__amd64)
 #define GetHighWord(x) (((int) (x)) >> 16)
commit 2f387d913aa76f1b6d21d8e2698be165301c6bc1
Author: Alan Coopersmith <alan.coopersmith at sun.com>
Date:   Tue Nov 20 18:27:12 2007 -0800

    Enable use of /dev/urandom on Solaris as well

diff --git a/configure.ac b/configure.ac
index 7d43216..f8c8fe4 100644
--- a/configure.ac
+++ b/configure.ac
@@ -172,12 +172,19 @@ b = bswap16(a);
 	fi
 fi
 
+dnl Check to see if dlopen is in default libraries (like Solaris, which
+dnl has it in libc), or if libdl is needed to get it.
 AC_CHECK_FUNC([dlopen], [],
 	AC_CHECK_LIB([dl], [dlopen], DLOPEN_LIBS="-ldl"))
 
 case $host_os in
     linux*)
 	AC_DEFINE(HAVE_URANDOM, 1, [Has /dev/urandom]) ;;
+    solaris*)
+	# Solaris 8 with patches, or Solaris 9 or later have /dev/urandom
+	if test -r /dev/urandom ; then
+	   AC_DEFINE(HAVE_URANDOM, 1, [Has /dev/urandom])
+	fi ;;
     *) ;;
 esac
 
@@ -1314,9 +1321,6 @@ if test "x$XORG" = xyes -o "x$XGL" = xyes; then
 	XORG_CFLAGS="$XORGSERVER_CFLAGS -DHAVE_XORG_CONFIG_H"
 	XORG_LIBS="$COMPOSITE_LIB $FIXES_LIB $XEXTXORG_LIB $GLX_LIBS $RENDER_LIB $RANDR_LIB $DAMAGE_LIB $MIEXT_DAMAGE_LIB $MIEXT_SHADOW_LIB $XI_LIB $XKB_LIB $XPSTUBS_LIB"
 
-dnl Check to see if dlopen is in default libraries (like Solaris, which
-dnl has it in libc), or if libdl is needed to get it.
-
 	PKG_CHECK_MODULES([PCIACCESS], [pciaccess >= 0.8.0])
 	XORG_SYS_LIBS="$XORG_SYS_LIBS $PCIACCESS_LIBS $DLOPEN_LIBS $GLX_SYS_LIBS"
 	XORG_CFLAGS="$XORG_CFLAGS $PCIACCESS_CFLAGS"
commit be0cbe5a330f62cef47fffbc49e83b5e1637b7d0
Author: Dodji Seketeli <dodji at openedhand.com>
Date:   Tue Nov 20 15:39:49 2007 +0100

    kaa: update kaaCreatePixmap to support the new usage_int

diff --git a/hw/kdrive/src/kaa.c b/hw/kdrive/src/kaa.c
index 9cf9bf2..0271630 100644
--- a/hw/kdrive/src/kaa.c
+++ b/hw/kdrive/src/kaa.c
@@ -314,7 +314,7 @@ kaaCreatePixmap(ScreenPtr pScreen, int w, int h, int depth, unsigned usage_hint)
 	    }
     }
 
-    pPixmap = fbCreatePixmapBpp (pScreen, w, h, depth, bpp);
+    pPixmap = fbCreatePixmapBpp (pScreen, w, h, depth, bpp, usage_hint);
     if (!pPixmap)
 	return NULL;
     pKaaPixmap = KaaGetPixmapPriv(pPixmap);


More information about the xorg-commit mailing list